HTTP/1.1 abría una nueva conexión por cada solicitud o reutilizaba unas pocas, lo que obligaba a los navegadores a abrir alrededor de seis conexiones paralelas a un sitio. Cada conexión pagaba un handshake propio, y una respuesta lenta en una bloqueaba a las demás detrás de ella. La web era lenta por razones estructurales, no técnicas.
El SPDY de Google demostró la solución: mantener los métodos, las cabeceras y los códigos de estado de HTTP exactamente como están, pero trasladar el tráfico a una única conexión que transporta muchos flujos multiplexados. El IETF tomó ese trabajo y lo estandarizó como HTTP/2 en el RFC 7540, con tramas binarias y compresión de cabeceras HPACK.
Como la semántica permaneció idéntica, los servidores y los navegadores pudieron adoptarlo sin replantearse qué significa una solicitud HTTP. El transporte cambió; el contrato no, así que todos los sitios obtuvieron la aceleración gratis.
Congelar la semántica de HTTP; ejecutar flujos sobre una sola conexión.
Como la semántica de HTTP no se tocó, los servidores existentes pudieron añadir soporte sin cambiar cómo las aplicaciones escriben las respuestas.
Una conexión con muchos flujos elimina el cuello de botella de las seis conexiones y el coste de establecimiento de conexión en cada recurso.
HPACK comprime las cabeceras repetidas, de modo que los mismos campos de cookie y user-agent dejan de reenviarse en cada solicitud.
El server push permitía que un servidor enviara recursos antes de que el cliente los pidiera, eliminando un viaje de ida y vuelta.
Un transporte que preserve la compatibilidad puede imponerse incluso cuando la semántica no cambia; conserva el contrato y sustituye la fontanería.
El RFC 7540 se finalizó en mayo de 2015 y se convirtió en el valor predeterminado para esencialmente todo el tráfico HTTPS. Su principal problema restante era el bloqueo de cabeza de línea de TCP, que condujo directamente a QUIC y HTTP/3. HTTP/2 también habilitó el contrabando de solicitudes y el patrón de DoS de restablecimiento rápido de HTTP/2 descubierto en 2023.
CONSULTA LAS PRUEBAS
Las fuentes
- RFC 7540: Hypertext Transfer Protocol Version 2 (HTTP/2) IETF / RFC Editor · rfc-editor.org
- HTTP/2 Wikipedia · en.wikipedia.org