http/2. Un nuevo estándar para la “World Wide Web”
By Sergio Rojas, Post
HTTP/2, también conocido como HTTP/2.0 o HTTP 2.0 consiste en una revisión principal del protocolo HTTP, ampliamente utilizado en internet para la World Wide Web. A grandes rasgos, consiste en una mejora del protocolo, centrándose en la mejora de la seguridad, el rendimiento, la optimización del uso de los recursos de computación y la latencia experimentada por el usuario final.
Introducción sobre HTTP/2
De cara al usuario final, el cambio no supone esfuerzo de ningún tipo ya que HTTP/2 está diseñado para ser mayormente compatible con HTTP y los principales navegadores añadieron el soporte de HTTP/2 para finales de 2015. De este modo, las webs pueden hacer uso de las nuevas funcionalidades de HTTP/2, aprovechándose de un mejor rendimiento, seguridad y proporcionando una mejor experiencia de usuario, con la tranquilidad de que no causará problemas a la gran mayoría navegadores web.
Origen
La especificación deriva del protocolo SPDY (desarrollado originalmente por Google Inc.) y ha sido desarrollado por el httpwg (HyperText Transfer Protocol Working Group), que forma parte del Internet Engineering Task Force. HTTP/2 es la primera revisión importante del protocolo HTTP desde el HTTP 1.1, estandarizado en 1997 (RFC 2068) y su especificación se publicó oficialmente en mayo de 2015 (RFC 7540).
Cambios respecto a HTTP 1.1.
HTTP/2 mantiene la mayor parte de la sintaxis a nivel de programación, de modo que métodos, códigos de estado, encabezados y URIs (las cadenas de texto que se utilizan en la barra de direcciones).
Las principales novedades se centran en el modo en el que se encapsula la información y se transporta entre cliente y servidor. Como ejemplo de las nuevas funcionalidades a nivel de transporte, mencionaría la capacidad del servidor de enviar información al cliente antes de ser solicitada, cuando el servidor sabe qué información necesitará el cliente a continuación. De este modo el usuario percibe una mayor rapidez de la navegación.
Para conocer todos los detalles técnicos que caracterizan HTTP/2, recomiendo revisar la documentación oficial en http://httpwg.org/specs/rfc7540.html.
Seguridad
En cuanto a seguridad, HTTP/2 se definió tanto para su uso con URIs tipo HTTP, es decir, sin cifrado, como con URIs tipo HTTPS, donde se utiliza TLS 1.2 o superior, junto con la especificación ALPN (una extensión de TLS que permite a la capa de aplicación negociar aspectos de seguridad asociados con la capa de enlace)
En la práctica, aunque no es obligatorio según la especificación, la mayoría de los navegadores al implementar HTTP/2 han optado por soportar HTTP/2 únicamente mediante TLS, por lo que el uso de cifrado (es decir URIs tipo https://…) es, a efectos prácticos, obligatorio para HTTP/2.
Esta decisión soluciona los principales problemas criticados respecto a la especificación. Inicialmente se criticó el hecho de que HTTP/2 no soporta Encriptación Oportunista, (básicamente, que el sistema intentará cifrar las comunicaciones y pasará a comunicar sin cifrado si el otro extremo no lo acepta). Como decíamos antes, ya que los navegadores han implementado el cifrado como obligatorio para HTTP/2, esta discusión (y todas las asociadas a esta) carecen de sentido.
Conclusiones
El nuevo protocolo HTTP/2 está contribuyendo a la seguridad y a la optimización de los recursos de red y procesamiento de los servidores y clientes que consumen contenido web en Internet. Gracias a que su adopción no requiere una acción por parte de los usuarios finales y a que los principales navegadores soportan desde hace tiempo la nueva especificación, su implementación está siendo paulatina e “indolora” en la mayoría de los casos.
No obstante, el nuevo protocolo también conlleva algunos problemas de implementación, principalmente a nivel de ingeniería. Muchos critican que su arquitectura es innecesariamente compleja y que no respeta algunos principios en cuanto a la separación de capas, un principio perseguido en la implementación de TCP/IP.
En cualquier caso, estas críticas se enmarcan en un nivel muy técnico. Para el usuario final, si duda, conlleva bastantes ventajas.
Referencias:
https://en.wikipedia.org/wiki/HTTP/2
https://queue.acm.org/detail.cfm?id=2716278
https://tools.ietf.org/html/rfc2068
https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation
https://www.slideshare.net/lmacvittie/http2-changes-everything