He leído sobre WebSockets y me pregunto por qué el navegador no puede simplemente abrir una conexión TCP trivial y comunicarse con el servidor como cualquier otra aplicación de escritorio. ¿Y por qué esta comunicación es posible a través de websockets?
167
80
. Por definición, un puerto puede conectarse a una sola aplicación SOLAMENTE . Entonces, ¿qué pasa si un cliente quiere usar un servicio que no sea web (HTTP) pero solo hay un puerto disponible? Voila! Websockets!Respuestas:
Es más fácil comunicarse a través de sockets TCP cuando está trabajando dentro de un límite de intranet, ya que probablemente tenga control sobre las máquinas en esa red y pueda abrir puertos adecuados para realizar las conexiones TCP.
A través de Internet, se está comunicando con el servidor de otra persona en el otro extremo. Es extremadamente improbable que tenga algún socket antiguo abierto para las conexiones. Por lo general, solo tendrán unos pocos estándares, como el puerto 80 para HTTP o 443 para HTTPS. Por lo tanto, para comunicarse con el servidor, está obligado a conectarse mediante uno de esos puertos.
Dado que estos son puertos estándar para servidores web que generalmente hablan HTTP, por lo tanto, está obligado a cumplir con el protocolo HTTP; de lo contrario, el servidor no le hablará. El propósito de los sockets web es permitirle iniciar una conexión a través de HTTP, pero luego negociar el uso del protocolo de sockets web (suponiendo que el servidor sea capaz de hacerlo) para permitir un flujo de comunicación similar al "socket TCP".
fuente
Los navegadores web operan en la capa de aplicación, mientras que TCP opera en la capa de transporte. Como desarrollador de aplicaciones web, es más fácil enviar mensajes por cable a través de la capa de aplicación en lugar de bytes sin procesar en la capa de transporte.
La base de WebSockets es TCP, simplemente se abstrae por simplicidad.
fuente
Websocket es un protocolo de capa de aplicación, mientras que TCP es el protocolo de capa de transporte. En la capa de transporte, generalmente tenemos el protocolo TCP y UDP. Cualquier mensaje de la capa de aplicación debe pasar por la capa de transporte para transmitirse a otra máquina. Por lo tanto, websocket y tcp tienen una relación entre sí y no pueden ser comparables.
fuente
Para simplificarlo, las comunicaciones websocket se realizan a través del puerto TCP número 80 (o 443 en el caso de las conexiones cifradas con TLS), lo cual es beneficioso para aquellos entornos que bloquean las conexiones a Internet que no son de la web utilizando un firewall .
¿Le gustaría utilizar el puerto TCP existente o abrir un nuevo puerto TCP que podría estar bloqueado por el firewall?
fuente