¿Qué es HTTP / 2 y cómo afecta el futuro de Internet?

¿Qué es HTTP / 2 y cómo afecta el futuro de Internet? / Tecnología explicada

Es posible que no hayas oído hablar de HTTP / 2 todavía, pero es la actualización más reciente de HTTP. El nuevo estándar de protocolo introduce algunos conceptos nuevos y hace que la comunicación entre servidores y aplicaciones sea más rápida y eficiente..

¿Qué es HTTP / 2?

HyperText Transfer Protocol Versión 2, o HTTP / 2, es la primera actualización importante a HTTP en 15 años.

El estándar de protocolo anterior, HTTP / 1.1, ha estado en uso desde 1997 y utiliza una combinación de soluciones torpes para mejorar las limitaciones de HTTP..

Se basa en SPDY (“rápido”), un experimento de código abierto iniciado por Google para abordar algunos de los problemas y limitaciones de HTTP / 1.1

El Grupo de trabajo de ingeniería de Internet (IETF) especifica los cambios como este en el Protocolo de transferencia de hipertexto versión 2, borrador 17:

“HTTP / 2 permite un uso más eficiente de los recursos de red y una menor percepción de la latencia al introducir la compresión del campo del encabezado y permitir múltiples intercambios simultáneos en la misma conexión [...]

“También permite la priorización de solicitudes, permitiendo que las solicitudes más importantes se completen más rápidamente, mejorando aún más el rendimiento.”

“HTTP / 2 también permite un procesamiento más eficiente de los mensajes mediante el uso de la trama de mensajes binarios.”

“Esta especificación es una alternativa a la sintaxis de mensajes HTTP / 1.1, pero no está obsoleta. La semántica existente de HTTP se mantiene sin cambios.”

HTTP / 2 está basado en SPDY

Para 2012, la mayoría de los navegadores modernos y muchos sitios populares (Google, Twitter, Facebook, etc.) ya eran compatibles con SPDY. A medida que aumentaba la popularidad de SPDY, el Grupo de Trabajo HTTP (HTTP-WG) comenzó a trabajar en la actualización del estándar HTTP.

Desde este punto en adelante, SPDY se convirtió en la base y rama experimental de las nuevas características en HTTP / 2. En ese momento, examinamos cómo SPDY puede mejorar la navegación ¿Qué es SPDY y cómo puede maximizar su experiencia de navegación? ¿Qué es SPDY y cómo puede maximizar su experiencia de navegación? Lee mas . Desde entonces, el estándar de la versión 2 fue redactado, aprobado y publicado..

Muchas de las características de SPDY se incorporaron a HTTP / 2, y Google finalmente dejó de admitir este protocolo a principios de 2016.

La mayoría de los navegadores dejaron de admitir SPDY y, como no hay alternativas, HTTP / 2 se está convirtiendo en el estándar de facto..

Si bien el estándar de protocolo HTTP / 2 no es estrictamente compatible con HTTP / 1, la compatibilidad se puede lograr a través de la traducción. Un cliente solo HTTP / 1.1 no entenderá un servidor solo HTTP / 2 y viceversa, por lo que la nueva versión del protocolo es HTTP / 2 y no HTTP / 1.2.

Dicho esto, una parte importante del trabajo proporcionado por HTTP-WG es asegurarse de que HTTP / 1 y HTTP / 2 se puedan traducir de un lado a otro sin pérdida de información..

Cualquier nuevo mecanismo o característica introducida también será independiente de la versión y será compatible con la web existente.

HTTP / 2 no es realmente algo que un usuario pueda implementar, pero hay cosas que podemos hacer para afectar nuestra velocidad de navegación. ¿Crees en alguno de estos mitos comunes para acelerar tu velocidad de internet? 5 mitos sobre el aumento de la velocidad de Internet y por qué no funcionan 5 mitos sobre el aumento de la velocidad de Internet y por qué no funcionan La velocidad de Internet es una medida fundamental en el siglo XXI. Sin embargo, hay mucha información errónea en línea acerca de cómo hacer que su conexión sea más rápida. Aquí hay cinco mitos que no deberías creer. Lee mas

Los beneficios y características de HTTP / 2

