Sobes.tech
Middle

¿Cuál es la diferencia entre HTTP/1 y HTTP/2?

sobes.tech AI

Respuesta de la IA

Diferencias principales:

  • Multiplexación. HTTP/2 permite enviar y recibir múltiples solicitudes y respuestas a través de una sola conexión TCP simultáneamente. HTTP/1.1 requería una conexión separada para cada solicitud/respuesta (excepto en casos donde se usaba el mecanismo de pipelining, que tenía limitaciones).
  • Compresión de encabezados. HTTP/2 utiliza compresión de encabezados mediante el algoritmo HPACK para reducir su tamaño y la cantidad de datos transmitidos. En HTTP/1.1, los encabezados se envían en texto plano.
  • Priorización de flujos. En HTTP/2, el cliente puede indicar prioridades para diferentes flujos (solicitudes/respuestas), lo que permite al servidor optimizar el orden de entrega de datos. HTTP/1.1 no tiene este mecanismo.
  • Push del servidor. HTTP/2 permite al servidor enviar recursos al cliente antes de que este los solicite, basándose en la suposición de su necesidad para mostrar la página. En HTTP/1.1, el cliente debe solicitar explícitamente cada recurso.
  • Formato de tramas. HTTP/2 transmite datos en formato binario (tramas), lo que facilita el análisis y aumenta la eficiencia en comparación con el formato de texto de HTTP/1.1.

Comparación en tabla:

Característica HTTP/1.1 HTTP/2
Conexión Una conexión por solicitud (sin pipelining) Una conexión para múltiples flujos
Multiplexación No (o limitada por pipelining)
Compresión de encabezados No HPACK (compresión binaria)
Priorización de flujos No
Push del servidor No
Formato de datos Texto Binario (tramas)
Bloqueo de línea de cabeza Presente Parcialmente resuelto mediante multiplexación

Ejemplo de solicitud en HTTP/1.1:

// GET /index.html HTTP/1.1
// Host: example.com
// User-Agent: curl/7.68.0
// Accept: */*

Ejemplo de representación parcial de datos en HTTP/2 (el intercambio de tramas es más complejo y no se muestra tan fácilmente):

// En HTTP/2, la interacción se realiza a nivel de tramas (HEADERS, DATA, etc.),
// que son binarias y están ocultas al usuario en el nivel de la aplicación.
// Es difícil representarlas en texto simple solo para ilustración.
// Los encabezados se comprimen y se transmiten en la trama HEADERS.
// El cuerpo de la respuesta se transmite en tramas DATA.