web-dev-qa-db-fra.com

Quelle est la différence fondamentale entre WebSockets et le TCP pur?

J'ai lu sur WebSockets et je me demande pourquoi le navigateur ne pouvait pas simplement ouvrir une connexion triviale TCP et communiquer avec le serveur comme toute autre application de bureau. Et pourquoi cette communication est-elle possible via des websockets?

141
xap4o

Il est plus facile de communiquer via des sockets TCP lorsque vous travaillez dans un périmètre intranet, car vous avez probablement le contrôle des machines de ce réseau et vous pouvez ouvrir des ports adaptés à l'établissement des connexions TCP.

Sur Internet, vous communiquez avec le serveur de quelqu'un d'autre à l'autre bout. Elles sont extrêmement peu de chances d’avoir une vieille prise ouverte pour les connexions. En général, ils ne disposent que de quelques standards tels que le port 80 pour HTTP ou 443 pour HTTPS. Donc, pour communiquer avec le serveur, vous êtes obligé de vous connecter en utilisant l’un de ces ports.

Étant donné que ce sont des ports standard pour les serveurs Web qui parlent généralement HTTP, vous devez donc vous conformer au protocole HTTP, sinon le serveur ne vous parlera pas. Le but des sockets Web est de vous permettre d’établir une connexion via HTTP, mais de négocier pour utiliser le protocole de sockets Web (en supposant que le serveur en soit capable) afin de permettre un flux de communication plus semblable à un "socket TCP".

223
Ash

Les navigateurs Web fonctionnent au niveau de la couche Application, alors que TCP fonctionne au niveau de la couche Transport. En tant que développeur d'applications Web, il est plus facile d'envoyer des messages par le biais de la couche d'application plutôt que d'octets bruts au niveau de la couche transport.

WebSockets sous-jacent is TCP, il est simplement résumé pour des raisons de simplicité.

25
wulfgarpro

Pour simplifier les choses, les communications Websocket sont effectuées sur TCP numéro de port 80 (ou 443 dans le cas de connexions cryptées TLS), ce qui est avantageux pour les environnements qui bloquent les connexions Internet non Web à l'aide d'une connexion Internet. pare-feu .

Voulez-vous utiliser le port existant TCP ou ouvrir un nouveau port TCP susceptible d'être bloqué par un pare-feu?

2
Gearon

Websocket est un protocole de couche d'application alors que TCP est un protocole de couche de transport. À la couche de transport, nous avons généralement TCP et le protocole UDP. Tout message de la couche application doit passer par la couche de transport pour être transmis à une autre machine. Par conséquent, websocket et tcp ont une relation mutuelle et ne peuvent être comparables.

0
Minh Trần