HTTP / 2 viene con algunas actualizaciones excelentes para el estándar HTTP. Algunos de los más importantes son el encuadre binario, la multiplexación, la priorización de flujos, el control de flujo y el empuje del servidor..

Encuadre binario

Los mensajes HTTP de mfuji09 están bajo la licencia CC-BY-SA 2.5.

Tras la actualización a HTTP2 /, la comunicación del protocolo HTTP se divide en un intercambio de marcos codificados en binario. Estos marcos se asignan a mensajes que pertenecen a un flujo en particular. Las secuencias se multiplexan (se tejen juntas en un sentido) en una sola conexión TCP.

La nueva capa de encuadre binario introduce una nueva terminología; Streams, Mensajes y Marcos.

  • Los flujos son flujos bidireccionales de bytes que llevan uno o más mensajes.
  • Cada uno de estos flujos tiene un identificador único y puede transmitir mensajes bidireccionales utilizando información de prioridad opcional..
  • Los marcos son la unidad de comunicación más pequeña en HTTP / 2 que contienen conjuntos específicos de datos (encabezados HTTP, cargas útiles de mensajes, etc.). El encabezado identificará como mínimo el flujo al que pertenece el marco.
  • Los mensajes son un conjunto completo de marcos que se asignan a una solicitud lógica o un mensaje de respuesta.
  • Cada mensaje es un mensaje HTTP lógico, como una solicitud o respuestas, compuesto de uno o más marcos.

Esto nos permite usar una sola conexión TCP, por lo que en el pasado se requerían múltiples.

Multiplexación

HTTP / 1.1 garantiza que solo se pueda entregar una respuesta a la vez por conexión. Y el navegador abrirá conexiones TCP adicionales si el cliente desea realizar varias solicitudes paralelas.

HTTP / 2 elimina esta limitación de HTTP / 1.1 y habilita las solicitudes completas y la multiplexación de respuestas. Esto significa que el cliente y el servidor pueden dividir un mensaje HTTP en marcos independientes, que luego se entrelazan y se vuelven a ensamblar en el otro extremo.

En general, esta es la mejora más importante de HTTP / 2, ya que eliminará en parte la necesidad de múltiples conexiones. Esto a su vez introducirá numerosos beneficios de rendimiento en todas las tecnologías web.

El número reducido de conexiones significa menos protocolos de enlace de Seguridad de la capa de transporte (TLS), una mejor reutilización de la sesión y una reducción general de los requisitos de recursos del cliente y del servidor. Esto hace que las aplicaciones sean más rápidas, más sencillas y más baratas de implementar.

Los sitios web con muchos activos externos (imágenes o scripts) verán las mayores ganancias de rendimiento de la multiplexación HTTP / 2.

Priorización y Dependencia de Arroyos

Las mejoras adicionales de los flujos multiplexados se realizan con dependencias de peso y flujo. HTTP / 2 nos permite dar un peso a cada flujo (un valor entre 1 y 256) y hacerlo explícitamente dependiente de otro flujo.

Esta combinación de dependencia y peso lleva a la creación de un árbol de priorización, que le dice al servidor cómo preferiría el cliente recibir respuestas.

El servidor usará la información en el árbol de priorización para controlar la asignación de CPU, memoria y otros recursos, así como la asignación de ancho de banda para garantizar que el cliente reciba la entrega óptima de respuestas de alta prioridad.

Control de flujo

Los problemas con el control de flujo en HTTP / 2 son similares a HTTP / 1.1. Sin embargo, dado que las secuencias HTTP / 2 se multiplexan dentro de una sola conexión TCP, la forma en que funciona el control de flujo en HTTP / 1.1 ya no es eficiente.

En resumen, el control de flujo es necesario para detener las corrientes que interfieren entre sí y causar un bloqueo. Esto hace posible la multiplexación. HTTP / 2 permite el uso de una variedad de algoritmos de control de flujo, sin requerir cambios de protocolo.

No se especifica ningún algoritmo para el control de flujo en HTTP / 2. En su lugar, se ha proporcionado un conjunto de componentes básicos para ayudar a los clientes y servidores a aplicar su propio control de flujo..

Puede encontrar los detalles de estos bloques de construcción en el “Control de flujo” Sección del HTTP / 2 internet-draft..

Servidor Push

