¿Qué es un Websocket? Definición | Aplicaciones web

Websocket es un proceso que puede hacer que las aplicaciones web sean más rápidas y eficientes. Esto te permite utilizar una aplicación web de forma similar a un programa de usuario en tu escritorio. El Websocket se implementa estableciendo una conexión permanente entre tu navegador como cliente y un servidor web. Luego, puedes usar esta conexión para transferir datos en ambas direcciones sin tener que establecer una nueva conexión.

Leer: ¿Qué es el mantenimiento de software?

Las debilidades del protocolo HTTP

Originalmente, la World Wide Web estaba destinada a entregar archivos constantes desde servidores web a los clientes. El cliente puede solicitar datos, el servidor reacciona a esta solicitud y luego cierra la conexión.

Por tanto, cada una de estas conexiones HTTP consta de una solicitud y su respuesta por parte del servidor. El protocolo no tiene estado, lo que significa que no se guarda información de dicho intercambio de datos. Por lo tanto, se debe restablecer una conexión para cada solicitud. Se incurre en varios cientos de bytes de sobrecarga para cada estructura de este tipo y, por lo tanto, este modelo solo es adecuado hasta cierto punto para aplicaciones web dinámicas.

¿Qué necesitas para aplicaciones web rápidas?

Esto requiere respuestas del servidor con un retraso mínimo. Ejemplos de tales aplicaciones son sitios web dinámicos, operaciones bursátiles en línea o juegos con múltiples participantes. Los retrasos en dichas aplicaciones web no solo son irritantes para ti como usuario, sino que pueden hacer que toda la aplicación sea inútil, por ejemplo, si no puedes cerrar una operación lo suficientemente rápido debido a retrasos o si pierde un juego porque su entrada no se transmitió demasiado rápido.

Hasta la llegada de los websockets, se utilizaron soluciones alternativas para este propósito. Por ejemplo, el cliente puede enviar solicitudes de conexión al servidor a intervalos cortos. Para cada una de estas consultas, el servidor puede decidir si tiene o no datos para transmitir como respuesta. Pero es precisamente aquí donde la considerable sobrecarga es claramente visible. Se generan varios cientos de bytes con cada solicitud, independientemente de si el servidor las responde o no. Si no hay información pendiente de transmisión del servidor al cliente durante un período de tiempo más largo, todos estos datos se transmiten de manera superflua para establecer la conexión.

Un conector web como solución para problemas en tiempo real en aplicaciones web

problemas en tiempo real en aplicaciones web
problemas en tiempo real en aplicaciones web

Un websocket es un protocolo de red junto con una API de cliente que está disponible para el programador de la aplicación web.

La idea básica del web socket es establecer una conexión permanente con el servidor a través del cliente. La conexión TCP configurada de esta manera permanece en su lugar y se puede utilizar para transferir datos en ambas direcciones. Con un conector web, el cliente tiene una especie de línea dedicada al servidor web.

Este tipo de transferencia es mucho más eficiente que una serie de nuevas conexiones HTTP en rápida sucesión. Para un solo paquete de datos, solo hay una sobrecarga de exactamente dos bytes, es decir, uno al principio y otro al final del paquete.

Una conexión permanente con un websocket sin hackeos y soluciones alternativas ineficientes implementadas. La mayoría de los navegadores admiten el protocolo Websocket. El servidor Nginx ha podido responder a las solicitudes de Websocket desde 2013.

Algunos detalles técnicos de Websocket

Websocket es un protocolo de aplicación del mismo nivel ISO que HTTP y, por lo tanto, se basa en TCP.

En particular, Websocket es compatible con HTTP. El establecimiento de una conexión o handshake se formula como una solicitud GET en HTTP y, por lo tanto, se puede enviar a través de los mismos puertos que los propios paquetes de datos HTTP. Los firewalls y proxies tampoco son un problema gracias a esta compatibilidad.

El protocolo de enlace en sí contiene una solicitud del cliente para cambiar al protocolo websocket. Además del protocolo requerido, la solicitud contiene una clave seleccionada al azar que debe ser registrada, procesada y enviada por el servidor web. Esto confirma al cliente que el servidor puede cambiar al websocket y también ha procesado esta instrucción.

Después de cambiar al protocolo Websocket, el cliente y el servidor cambian a la transmisión de datos binarios, que es más eficiente que el protocolo HTTP, pero no es compatible con él. Una conexión full-duplex está disponible entre el cliente y el servidor.

Seguridad del protocolo Websocket

Para la transmisión en sí, está disponible una transmisión no segura en el puerto 80 y una transmisión encriptada en el puerto 443. Al establecer la conexión, debe tener en cuenta que dichas solicitudes no están sujetas a la política del mismo origen. Esto significa que los scripts no solo pueden acceder a datos de páginas web del mismo origen que el propio script.

Esto representa un riesgo potencial de seguridad que ya ha sido explotado. Este tipo de ataque se conoce como secuestro de websocket entre sitios y es similar a la falsificación de solicitudes entre sitios. Como solución, se debe utilizar una autenticación separada de las conexiones Websocket dentro de la aplicación.

Deja un comentario