¿Cuál es la diferencia entre los sockets de Windows y los sockets web?

Primero clasifiquemos un poco las cosas antes de profundizar:

  • Red Socket = Recurso del sistema
  • Windows Sockets = Especificación
  • WebSocket = Protocolo

Zócalo de red

Un punto final interno para enviar o recibir datos en un solo nodo en una red informática. Concretamente, es una representación de este punto final en el software de red (pila de protocolos), como una entrada en una tabla (lista de protocolos de comunicación, destino, estado, etc.), y es una forma de recurso del sistema.

Windows Sockets

Windows Sockets API (WSA), que luego se acortó a Winsock, es una especificación técnica que define cómo el software de red de Windows debe acceder a los servicios de red, especialmente TCP / IP.

WebSocket

WebSocket está diseñado para implementarse en navegadores web y servidores web, pero puede ser utilizado por cualquier cliente o aplicación de servidor. El protocolo WebSocket es un protocolo independiente basado en TCP. Su única relación con HTTP es que su apretón de manos es interpretado por los servidores HTTP como una solicitud de actualización.


Ahora, puede usar la API de Windows Sockets para crear una aplicación de cliente y servidor que en ambos sistemas reserve un socket de red para comunicarse a través del protocolo WebSocket.

De hecho, aquí está el código fuente sobre cómo hacer exactamente eso: servidor C ++ Winsock WebSocket


Si aún no está claro, revisemos un pequeño proceso de pensamiento y viajemos atrás en el tiempo cuando WebSocket era solo una especificación pero nadie tenía ninguna implementación aún. Entonces debe codificar la primera implementación usted mismo. Ya tienes la especificación WebSocket, así que sabes lo que estás tratando de lograr y solo por diversión, decides hacerlo en un sistema basado en Windows. Entonces, estudias un poco más y descubres sobre Windows Sockets (Winsock) que ya ha estado allí por siglos (Versión 1.0 / Junio ​​de 1992) y decides usarlo. Obtiene los encabezados y bibliotecas Winsock C ++ y codifica su cliente y servidor de acuerdo con la especificación del protocolo WebSocket.

¡Y ahí lo tienes! La primera implementación del cliente y servidor WebSocket.

A2A. Usted pregunta: ¿Cuál es la diferencia entre los sockets de Windows y los sockets web?

Windows sockets (también conocido como winsock) es una interfaz aplicativa disponible en Microsoft Windows para hacer redes (generalmente con protocolos IPv4 e IPv6, pero no se limita a eso), basada en la popular API de sockets Berkeley que está disponible en sistemas UNIX y similares a UNIX, y eso es parte del estándar POSIX.

WebSocket, por otro lado, es un protocolo basado en TCP, estandarizado por RFC 6455, que permite múltiples canales de comunicación bidireccionales multiplexados en una sola conexión TCP, que a partir de hoy es compatible con todos los principales navegadores web.

Básicamente, utiliza el socket de Windows para comunicarse entre aplicaciones de Windows a través de TCP.

Mientras que, utiliza websocket para comunicarse con el navegador a través de TCP.

Son 2 protocolos diferentes con diferentes casos de uso.

Corrección por jani

Windows Sockets no es un protocolo. Es una especificación y una API que define cómo llamar al sistema de Windows para que reserve un socket de red para la comunicación a través de un protocolo basado en TCP como WebSockets.

Una de las principales diferencias es que los sockets de Windows usan TCP o UDP dependiendo del tipo de socket y el desarrollador superpone protocolos de capa superior como HTTP en la parte superior.

Los sockets web generalmente usan HTTP.