Su navegador normalmente solicitará y recibirá un documento HTML de un servidor cuando visite una página por primera vez. Luego, el servidor debe esperar a que el navegador analice el documento HTML y envíe una solicitud para los activos incrustados (CSS, JavaScript, imágenes, etc.).

En HTTP / 1.1, el servidor no puede enviar estos activos hasta que el navegador los solicite, y cada activo requiere una solicitud por separado (es decir, múltiples acuerdos y conexiones).

El empuje del servidor reducirá la latencia al permitir que el servidor envíe estos recursos sin aviso, ya que ya sabe que el cliente los requerirá. Entonces, en el ejemplo anterior, el servidor impulsará CSS, JavaScript (un lenguaje de scripting común ¿Qué es JavaScript y cómo funciona? ¿Qué es JavaScript y cómo funciona? ¿Qué es JavaScript? Es un lenguaje de programación usado para mejorar las páginas web. Incluye actualizaciones dinámicas de páginas web, interfaces de usuario y más. Analicemos de qué se trata el Javascript. Lea más en las páginas web) e imágenes en el navegador para mostrar la página más rápido..

Básicamente, la inserción del servidor permite que un servidor envíe múltiples respuestas para una sola solicitud de cliente.

Si bien de forma manual, este es el efecto que actualmente obtenemos al incluir CSS o JS en nuestros documentos HTML: estamos enviando el recurso integrado al cliente sin esperar a que el cliente lo solicite.

Este es un gran paso para alejarse del estándar HTTP actual del estricto flujo de trabajo de solicitud-respuesta uno a uno.

Las limitaciones de HTTP / 2

SPDY tenía una política de seguridad ligeramente más estricta y requería cifrado SSL para todas las conexiones. HTTPS / 2 no requiere cifrado, pero muchos servicios no servirán HTTP / 2 sin SSL.

Todos los principales navegadores admiten HTTP / 2, pero ninguno de ellos lo admitirá sin cifrado. El sitio web de CanIU tiene una excelente visión general de la tabla sobre el soporte actual del navegador para HTTP / 2, como se vio anteriormente.

La compatibilidad con versiones anteriores y las traducciones entre HTTP / 1.1 y HTTP / 2 reducirán la velocidad de carga de la página..

No hay ninguna razón real por la que el cifrado no deba ser una configuración predeterminada u obligatoria por ahora. Si ya tiene un certificado SSL en su sitio, puede mejorar la seguridad de su sitio web HTTPS habilitando HSTS.

Es HTTP / 2 la próxima gran cosa?

HTTP / 2 se propuso como estándar a mediados de 2015, y la mayoría de los navegadores agregaron soporte para finales de ese año. HTTP / 2 ya afecta la forma en que funciona Internet y cómo las aplicaciones y los servidores se comunican entre sí..

No hay requisitos para forzar el uso de HTTP / 2, pero hasta el momento solo ofrece beneficios y no presenta inconvenientes. También es un cambio bastante menor desde la perspectiva del usuario, uno que la gente realmente no notará.

De acuerdo con W3Tech, el 31.7% de los 10 millones de sitios web principales actualmente soportan HTTP / 2. La forma más rápida para que la mayoría de ustedes habilite HTTP / 2 en su sitio web es usar el CDN de Cloudflare.

El siguiente estándar propuesto (HTTP / 3) ya está en proceso y se basa en QUIC, otro proyecto experimental de Google. En octubre de este año, el HTTP-WG de IETF y el Grupo de Trabajo QUIC solicitaron oficialmente a QUIC que se convirtiera en el nuevo estándar mundial y que lo cambiara de nombre HTTP / 3.

Si tiene curiosidad, Akamai.com tiene una herramienta rápida para verificar si su navegador admite HTTP / 2. Si no es así, tal vez considere cambiar su navegador 5 Alternativas de Google Chrome para un mejor navegador en su escritorio o móvil 5 Alternativas de Google Chrome para un mejor navegador en su escritorio o Mobile Chrome es el navegador más popular del mundo. Pero todavía tiene problemas. ¿Pueden estos navegadores alternativos ser una mejor opción? Lee mas .

Explorar más sobre: ​​Redes de Computadoras, HTTP / 2, SPDY.