Web сокеты | Компьютерные сети. Продвинутые темы
ฝัง
- เผยแพร่เมื่อ 28 ก.ย. 2024
- Курс "Компьютерные сети" , лекция по Web сокетам.
Презентация видеолекции - www.asozykin.r...
Web сокеты - это протокол прикладного уровня стека TCP/IP, предназначенный для создания Web приложений реального времени.
Основное отличие Web сокетов от HTTP заключается в том, что в Web сокетах создается двунаправленное соединение между клиентом и сервером. По этому соединению клиент и сервер могут отправлять данные друг другу в любое время.
Web сокеты определены в стандарте RFC 6455 "The WebSocket Protocol" - tools.ietf.org...
Работа Web сокетов состоит из двух этапов:
- Установка соединения. В целях поддержки существующей инфраструктуры Web используется подход HTTP со сменой (urgrade) протокола на Web сокеты.
- Передача данных. Для передачи данных используется постоянное TCP соединение между клиентом и сервером. Данные передаеются в виде кадров (frames), имеющих бинарные заголовки.
В лекции рассматривается процесс установки соединения Web сокетов, формат кадра Web сокетов и другие темы, относящиеся к работе Web сокетов.
Видеолекция по протоколу HTTP - • Протокол HTTP | Курс "...
Видеолекция по протоколу TCP - • Протокол TCP | Курс "К...
Как можно поддержать курс:
1. Яндекс Кошелек - money.yandex.r...
2. PayPal - www.paypal.me/...
Заранее спасибо за помощь!
Добавляйтесь в друзья в социальных сетях:
вКонтакте - avsozykin
Facebook - / asozykin
Twitter - / andreysozykin
Мой сайт - www.asozykin.ru
Мой канал с краткими и понятными объяснениями сложных тем в ИТ и компьютерных науках -
goo.gl/kW93MA
Мне бы таких учителей в школе
В школе такое рано проходить, это университет, первый или даже второй курс.
@@AndreySozykin я не про материал, а подачу
@@AndreySozykin у нас даже в универе этого не рассказывали
Спасибо за информацию. Очень подробно всё рассказано. Держи лайк.
Не освящены только 2 вопроса:
1 - сколько веб сокетов может быть открыто на одном соединении
2 - что произойдёт, когда количество открытых сокетов будет переполнено.
1 соединение это и есть 1 сокет. если занять все, то попытка открыть еще один закончится ошибкой
А как вопросы правильно освящать? Святой водой можно?
Круто! Спасибо. 12 минут чётко и по сути! Теперь могу поддержать разговор на эту тему
Отлично, успехов!
Спасибо. Как всегда локанично, без воды.
Пожалуйста!
@@AndreySozykin Даже спустя 2 года очень полезно =)
лАкОнично, грамотей!
@@БорисАлиханов-у4зе душни чел противно читать. все равно человеку, который написал коммент все равно на тебя
Спасибо! Ждал когда Вы освятите эту тему)
Да, тема востребованная. Но освЯщением я не занимаюсь :-)
@@AndreySozykin Осветите)
Спасибо! Очень просто и понятно изложен материал :)
Пожалуйста!
Спасибо, всё очень лаконично, понятно. На работе нужно было разобраться с Веб Сокетами и теперь хоть понятно)
Рад, что помогло!
Спасибо, очень доступно рассказано.
Смутило что вы про текстовые заголовки 2 раза сказали для http, но это верно только для 1.1 версии
В http 2 же бинарно всё
Да, HTTP имеется в виду первая версия.
Классная подача, все понятно и наглядно
Спасибо!
Спасибо Вам большое за лекции!
Пожалуйста!
Благодарю за ролик!
супер уроки!автор мега мозг!
Спасибо!
Супер подача. Канал в топ
Спасибо!
Спасибо. Что то невероятное !!!
Пожалуйста!
Кратко, чётко и понятно. Да это жестко ))
Спасибо!
Отличная подача материала
Спасибо!
Отлично, не то что частями везде
Огромное спасибо за знания !!!!
Спасибо большое! Материал классный и подан так же!
Очень крутое видео. Спасибо!
Пожалуйста!
спасибо за контент
Грамотно разложено!
*Л. а. й. к. о. с.* за видос.
Спасибо!
Андрей, у вас случайно нет ролика по протоколу ntp)?
Великолепно!
Спасибо!
А можете сделать лекцию про OAST(внеполосное соединение). Искал, но не смог найти информацию
спасибо
Спасибо!
Пожалуйста!
07:45 А если сервер посылает клиенту сообщение close, то клиент тоже должен ответно отправить close?
По-моему сервер закрывает сессию не ожидая каких-то ответных сообщений. Хотя на клиенте нужно вызвать close, чтобы состояние сокета перешло из CloseReceived в Close. Не знаю посылает ли клиент сообщение или просто меняет значение состояния.
Вызовы методов сокета не всегда напрямую связаны с сообщениями. Close нужен для закрытия соединения. В идеальном случае соединение нужно закрывать с двух сторон.
Но TCP позволяет закрыть соединение с одной стороны, а с другой оставить открытым. Поэтому клиент не обязан вызывать close. Но лучше это сделать.
Зачем нужны WebSocet кадры, когда есть TCP фрагменты?
Спасибище!!
А получается если в приложение почему-то не будет реализован(неверно) close..клиент не станет его тоже отправлять? И такое соединение будет держаться вечность?) И/или пока их не откроется столько что сервер ляжет?
Да, если в сервере не реализована закрытие по таймауту то соединение будет крутиться в бесконечном цикле пока сервер не ляжет. Если ляжет клиент то он обязан закрыть соединение это по сути отправка пустого байтовогомассива, в этом случае сервер обязан тоже закрыть сокет на своей стороне и удалить его из памяти.
WebSocket должен хостинг поддерживать или как? я не могу понять
все понял...
Web-сервер должен поддерживать.
Andrey Sozykin и что бы настроить демона нужно на хосте ssh подключение
спасибО! а какие минусы ?
Отлично! Но до 0:47 сек я думал что он вообще не по-русски говорит)))
Тема сисек не раскрыта. Осталось много вопросов, например: Если я хочу организовать сокетное соединение не на собственном сервере, а на арендованном (виртуальном может быть). Как провайдер к этому отнесется? Какие ресурсы у него задействуются? Сколько соединений он сможет одновременно держать (ограниченное количество, очень большое, или бесконечное)? Сколько по времени модет жить соединение, есть ли тайаут, после которого провайдер может принудительно закрыть соединение? Если у клиента пропала всязь, соединение само будет пытаться восстановиться или закроется?
видео отличное, все объяснил очень хорошо, но подстригись нормально плиз, мне приходится твое лицо диспетчером задач закрывать
Прическу регулярно меняю 😉
@@AndreySozykin братик, ты ж айтишник, сходи в номальный барбершоп, денег должно хватить
Мозг
Спасибо!
Спасибо что разжевали
Пожалуйста!
Спасибо. Гораздо легче воспринимать информацию, когда информация доносится размеренно и четко
Спасибо!
Спасибо
Пожалуйста!
Андрей, огромное спасибо за видео! Все встало на свои места!
Пожалуйста!
Просто отличная подача! Спасибо и побольше вам здоровья в это непростое время =)
Спасибо!
Очень понравился структура материала и презентация. Спасибо за труд.
Пожалуйста! Рад, что нравится!
Красавачик, все четко объяснил)👍
Одни из лучших лекций на просторах инета! Спасибо!
Как же интересно и хорошо рассказано! Спасибо) А сокеты мне нравятся)
Пожалуйста!
как раз то видео, когда раз посмотрела и поняла, и запомнила, и не нужно еще искать видео смотреть на эту тему для закрепления. четко понятно становится сразу на примерах
Дякую за корисний контент!!!! :))))))))
А что происходит, когда сервер шлет сообщение, а клиент в это время подключен, но не принимает сообщения?
Сообщение потеряется. Если нужна гарантия доставки, то её нужно реализовывать самостоятельно. Например, клиент должен подтверждать получение сообщений, как в TCP.
@@AndreySozykin забыл дописать, что клиент не принимает лишь в течение нескольких секунд. Допустим обрабатывает старые сообщения или как в моем случае шлет http запросы.
@@AndreySozykin Похоже, что сервер буферизирует сообщения. А когда клиент начинает принимать сообщения, то сервер шлет весь буфер.
Отлично рассказано. Спасибо за видео
Пожалуйста!
спасибо большое! всегда приятно смотреть!
Пожалуйста!
Спасибо большое, крутое обьяснение. Не хватило информации про негативные стороны, какие ограничения есть? Иначе получается надо про http забыть и использовать его только для хендшейка
Все понятно и просто, огромная благодарность
Спасибо за приятный отзыв!
Почему бы заместо WS не использовать возможности "keep alive" в http?
Потому что в HTTP сервер не может отправить ничего клиенту по своей инициативе, а в WS может. Это ключевое отличие.
@@AndreySozykin Я согласен со случаем, когда нету постоянного соединения (i.e. keep-alive).
Но если оно есть, что будет мешать в последующем серверу отправлять сообщения первым?
@@greezlock7291 думаю, что клиент попросту не будет ожидать, что сервер первым напишет сообщение, поэтому и не обработает его.
Web-сокет получается над HTTP, на не на одном уровне
т.е. просто АЯКС переименовали в ВЕБ-сокет
Спасибо
Пожалуйста!
Афигеть как все просто и понятно) спасибо)
Пожалуйста! Рад, что понравилось!
Как всегда все отлично!
Спасибо!
HTTP2 может же отправлять данные по своей воле
Да, в HTTP2 такую возможность добавили.
Спасибо большое! Коротко и ясно :)
Спасибо большое.
Андрей, объясните, пожалуйста, а как это все проходит через NAT? Как маршрутизатор понимает какому клиенту в сети предназначен входящий запрос от сервера? При ответе сервера, понятно, есть запить в таблице NAT, когда клиент запрашивал что-то у сервера, а вот когда клиент ничего не запрашивал, как сервер может передать что-то клиенту и как маршрутизатор поймет какому?
И еще получается, что при использовании WS браузер готов принимать запросы от сервера? А при использовании HTTP браузер готов принимать только ответы сервера на отправленные запросы, так?
В любом случае сначала клиент должен установить соединение. Сервер по своей инициативе первый ничего не отправляет. Когда соединение установлено, то запись о нем живет в таблице NAT некоторое время. Поэтому когда сервер отправляет данные клиенту по своей инициативе после установки соединения, то устройство NAT найдёт соответствующую запись в таблице и поймёт, что делать.
Отличное видео
Привет андрей
Можно ли подделать WS соединение/кадр/сообщение? Нужно ли изобретать симуляцию сессий? Или маскирование надёжно?
Подделать можно. Для защиты лучше использовать готовый протокол WSS (WebSockets over SSL/TLS).
вопрос? TCP cоединение и TCP протокол. в этом случае какая разница? а тип данных TCP разве не дейтаграммы?
TCP - это название протокола. Для передачи данных TCP использует соединение, чтобы обеспечить надежность. Но в TCP есть еще много других элементов, кроме соединения - подтверждения получения данных, скользящее окно и т.п.
Дейтаграммы используются в UDP.
Наконец-то! :)
Да, долго готовился :-)
зачем websocket?
дана мотивация "почему не http", что очень странно, т.к. он тут вообще не при чём.
потом построен TCP-2 поверх TCP ... "чтобы инфраструктура с LB".
что конкретно не так (полный список), если я просто использую TCP (КАК И ПОЛОЖЕНО!). ответа не дано.
т.е. у материала нет фундамента. зачем этот протокол?
подачада нужна от проблемы, постановки задачи. что-то не выходит, как её решить.
учтите что все LB и прочее в облаке строю я под своё приложение
+Plus
Андрей, отличная подборка advanced тем по сетям! Большое спасибо! (=
Пожалуйста!
+
Спасибо за крутые лекции! Скажите, а планируется видео про RSockets?
Пока не планировал. Но стриминговые протоколы интересная тема. Думаю, как к ней подступиться.
Сходу лайк, можно сказать вырос на вашем курсе
Спасибр, успехов!
Хороший видос, с важными деталями. Спасибо за ваш труд. Рекомендую вам на стадии монтажа видео немного ускорять голос, чтобы это не слишком затягивалось.
конечно норм презентация, но можно выравнить заголовок слайда по высоте и выделить его шрифтом больше? Создается диспропорция в дизайне, плюс контент слайда слишком темный, нужно сделать шрифт сероватым
Top! 😎👍
Очень познавательно) Честно говоря вот начиная с формата заголовка Кадра немного запутался ( даже можно сказать не понял) как
А в чем разница с http/1.1, который тоже поддерживает, если я правильно помню, постоянное соединение?
Огромное спасибо за видео! Все встало на свои места!
Пожалуйста!
Спасибо! Сразу всё стало ясно и понятно.
Пожалуйста!
Все четко и по делу
Спасибо!
Спасибо)
Будет ли продолжение курса?
Быстро, просто, доступно, кайфово
very good
Thank you!
Можно где-то скачать презентации к лекциям?
Презентация выкладываю на сайт, но сейчас он в процессе переезда и не успел выложить все презентации. По Web-сокетам презентацию выложил. Ссылка на страницу курса - www.asozykin.ru/courses/networks_online
@@AndreySozykinСпасибо!
топ , спасибо .
Пожалуйста!
Лайк не глядя
Спасибо!
Отлично! Спасибо!
Шикарно! Спасибо!
Благодарю
Спасибо!
прекрасный урок
Спасибо!
Пожалуйста!
Спасибо ❤️
Хороший вы учитель! 👍🏻
Огромное спасибо!
А я думал, что вебсокеты используют на траснпортном уровне sctp.
Нет, web сокеты - это протокол прикладного уровня.
Зачем тогда нужен http, если сокеты работают эффективнее?
Web cокеты эффективнее только для приложений реального времени. Для большинства ситуаций HTTP вполне достаточно. Еще в HTTP есть кэш, который существенно повышает производительность, если данные меняются не часто.
@@AndreySozykin Получается чат в контакте , телеграмме фейсбуке и тд работает на сокетах, а https применяется, чтобы достать саму страницу с сервера?
Идея такая, но на практике не совсем так. Для онлайн приложений еще может использоваться AJAX, HTTP Long Polling и другие подобные технологии. Не всем нравятся web сокеты, некоторые не могут перенести унаследованный код на web сокеты и есть много других причин.
Как минимум потому что сокеты появились много позже http)))
@@AndreySozykin А Long Polling разве не на веб-сокетах реализован?
3:23 Вы говорите URL, а написано URI, ошибка?
Написано URL, просто l маленькая