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