Para entender mejor el protocolo HTTP/3, antes hablaremos del protocolo HTTP y de sus versiones anteriores. También explicaremos cómo Cloudflare ya ha empezado a utilizar HTTP/3 en sus servidores, por tanto, ya tenemos un entorno real de utilización de este nuevo protocolo.
HTTP es uno de los protocolos más importantes para el funcionamiento de Internet, apareció por primera vez en 1991, y desde entonces, ha habido varias versiones con diferentes características. Entre ellas destaca HTTP/1.2, que estuvo vigente durante 15 años, hasta que llegó HTTP/2 en mayo de 2015. Ahora, llega HTTP/3, que viene cargado de novedades para mejorar la navegación web por Internet tal y como la conocemos.
Si queremos comunicarnos por Internet necesitamos utilizar diferentes protocolos. Fundamentalmente podríamos decir que son dos (aunque en realidad intervienen muchos más). El primero sería el Protocolo de Internet que viene del inglés Internet Protocol o IP en inglés. En este caso se trata de un protocolo de comunicación de datos que se encuentra dentro de la capa de red según el modelo internacional OSI. Gracias al Protocolo de Internet, a cada dispositivo que se conecta a Internet se la va a asignar una dirección con la que identificarse en la red. En este sentido, no podemos navegar por la red sin una dirección IP. Cuando utilizamos nuestro navegador nos comunicaremos con un servidor DNS que le dirá la IP para conectar esa web que hemos escrito en nuestra barra de direcciones. Así, en cada comunicación tenemos una IP de origen (la nuestra) y una IP de destino (la web) a la que queremos hacer las peticiones.
Ya tenemos un protocolo que identifica a cada una de las partes, pero necesitamos otro que establezca una comunicación a nivel de capa de aplicación entre las partes. El segundo que necesitamos es HTTP del que hablamos a continuación.
Qué es HTTP y quienes participaron en su creación
Este protocolo viene del inglés Hypertext Transfer Protocol, abreviado HTTP y que traducido al castellano sería Protocolo de transferencia de hipertexto. Se trata de un protocolo de comunicación que permite las transferencias de información en la World Wide Web.
El protocolo HTTP fue desarrollado por dos organismos. Uno es el World Wide Web Consortium que se trata de un consorcio internacional que desarrolla las recomendaciones y estándares para mantener el crecimiento de la World Wide Web a largo plazo. La otra organización internacional implicada fue la Internet Engineering Task Force (IETF) que traducido al español sería Grupo de Trabajo de Ingeniería de Internet. Ellos se encargan de la normalización de Internet actuando en diversos apartados, como transporte, enrutamiento y seguridad.
Gracias al HTTP se define la sintaxis y la semántica que utilizan los elementos de software de la arquitectura web de los clientes, servidores y proxies para que puedan comunicarse. Además, es un protocolo sin estado, lo cual significa que no guarda ninguna información sobre conexiones anteriores. A parte de esto, también lo usamos para la entrega de las imágenes y otros elementos de los que está formado una web, y que llegarían a nosotros a través del navegador o de las aplicaciones.
HTTP trabaja utilizando un modelo cliente-servidor. Esto significa que cuando nosotros realizamos una conexión, hacemos una serie de peticiones al servidor, para que nos muestre el contenido de esa web. Luego, esas imágenes y texto se mostrarán en el navegador usando el código HTML.
Versiones del protocolo HTTP y evolución
A lo largo del tiempo, el protocolo HTTP ha pasado por diferentes versiones. En este sentido cabe señalar que muchas de las cuales son compatibles con las anteriores, esto es posible gracias a que el cliente, cuando establece la comunicación, le dice al servidor la versión que está usando. A continuación, el servidor se encarga de utilizar en la contestación la misma versión, o en su defecto, una anterior.
Ahora llega el turno de hablar brevemente de las diferentes versiones y si en la actualidad siguen estando vigentes.
La primera la HTTP/0.9, data de 1991 y podemos afirmar que actualmente se considera obsoleta. En este caso hay que señalar que sólo soporta un comando, GET, y además, no especifica el número de versión HTTP. Tampoco soporta cabeceras, ni POST, por lo que el cliente no puede mandar información al servidor.
La siguiente es la HTTP/1.0, fue lanzada en mayo de 1996. Por primera vez el protocolo especifica su versión en las comunicaciones. Actualmente se usa mucho, sobre todo en los servidores proxy. También hay que destacar que admite los métodos de petición GET, HEAD y POST.
A continuación, en junio de 1999 se lanzó la HTTP/1.1, que ahora mismo es la versión más utilizada. Las conexiones persistentes las tenemos activadas por defecto. También permite al cliente enviar múltiples peticiones simultáneamente en la misma conexión (pipelining), lo que hace posible eliminar el tiempo de ida y vuelta por cada petición, lo que se traduce en una mayor rapidez a la hora de cargar las páginas webs. Un año más tarde vino HTTP/1.2, en febrero de 2000. Aquí se propuso el Protocolo de Extensión de Protocolo o abreviado PEP. En ese, sentido podemos decir que HTTP Extension Framework, incluye en gran medida a PEP.
En mayo de 2015 llega HTTP/2, se trata de una nueva versión que no modifica la semántica de aplicación de HTTP. Sus mejoras se centran en cómo se empaquetan los datos y en el transporte. Las novedades que aporta, es que añade el uso de una única conexión, la compresión de cabeceras o el servicio server push.
Por último, en octubre de 2018 llega HTTP/3 que utiliza el protocolo de la capa de transporte UDP en lugar de TCP. El soporte ya ha sido agregado por empresas como Cloudflare en sus servidores, y Google en su navegador Chrome. A continuación, hablaremos de HTTP/3 a fondo y todo lo que este protocolo conlleva.
Conociendo HTTP/3 y su implementación en los navegadores web
HTTP/3 es la próxima generación del Protocolo de Transferencia de Hipertexto que usamos para intercambiar información en la World Wide Web. Antes de tener una denominación, se le conocía con el Protocolo de Transferencia de Hipertexto sobre QUIC.
Una parte muy importante, como ya habréis podido deducir, es el protocolo de red QUIC, perteneciente a la capa de transporte. Hay que señalar que este protocolo en sus inicios fue desarrollado por Google y que usa el control de congestión del espacio de usuario sobre el Protocolo de Datagrama del Usuario (UDP).
Los navegadores se han ido preparando poco a poco para dar soporte a HTTP/3. El primero en hacerlo fue Google Chrome (Canary build) en septiembre 2019, y a principios del año 2020 lo hizo Firefox. Aquí tenéis una tabla en la que se puede observar desde qué fecha son compatibles los navegadores con esta nueva versión del protocolo de transferencia de hipertexto.
Como podéis ver, los principales navegadores como Chrome, Firefox, Safari y Edge ya lo soportan. En este sentido, hay que señalar que, aunque tienen soporte, no está habilitado por defecto y debemos ser nosotros mismos los que lo activemos. Por ejemplo, en Mozilla Firefox tenemos que entrar en about:config en la barra de direcciones (aceptamos los riesgos). Tenemos que buscar network.http.http3.enabled. Por defecto viene marcado como «False», tenemos que marcarlo como «True», y así tendremos habilitada la función en el navegador.
Protocolo QUIC, qué es y cómo funciona
Anteriormente cuando hablamos del protocolo HTTP/3, mencionamos que una de sus implementaciones más importantes era QUIC. Ahora llega el momento de tratarlo en profundidad. QUIC viene de las siglas en inglés Quick UDP Internet Connections que traducido al español significa Conexiones UDP rápidas en Internet.
QUIC soporta un conjunto de conexiones multiplexadas entre dos extremos sobre UDP (User Datagram Protocol). En cuanto a la seguridad, ofrece una equivalente a TLS/SSL. Además, ofrece otras ventajas como una latencia de conexión y de transporte reducidas. También es capaz de ofrecer una estimación de ancho de banda en cada dirección para evitar la congestión.
Con la implantación de este nuevo protocolo, se pretende mejorar el rendimiento percibido de aplicaciones web que usan actualmente TCP. Además, pretende proporcionar un entorno de prevención de congestión para la iteración rápida de algoritmos estableciendo control en el espacio de aplicación en ambos extremos.
Cada vez se manda más información por Internet y necesitamos un protocolo muy eficiente para que las peticiones, respuestas e interacciones tengan una menor latencia, con menores tiempos de retransmisión. Con el protocolo QUIC conseguimos mejorar esos aspectos. Una cosa que debemos tener en cuenta es que los pares de direcciones IP y los sockets son recursos limitados. Gracias a que QUIC está diseñado desde la base para operaciones de multiplexado, tiene el potencial de:
- Unificar el tráfico.
- Reducir la utilización de puertos.
- Unificar mensajes de reportes y respuestas.
- Reducir la información redundante, por ejemplo, en cabeceras.
En resumen, con el protocolo HTTP/3 y QUIC integrado en él, queremos que se extienda por todo el mundo para reducir la pérdida de paquetes por bloqueo head-of-line. Además, se busca obtener una baja latencia tanto para equipos como smartphones. En cuanto a QUIC, el cifrado que se va a utilizar es TLS 1.3. La seguridad va ser una parte muy importante de HTTP/3, ya que, en él, ninguna conexión volverá a ir en texto plano o sin cifrar por la red.
Como QUIC se diseñó para operaciones de multiplexado, los paquetes de datos perdidos de un flujo individual, generalmente sólo afectarán a ese flujo en particular. Los otros datos sin pérdidas, pueden continuar sin tener que esperar a los otros. No obstante, hay una excepción, los bits de cabecera HTTP de QUIC pueden producir bloqueo head-of-line.
Actual implementación de HTTP/3 en navegadores y webs
Tras la aprobación del protocolo HTTP/3 en octubre de 2018, se empezaron a dar los primeros pasos para su utilización a gran escala. Uno de ellos fue la adaptación del software para nuestros ordenadores y móviles. Así, como ya hemos mencionado antes, empezaron a dar soporte a los navegadores web que utilizamos habitualmente. De este modo, Chrome, Safari, Firefox y Edge están preparados para utilizarlo.
En cuanto Cloudflare, una de las empresas más importantes dentro de los servicios de seguridad de Internet, y de servicios de servidores de nombres de dominio (DNS) distribuidos por todo el mundo. Entre los servicios que oferta tiene:
- Protección frente a ataques DDoS.
- Firewall de aplicaciones web.
- Servidores DNS.
- Red de entrega de contenido. Gracia a ella, Cloudflare almacena contenido en caché en sus ubicaciones de perímetro para actuar como red de entrega de contenido a través de sus servidores CDN.
Cloudflare va a ser una de las empresas que empiece a trabajar con HTTP/3. Esto no va a afectar a la forma en que se ve la página web ese cliente. Recordemos que, gracias a este nuevo protocolo, tendremos conexiones más rápidas y seguras ya que van siempre cifradas. En principio, no va a suponer ningún problema, ya que es compatible con versiones anteriores de HTTP. Por lo tanto, el resto de personas podría seguir utilizándolo.
En Cloudflare han comentado que no prevén que afecte al rendimiento de sus sitios web. Sin embargo, si por alguna razón, deseamos deshabilitarlo después de que se habilite automáticamente, podemos quitarlo para no tener problemas. Para hacerlo, tendríamos que ir a la pestaña «Red» en el panel de Cloudflare y desactivarlo.
Por último, en el Blog de Google hay un estudio en el que se analizaron los tiempos de carga de una web utilizado el protocolo QUIC de HTTP/3. Las conclusiones que sacaron, es que reducía el tiempo medio de carga de una web en un 8% a nivel mundial y de un 13% en las regiones con mayor latencia.
Fuente obtenida de: https://www.redeszone.net/tutoriales/internet/protocolo-http-3-internet-que-es-rapido-seguro/