J'ai lu sur WebSockets et je me demande pourquoi le navigateur ne pouvait pas simplement ouvrir une connexion TCP triviale et communiquer avec le serveur comme toute autre application de bureau. Et pourquoi cette communication est-elle possible via des websockets?
167
80
. Par définition un port peut attacher à une application seulement . Alors que se passe-t-il si un client souhaite utiliser un service autre que le Web (HTTP) mais qu'il n'y a qu'un seul port disponible? Voila! Websockets!Réponses:
Il est plus facile de communiquer via des sockets TCP lorsque vous travaillez dans une limite intranet, car vous avez probablement le contrôle sur les machines de ce réseau et pouvez ouvrir des ports adaptés pour établir les connexions TCP.
Sur Internet, vous communiquez avec le serveur de quelqu'un d'autre à l'autre bout. Il est extrêmement improbable qu'ils aient une ancienne prise ouverte pour les connexions. Habituellement, ils n'en auront que quelques-uns standard tels que le port 80 pour HTTP ou 443 pour HTTPS. Ainsi, pour communiquer avec le serveur, vous êtes obligé de vous connecter en utilisant l'un de ces ports.
Etant donné qu'il s'agit de ports standards pour les serveurs web qui parlent généralement HTTP, vous êtes donc obligé de vous conformer au protocole HTTP, sinon le serveur ne vous parlera pas. Le but des web sockets est de vous permettre d'initier une connexion via HTTP, mais ensuite de négocier pour utiliser le protocole web sockets (en supposant que le serveur est capable de le faire) pour permettre un flux de communication plus "socket TCP".
la source
Les navigateurs Web fonctionnent au niveau de la couche Application, tandis 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 via le réseau via la couche d'application au lieu d'octets bruts au niveau de la couche de transport.
TCP est sous-jacent aux WebSockets , il est simplement abstrait pour plus de simplicité.
la source
Websocket est un protocole de couche application tandis que TCP est un protocole de couche de transport. Au niveau de la couche de transport, nous avons généralement les protocoles TCP et UDP. Tout message de la couche d'application doit passer par la couche de transport pour être transmis à une autre machine. Par conséquent, websocket et tcp ont une relation entre eux et ne peuvent pas être comparables.
la source
Pour simplifier les choses, les communications Websocket sont effectuées sur le port TCP numéro 80 (ou 443 dans le cas des connexions cryptées TLS), ce qui est avantageux pour les environnements qui bloquent les connexions Internet non Web à l'aide d'un pare - feu .
Souhaitez-vous utiliser le port TCP existant ou ouvrir un nouveau port TCP qui pourrait être bloqué par le pare-feu?
la source