SPDY
# SPDY

SPDY (pronunciado como la palabra en inglés "speedy") es un protocolo obsoleto de nivel de sesión según el modelo OSI, complementario al protocolo HTTP y que funciona sobre TCP/IP. Fue presentado por Google y, según pruebas en laboratorio, puede mejorar el rendimiento en las comunicaciones entre servidor y cliente hasta en un 64%.

Actualmente este protocolo cuenta con el soporte de Internet Explorer (versión 11), Google Chrome, Mozilla Firefox (versión 11 en adelante) y Opera (versión 12.10 en adelante).

Algunos desarrolladores de SPDY han estado involucrados en el desarrollo de HTTP/2, incluyendo a Mike Belshe y Roberto Peón. En febrero de 2015, Google anunció que tras la ratificación final del estándar HTTP/2, el soporte para SPDY se considera obsoleto, y Chrome dejó de soportarlo en su versión 51.

## Motivación

Actualmente, el protocolo HTTP, que funciona sobre TCP/IP, es el más utilizado en la web para intercambiar datos entre los servidores y los clientes. Su funcionamiento se basa en petición-respuesta, incurriendo en una gran latencia entre peticiones, ya que la conexión se abre y se cierra por petición.

El cliente siempre realiza la petición inicial, por lo que el servidor solo espera la llegada de peticiones.

La cantidad de datos de la cabecera del protocolo HTTP puede llegar a ser muy grande, comparativamente hablando, sobre todo en peticiones con pocos datos, y los datos de la cabecera no son comprimidos. Además, algunas entradas en la cabecera pueden llegar a ser redundantes como "User-Agent", "Host" o "Accept", que no suelen cambiar.

## Alternativas anteriores

Anteriormente se había propuesto sustituir el protocolo TCP como protocolo de transmisión de datos por otros como SCTP con múltiples flujos de datos o SST para flujos estructurados. El problema de estas propuestas es la dificultad que radica en el despliegue de los nuevos protocolos en todos los ordenadores.

## Metas

El propósito de SPDY es reducir el tiempo de carga de las páginas web.

SPDY aprovecha TCP, que es el protocolo más extendido para HTTP, por lo que sería más fácil distribuirlo. Solo es necesario que el servidor y el cliente puedan manejar este protocolo, haciéndose transparente para las aplicaciones que lo usen.

Este nuevo protocolo utilizaría una sola conexión TCP para manejar varias peticiones HTTP a la vez de manera concurrente. Además usa SSL como capa subyacente para incrementar la seguridad.

Otra característica que se le quiere dar al nuevo protocolo es la posibilidad de que sea el servidor el que establezca conexión con el cliente, sobre todo para aquellos casos en el que el servidor tiene que enviarle notificaciones como servicios de push e-mail.

