2010-04-21 20 views
128

He leído acerca de 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?¿Cuál es la diferencia fundamental entre WebSockets y TCP puro?

+0

Porque WebSockets y navegadores se comunican a nivel de aplicación a través de HTTP y no en la capa de transporte a través de TCP? – anonymous

+5

¿Pero cuál es el problema? Déjalos usar TCP. – xap4o

+2

Más información http://stackoverflow.com/questions/8051516/how-to-establish-a-tcp-socket-connection-from-a-web-browser-client-side –

Respuesta

204

Es más fácil comunicarse a través de sockets TCP cuando se trabaja dentro de un límite de intranet, ya que es probable que tenga control sobre las máquinas en esa red y pueda abrir puertos adecuados para realizar las conexiones TCP.

través de Internet, te estás comunicando con el servidor de otra persona en el otro extremo. Son extremadamente poco probable que tengan un socket viejo abierto para las conexiones. Por lo general, solo tendrán unos pocos estándar como el puerto 80 para HTTP o 443 para HTTPS. Entonces, para comunicarse con el servidor está obligado a conectarse usando uno de esos puertos.

Teniendo en cuenta que estos son puertos estándar para servidores web que generalmente hablan HTTP, que está por lo tanto obligado a cumplir con el protocolo HTTP, de lo contrario el servidor no va a hablar con usted. El propósito de los sockets web es permitirle iniciar una conexión a través de HTTP, pero luego negociar para usar el protocolo de sockets web (suponiendo que el servidor sea capaz de hacerlo) para permitir un flujo de comunicación similar al "socket TCP".

+1

Gracias por una explicación fácil, Ash. – xap4o

+0

¿Básicamente, WebSocket es simplemente un contenedor para TCP en el sentido de que UDP es simplemente un contenedor para IP? – Pacerier

+3

@Pacerier: Un WebSocket requiere algún tipo de protocolo de transporte para operar, pero esa capa de transporte no tiene que ser TCP (sin embargo, casi siempre va a ser TCP en la práctica). Podría pensar en WebSockets como una especie de envoltorio alrededor de TCP, pero no creo que haya ningún vínculo prescriptivo entre los dos. – Ash

20

navegadores web operan en la capa de aplicaciones, 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.

WebSockets subyacente es TCP, que es abstraído por simplicidad.

-1

WebSocket es un protocolo de capa de aplicación, mientras que TCP es un protocolo de capa de transporte. En la capa de transporte, generalmente tenemos 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 ellos y no pueden ser comparables.

Cuestiones relacionadas