Jaka jest zasadnicza różnica między WebSockets a czystym TCP?

Czytałem o WebSockets i zastanawiam się, dlaczego przeglądarka nie mogła po prostu otworzyć trywialnego połączenia TCP i komunikować się z serwerem, jak każda inna aplikacja desktopowa. I dlaczego ta komunikacja jest możliwa za pośrednictwem websockets?

 137
Author: xap4o, 2010-04-21

3 answers

Łatwiej jest komunikować się za pośrednictwem gniazd TCP, gdy pracujesz w granicach intranetu, ponieważ prawdopodobnie masz kontrolę nad maszynami w tej sieci i możesz otwierać porty odpowiednie do nawiązywania połączeń TCP.

Przez internet komunikujesz się z cudzym serwerem po drugiej stronie. Są one ekstremalnie mało prawdopodobne, aby jakiekolwiek stare gniazdo było otwarte dla połączeń. Zazwyczaj mają tylko kilka standardowych, takich jak port 80 dla HTTP lub 443 dla HTTPS. Więc, aby komunikować się z serwerem, musisz połączyć się za pomocą jednego z tych portów.

Biorąc pod uwagę, że są to standardowe porty dla serwerów internetowych, które ogólnie mówią HTTP, jesteś zatem zobowiązany do przestrzegania protokołu HTTP, w przeciwnym razie serwer nie będzie z tobą rozmawiać. Celem web sockets jest umożliwienie zainicjowania połączenia przez HTTP, ale następnie negocjowanie użycia protokołu web sockets (zakładając, że serwer jest w stanie to zrobić), aby umożliwić komunikację podobną do "gniazda TCP" strumień.

 212
Author: Ash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-21 09:58:56

Przeglądarki internetowe działają na warstwie aplikacji, podczas gdy TCP działa na warstwie transportowej. Jako programista aplikacji webowych łatwiej jest wysyłać wiadomości przez przewód za pośrednictwem warstwy aplikacji zamiast nieprzetworzonych bajtów na warstwie transportowej.

Podstawowym WebSockets jest TCP, jest abstrakcyjny dla uproszczenia.

 22
Author: wulfgarpro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-08 03:00:37

Websocket jest protokołem warstwy aplikacji, podczas gdy TCP jest protokołem warstwy transportu. W warstwie transportowej zwykle mamy protokół TCP i UDP. Każda wiadomość z warstwy aplikacji musi przejść przez warstwę transportową, aby została przesłana do innej maszyny. Stąd websocket i tcp mają ze sobą związek i nie mogą być porównywalne.

 0
Author: Minh Trần,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-27 03:43:08