Feb 242015
 

El grupo de trabajo HTTP del IETF (Internet Engineering Task Force) ha aprobado con fecha 17-Feb-2015 la versión 2 del protocolo HTTP (Hypertext Transfer Protocol 2 specification). Esta versión reemplazará próximament los protocolos HTTP/1.0 y HTTP/1.1, que durante muchos años han consituido una pieza básica de la web (HTTP/1.1 fué aprobado en 1999).

En paralelo, el grupo de trabajo ha aprobado también la especificación HPACK, para la compresión de los headers HTTP/2.

Esta nueva versión del protocolo pretende solucionar las limitaciones de las anteriores versiones mediante una serie de mejoras:

Streams múltiples sobre una misma conexión TCP

En la mayoría de los sitios web, una única página puede utilizar 80 o 100 recursos: imágenes, hojas de estilo, librerías javascript,…

En HTTP/1.0, era necesario establecer una conexión al servidor para cada uno de ellos.

En HTTP/1.1, es posible utilizar una misma conexión para descargar recursos, pero en este caso los recursos se descargan secuencialmente, uno tras otro, por lo que los principales navegadores (Firefox, Chrome, Safari, IE) realizan varias conexiones simultáneas al servidor para descargar los recursos en paralelo. Cada conexión utiliza recursos de red, y requiere un tiempo adicional de establecimiento que se añade al tiempo total de carga de la página.

En HTTP/2, se soluciona este problema estableciendo un mecanismo para la realizar la transferencia de “streams” múltiples sobre una misma conexión TCP. Así, cada recurso puede ser solicitado y entregado sobre un stream, y los recursos que requieren más tiempo para ser entregados no interfiere con la entrega de otros recursos más ligeros.

Para poder realizar la carga de todos los elementos una página sobre una única conexión, la especificación HTTP/2 recomienda que las implementaciones realizadas en navegadores y servidores web permitan al menos 100 streams por conexión.

Protocolo binario y streams “push”

Otra diferencia significativa entre HTTP/2 y HTTP/1.x es que en HTTP/2 los mensajes se envían en secuencias de tramas binarias.

Por otra parte, en HTTP/2 el servidor puede iniciar la entrega de un determinado contenido requerido por la página sin necesidad de que el cliente lo solicite.

Encriptación TLS

Una parte considerable de la especificación HTTP/2 está basada en el protocolo SPDY desarrollado por Google. Pero, aunque en SPDY era obligatorio el uso de encriptación TLS (Transport Layer Security), en HTTP/2 sigue siendo opcional. De todos modos, un gran número de fabricantes de software han anunciado que sus implementaciones sólo soportarán HTTP/2 sobre TLS.

Compresión HPACK

Durante muchos años, gzip ha sido el formato elegido para comprimir los mensajes HTTP. Pero en 2012 se descubrió una vulnerabilidad de este formato, por el cual los usuarios estaban expuestos a un ataque conocido como CRIME (Compression Ratio Info-leak Made Easy).

Para evitar este problema, el grupo de trabajo del IETF ha elaborado la especificación de otro tipo de formato de compresión: HPACK.

HPACK está diseñado específicamente para la compresión de los headers HTTP/2, al contrario que gzip, que es un formato de compresión de propósito general.

Soporte al protocolo HTTP/2

Los principales fabricantes de software están ya trabajando en nuevas versiones de sus productos con soporte HTTP/2.

Los navegadores Chrome 40 y Firefox 36 ya incluirán soporte para esta versión del protocolo, y los servidores web más populares, como Apache, también están incorporando HTTP/2.

Referencias

 Publicado por en 7:17 pm

 Deja un comentario

(requerido)

(requerido)