HTTP / 2


HTTP / 2 (originalmente llamado HTTP / 2.0 ) es una revisión importante del protocolo de red HTTP utilizado por la World Wide Web . Se deriva del protocolo SPDY experimental anterior, desarrollado originalmente por Google . [1] [2] HTTP / 2 fue desarrollado por HTTP Working Group (también llamado httpbis, donde " bis " significa "dos veces") del Internet Engineering Task Force (IETF). [3] [4] [5] HTTP / 2 es la primera versión nueva de HTTP desde HTTP / 1.1, que se estandarizó en RFC 2068 en 1997. El Grupo de Trabajo presentó HTTP / 2 al Internet Engineering Steering Group (IESG) para su consideración como estándar propuesto en diciembre de 2014, [6] [7] e IESG aprobó su publicación como estándar propuesto el 17 de febrero de 2015 (y se actualizó en febrero de 2020 con respecto a TLS 1.3 ) . [8] [9] La especificación HTTP / 2 se publicó como RFC 7540 el 14 de mayo de 2015. [10] 

El esfuerzo de estandarización fue apoyado por los navegadores Chrome , Opera , Firefox , [11] Internet Explorer 11 , Safari , Amazon Silk y Edge . [12] La mayoría de los principales navegadores habían agregado compatibilidad con HTTP / 2 a fines de 2015. [13] Aproximadamente el 97% de los navegadores web utilizados tienen la capacidad. [14] En octubre de 2021 , el 47% (después de superar un poco más del 50%) de los 10 millones de sitios web principales admitían HTTP / 2. [15]

Su sucesor propuesto es HTTP / 3 , una revisión importante que se basa en los conceptos establecidos por HTTP / 2. [2] [16] [17] [18]

Los cambios propuestos no requieren ningún cambio en el funcionamiento de las aplicaciones web existentes, pero las nuevas aplicaciones pueden aprovechar las nuevas funciones para aumentar la velocidad. [19] HTTP / 2 deja toda la semántica de alto nivel de HTTP / 1.1, como métodos , códigos de estado , campos de encabezado y URI , igual. Lo nuevo es cómo se enmarcan y transportan los datos entre el cliente y el servidor. [19]

Los sitios web que son eficientes minimizan la cantidad de solicitudes necesarias para representar una página completa al minimizar (reducir la cantidad de código y empaquetar piezas más pequeñas de código en paquetes, sin reducir su capacidad de funcionamiento) recursos como imágenes y scripts. Sin embargo, la minificación no es necesariamente conveniente ni eficiente y aún puede requerir conexiones HTTP separadas para obtener la página y los recursos minificados. HTTP / 2 permite al servidor "enviar" contenido, es decir, responder con datos para más consultas de las que solicitó el cliente. Esto permite que el servidor proporcione datos que sabe que un navegador web necesitará para representar una página web, sin esperar a que el navegador examine la primera respuesta y sin la sobrecarga de un ciclo de solicitud adicional. [20]

Las mejoras de rendimiento adicionales en el primer borrador de HTTP / 2 (que era una copia de SPDY) provienen de la multiplexación de solicitudes y respuestas para evitar algunos de los problemas de bloqueo del encabezado de línea en HTTP 1 (incluso cuando se usa la canalización HTTP ), compresión de encabezados y priorización de solicitudes. [21] Sin embargo, como HTTP / 2 se ejecuta en la parte superior de una única conexión TCP, todavía existe la posibilidad de que se produzca un bloqueo de cabecera si los paquetes TCP se pierden o se retrasan en la transmisión. [22] HTTP / 2 ya no admite el mecanismo de codificación de transferencia fragmentada de HTTP / 1.1 , ya que proporciona sus propios mecanismos más eficientes para la transmisión de datos. [23]