Я читал о WebSockets и удивляюсь, почему браузер не может просто открыть тривиальное TCP-соединение и связаться с сервером, как любое другое настольное приложение. И почему это общение возможно через веб-сокеты?
167
Я читал о WebSockets и удивляюсь, почему браузер не может просто открыть тривиальное TCP-соединение и связаться с сервером, как любое другое настольное приложение. И почему это общение возможно через веб-сокеты?
80
. По определению один порт можно подключить к одному приложению ТОЛЬКО . Так что, если клиент хочет использовать службу, отличную от веб (HTTP), но доступен только один порт? Вуаля! WebSockets!Ответы:
Проще общаться через TCP-сокеты, когда вы работаете в пределах границ интрасети, так как вы, вероятно, имеете контроль над машинами в этой сети и можете открывать порты, подходящие для создания соединений TCP.
Через Интернет вы общаетесь с чужим сервером на другом конце. Они крайне маловероятны , чтобы иметь какой - либо старый сокет открытым для соединений. Обычно у них будет только несколько стандартных, таких как порт 80 для HTTP или 443 для HTTPS. Итак, для связи с сервером вы обязаны подключиться через один из этих портов.
Учитывая, что это стандартные порты для веб-серверов, которые обычно используют HTTP, вы обязаны соблюдать протокол HTTP, иначе сервер не будет с вами общаться. Назначение веб-сокетов состоит в том, чтобы позволить вам инициировать соединение через HTTP, а затем договориться об использовании протокола веб-сокетов (при условии, что сервер способен на это), чтобы позволить поток сообщений, более похожий на «сокет TCP».
источник
Веб-браузеры работают на уровне приложений, тогда как TCP работает на транспортном уровне. Как разработчик веб-приложений, проще отправлять сообщения по сети через прикладной уровень, а не необработанные байты на транспортном уровне.
В основе WebSockets лежит TCP, он просто абстрагирован для простоты.
источник
Websocket - это протокол прикладного уровня, а TCP - протокол транспортного уровня. На транспортном уровне у нас обычно есть протоколы TCP и UDP. Любое сообщение от прикладного уровня должно пройти через транспортный уровень для передачи на другой компьютер. Следовательно, websocket и tcp имеют отношение друг к другу и не могут быть сопоставимы.
источник
Для простоты связь через веб-сокет осуществляется через TCP-порт № 80 (или 443 в случае соединений, зашифрованных по протоколу TLS), что выгодно для тех сред, которые блокируют не-интернет-соединения с использованием брандмауэра .
Вы хотите использовать существующий порт TCP или открыть новый порт TCP, который может быть заблокирован брандмауэром?
источник