Una introducción a HTTP / 2

Introducción

HTTP / 2 es la última revisión de Protocolo de Transferencia de Hipertexto o HTTP [ 01 ], que utilizan los navegadores para comunicarse con los servidores web. Derivado del SPDY anterior [ 02 ] HTTP / 2 es la primera versión nueva de HTTP desde la estandarización de HTTP / 1.1 en RFC 2068 en 1997.

Fue desarrollado por el grupo de trabajo HTTP de Internet Engineering Task Force (IETF) httpbis (donde "bis" significa "dos veces") y publicado como RFC 7540 [ 03 ] mayo 2015.

Adopción HTTP / 2

HTTP / 2 ha sido cada vez más adoptado por los sitios web en funcionamiento desde su publicación oficial. El servicio de encuestas en línea W3Techs [ 04 ] señala que desde septiembre de 2017 hasta septiembre de 2018, el soporte HTTP / 2 aumentó del 16% al 30% de todos los sitios web monitoreados.

Además, los principales navegadores (por ejemplo, Chrome, Firefox, Edge, etc.) ya brindan soporte completo para HTTP / 2 [ 05 ]. (Algunos incluso desarrollaron implementaciones experimentales antes de que HTTP / 2 fuera aceptado como estándar).

Esta adopción generalizada significa que HTTP / 2 tiene el potencial de convertirse en el protocolo de comunicaciones de facto de la Web.

Motivación detrás de HTTP / 2

httpbis'carta [ 06 ] menciona varios componentes de HTTP / 1.1 que podrían mejorarse como motivación para HTTP / 2. Sin embargo, el objetivo principal del grupo era disminuir la latencia percibida por el usuario final.

Hacer esto, httpbis consideró minimizar la sobrecarga del ancho de banda a través de la compresión del encabezado y las técnicas agresivas de captación previa (por ejemplo, empuje del servidor), al mismo tiempo que intentaba abordar sistemáticamente problemas de rendimiento conocidos, como la congestión de la conexión y el problema de bloqueo del Jefe de línea (HoL) [ 07 ].

Además, se requería que HTTP / 2 fuera compatible con versiones anteriores, lo que significa que tenía que usar los mismos verbos de método, códigos de estado, URI y (la mayoría) campos de encabezado encontrados en HTTP / 1.1. HTTP / 2 también tuvo que diseñarse para admitir casos de uso HTTP comunes, como navegadores web de escritorio y móviles, interfaces de programación, proxies y firewalls.

Para mantener esta compatibilidad, el grupo de trabajo desarrolló un mecanismo de negociación de protocolo que permitiría a los clientes y servidores seleccionar entre protocolos HTTP / 1.1, HTTP / 2 o incluso no HTTP.

Entonces, ¿qué hay de nuevo en HTTP / 2?

HTTP / 2 todavía utiliza los mismos esquemas URI y números de puerto utilizados en HTTP / 1.1 (es decir, el puerto 80 para http URI y puerto 443 para https URI), pero muchas cosas se hacen de manera diferente bajo el capó.

El cambio más fundamental es la introducción de marcos como la unidad de datos básica de HTTP / 2.

HTTP / 1.1 usa tradicionalmente paquetes para representar datos de la red. Un cliente construye un paquete de solicitud con un verbo de método (p. Ej. GET or POST), agregando una lista de encabezados que describen la conexión y un cuerpo que contiene datos de la aplicación.

Al recibir un paquete de solicitud, un servidor HTTP / 1.1 responde con un paquete de respuesta similar que contiene la información solicitada. Como resultado, cada ciclo de solicitud y respuesta requiere una nueva conexión.

Por el contrario, los clientes HTTP / 2 establecen una única conexión de red con el servidor, que utilizan para todas las comunicaciones de red posteriores. Los encabezados, los datos del usuario, los mensajes de error y cualquier información de este tipo se empaquetan en distintas estructuras de datos binarios llamadas tramas, antes de transmitirse a través de la red.

Esto parece un pequeño cambio, pero tiene implicaciones significativas.

Compresión de encabezado

Una gran ventaja de usar marcos es que los encabezados HTTP / 2 están empaquetados en un HEADER frame, que se puede comprimir utilizando métodos de compresión normales. Los encabezados deben transferirse antes de cualquier dato, por lo que la compresión del encabezado puede disminuir la sobrecarga de ancho de banda impuesta por HTTP / 2.

La compresión de encabezado, junto con el siguiente rendimiento que mejora las características HTTP / 2, puede ser especialmente útil en aplicaciones móviles o de Internet de las cosas (IOT), donde se requiere un uso mínimo de la red.

Streams y multiplexación

Una secuencia independiente de tramas semánticamente relevantes se denomina stream. El punto final (es decir, cliente o servidor) que los creó les asigna un identificador único, de modo que otros puntos finales puedan distinguir entre ellos.

Los puntos finales pueden intercalar tramas de varias secuencias a través de la misma conexión HTTP / 2, lo que permite que una única conexión de red admita varias secuencias abiertas simultáneamente. Este proceso se denomina multiplexación [ 08 ].

La reutilización de la misma conexión mitiga problemas como la congestión de la conexión y el problema de HoL mencionado anteriormente, y ofrece un mejor rendimiento y una experiencia de usuario más fluida que las versiones HTTP anteriores.

Dependencia de transmisión y priorización

La gestión de múltiples secuencias simultáneas significa que algunas secuencias se procesarán antes que otras. HTTP / 2 permite al desarrollador (o administrador) ajustar este comportamiento con una característica llamada dependencia de flujo.

Una secuencia puede depender de la transferencia completa de otra secuencia antes de que se maneje. Por ejemplo, en un sitio donde el contenido principal de una página web debe cargarse antes de cualquier recomendación para contenido similar, HTTP / 2 permite que la secuencia de recomendaciones se cree como dependiente de la secuencia de contenido principal.

HTTP / 2 también es compatible priorización de flujo. Es decir, a cada secuencia se le puede asignar una prioridad para sugerir con qué urgencia los puntos finales deben asignar recursos para manejar las tramas de la secuencia.

La priorización y la dependencia de flujo ayudan a los desarrolladores y propietarios de sitios web a optimizar el uso de la red de su sitio, lo que puede mejorar significativamente la experiencia del usuario de su sitio.

Empuje el servidor

Por último, HTTP / 2 puede mejorar el rendimiento de un sitio web proporcionando la funcionalidad "push". Un servidor web HTTP / 2 puede responder con datos para más consultas de las que el cliente solicitó originalmente. Esto permite que el servidor proporcione datos que sabe que un navegador web necesitará para representar una página, sin esperar a que el navegador examine la primera respuesta y, por lo tanto, sin la sobrecarga de un ciclo de solicitud adicional.

El empuje del servidor brinda a los desarrolladores un control completo sobre la cantidad de solicitudes requeridas para que un navegador represente su sitio web. Cuando se usa correctamente, esta característica puede minimizar la sobrecarga de la red.

Naturalmente, el mal uso de la función push también puede desperdiciar más ancho de banda del que realmente es necesario. Por esta razón, HTTP / 2 permite que un cliente solicite que se deshabilite la inserción del servidor cuando se negocia por primera vez una conexión.

Seguridad HTTP / 2

Si ha leído hasta este punto, debería quedar claro que los desarrolladores de HTTP / 2 realmente se esforzaron en mejorar el rendimiento. Sin embargo, cabe señalar que HTTP / 2 también puede ayudar a mejorar la seguridad general de los usuarios del navegador.

Más específicamente, HTTP / 2 se define tanto para los URI de HTTP (es decir, sin cifrado) como para los URI de HTTPS (más de TLS canales encriptados). Aunque el estándar en sí no requiere el uso de encriptación, todas las implementaciones principales del navegador (es decir, Firefox [ 09 ], Chrome, Safari, Opera, IE, Edge) han decidido que lo harán , solamente soporte HTTP / 2 sobre TLS.

De hecho, los navegadores distinguen entre texto claro HTTP / 2 y HTTP / 2 sobre cifrado TLS como dos protocolos diferentes Se llama HTTP / 2 cifrado h2 y texto claro h2c. Al momento de escribir este artículo, ninguno de los principales navegadores admite h2c , Lo que significa que TLS El cifrado es obligatorio para que un sitio web aproveche las otras ventajas de HTTP / 2. Por lo tanto, cuando HTTP / 2 se convierte en el protocolo de red web predeterminado, los propietarios de sitios web heredados que aún no se han actualizado a SSL /TLS, estará fuertemente motivado para hacerlo finalmente.

Conclusión

La adopción generalizada de HTTP / 2 generará una Web nueva y mejorada. Es más rápido, necesita menos ancho de banda y ayuda a los sitios web a mantenerse seguros. Su adopción generalizada seguramente hará que la experiencia general del usuario web sea más fluida y segura.

Obtenga un certificado hoy y únase a nosotros en el futuro.

Referencias

  1. Protocolo HTTP
  2. Protocolo SPDY
  3. Especificación HTTP / 2
  4. Encuesta de adopción de HTTP / 3 de W2Techs
  5. Adopción de HTTP / 2 en navegadores
  6. carta httpbis
  7. Bloqueo HOL
  8. Multiplexación
  9. Firefox en HTTP / 2

Suscríbase al boletín de SSL.com

No te pierdas los nuevos artículos y actualizaciones de SSL.com

Manténgase informado y seguro

SSL.com es líder mundial en ciberseguridad, PKI y certificados digitales. Regístrese para recibir las últimas noticias, consejos y anuncios de productos de la industria de SSL.com.

Nos encantaría recibir tus comentarios

Responda nuestra encuesta y háganos saber lo que piensa sobre su compra reciente.