HTTP / 3 es la tercera y próxima versión principal del Protocolo de transferencia de hipertexto que se utiliza para intercambiar información en la World Wide Web , junto con HTTP / 1.1 y HTTP / 2 . [1]
Estándar internacional | Protocolo de transferencia de hipertexto versión 3 (HTTP / 3) (borrador) |
---|---|
Desarrollado por | IETF |
Introducido | Borrador de Internet a junio de 2021[actualizar] |
La semántica HTTP es coherente en todas las versiones: los mismos métodos de solicitud , códigos de estado y campos de mensajes suelen aplicarse a todas las versiones. Las diferencias están en la asignación de esta semántica a los transportes subyacentes. Tanto HTTP / 1.1 como HTTP / 2 utilizan TCP como transporte. HTTP / 3 utiliza QUIC , un protocolo de red de capa de transporte que utiliza el control de la congestión del espacio de usuario sobre el Protocolo de datagramas de usuario (UDP). El cambio a QUIC tiene como objetivo solucionar un problema importante de HTTP / 2 llamado " bloqueo de cabecera de línea ": debido a que la naturaleza paralela de la multiplexación de HTTP / 2 no es visible para los mecanismos de recuperación de pérdidas de TCP , un paquete perdido o reordenado hace que todas las transacciones activas experimenten un bloqueo independientemente de si esa transacción se vio afectada por el paquete perdido. Porque QUIC proporciona multiplexación nativa , los paquetes perdidos solo afectan las transmisiones donde se han perdido los datos.
En junio de 2021 [actualizar], el protocolo HTTP / 3 sigue siendo oficialmente un borrador de Internet, pero ya es compatible con el 71% de los navegadores web en ejecución [2] y, según W3Techs, el 19,6% de los 10 millones de sitios web principales. [3] Ha sido compatible con Google Chrome (incluido Chrome para Android y Microsoft Edge , que se basa en él) [4] desde abril de 2020 y con Mozilla Firefox desde mayo de 2021. [2] [5] Safari 14 (en macOS Big Sur ) también implementó el protocolo, pero el soporte está oculto detrás de una marca de función .
Historia
HTTP / 3 es un borrador de Internet adoptado por el grupo de trabajo QUIC. La propuesta original se denominó "Semántica HTTP / 2 mediante el protocolo de transporte QUIC", [6] y más tarde se denominó "Protocolo de transferencia de hipertexto (HTTP) sobre QUIC". [7]
El 28 de octubre de 2018, en una discusión de la lista de correo, Mark Nottingham, presidente de los grupos de trabajo IETF HTTP y QUIC, propuso cambiar el nombre de HTTP-over-QUIC a HTTP / 3, para "identificarlo claramente como otra vinculación de la semántica HTTP al protocolo de cable ... para que la gente entienda su separación de QUIC ". [8] La propuesta de Nottingham fue aceptada por otros miembros de la IETF unos días después. El grupo de trabajo HTTP está constituido para ayudar al grupo de trabajo QUIC durante el diseño de HTTP / 3 y luego asume la responsabilidad del mantenimiento después de la publicación. [9]
El soporte para HTTP / 3 se agregó a Chrome (compilación Canary) en septiembre de 2019 y luego finalmente alcanzó compilaciones estables, pero fue deshabilitado por una marca de función. Se habilitó de forma predeterminada en abril de 2020. [10] Firefox agregó soporte para HTTP / 3 en noviembre de 2019 a través de una marca de función [2] [11] [12] y comenzó a habilitarlo de forma predeterminada en abril de 2021 en Firefox 88. [2 ] [5] Se agregó soporte experimental para HTTP / 3 a Safari Technology Preview el 8 de abril de 2020 [13] y estaba programado para ser lanzado oficialmente con Safari 14 que se envía con macOS 11 , [14] pero aún está deshabilitado por defecto. [ cita requerida ]
Implementaciones
Cliente
Navegador
Navegador | Versión implementada (deshabilitada por defecto) | Versión enviada (habilitada de forma predeterminada) | ||
---|---|---|---|---|
Cromo | Construcción estable (79) | Diciembre de 2019 | 87 [15] | Abril de 2020 [16] |
Firefox | Construcción estable (72.0.1) | Enero de 2020 | 88 [5] | Abril de 2021 [17] |
Safari | Vista previa de la tecnología Safari 104 | Abril de 2020 | ||
Borde | 87 | Abril de 2020 |
Bibliotecas
Las bibliotecas de código abierto que implementan la lógica de cliente o servidor para QUIC y HTTP / 3 incluyen [18]
Nombre | Cliente | Servidor | Lenguaje de programación | Empresa | Repositorio |
---|---|---|---|---|---|
Quiche | sí | sí | Oxido | Cloudflare | https://github.com/cloudflare/quiche |
neqo | sí | sí | Oxido | Mozilla | https://github.com/mozilla/neqo |
quinn | sí | sí | Oxido | https://github.com/quinn-rs/quinn | |
proxígeno | No | sí | C ++ | https://github.com/facebook/proxygen#quic-and-http3 | |
Cronet | sí | sí | C ++ | https://github.com/chromium/chromium/tree/master/net/quic | |
lsquic | sí | sí | C | LiteSpeed | https://github.com/litespeedtech/lsquic |
nghttp3 | sí | sí | C | https://github.com/ngtcp2/nghttp3 | |
h2o | No | sí | C | https://github.com/h2o/h2o | |
libcurl [19] [20] | sí | No | C | https://github.com/curl/curl | |
MsQuic [21] | sí | sí | C | Microsoft | https://github.com/microsoft/msquic |
Quic.NET | sí | sí | C# | https://github.com/Vect0rZ/Quic.NET | |
Flupke | sí | No | Java | https://bitbucket.org/pjtr/flupke | |
aioquic | sí | sí | Pitón | https://github.com/aiortc/aioquic | |
rápido | sí | sí | Ir | https://github.com/lucas-clemente/quic-go | |
http3 | sí | sí | Haskell | https://github.com/kazu-yamamoto/http3 |
Servidor
- El servidor web Litespeed es compatible con HTTP / 3 draft 32. [22]
- Se está trabajando en el soporte de Nginx para HTTP / 3. En junio de 2020 se lanzó una vista previa de la tecnología de nginx con soporte HTTP / 3. [23]
- Cloudflare distribuye un parche para nginx que integra la biblioteca quiche HTTP / 3 en él. [24]
- El servidor web Caddy tiene soporte experimental para HTTP / 3 a partir de la versión 2.0 beta 17. [25]
Hay una serie de bibliotecas que implementan un borrador más antiguo del protocolo o las versiones de QUIC de Google (por ejemplo, Q046 utilizado en Chrome 76), como nghttp3. [26]
Ver también
- HTTP
- HTTP / 2
- QUIC
Referencias
- ↑ Bishop, Mike (2 de febrero de 2021). "Protocolo de transferencia de hipertexto versión 3 (HTTP / 3)" . tools.ietf.org . IETF . ID borrador-ietf-quic-http . Consultado el 11 de febrero de 2021 .
- ^ a b c d "Puedo usar ... Tablas de soporte para HTML5, CSS3, etc." . caniuse.com . Consultado el 4 de junio de 2021 .
- ^ "Uso de HTTP / 3 para sitios web" . Encuestas sobre tecnología de la World Wide Web . W3Techs . Consultado el 4 de junio de 2021 .
- ^ "Habilitando QUIC en punta de árbol" . groups.google.com . Consultado el 8 de abril de 2021 .
- ^ a b c Damjanovic, Dragana (16 de abril de 2021). "Soporte QUIC y HTTP / 3 ahora en Firefox Nightly y Beta" . Mozilla Hacks: el blog para desarrolladores web . Consultado el 17 de abril de 2021 .
- ^ Shade, Robbie (8 de julio de 2016). Semántica HTTP / 2 mediante el protocolo de transporte QUIC . IETF . ID borrador-sombra-quic-http2-mapeo.
- ^ Cimpanu, Catalin (12 de noviembre de 2018). "HTTP-over-QUIC será renombrado HTTP / 3 | ZDNet" . ZDNet . Consultado el 12 de noviembre de 2018 .
- ^ Nottingham, Mark (28 de octubre de 2018). "Identificación de nuestros entregables" . Archivo de correo IETF .
- ^ "Carta del Protocolo de Transferencia de Hipertexto" . ietf.org . Consultado el 2 de septiembre de 2020 .
- ^ "Habilitando QUIC en punta de árbol" . groups.google.com . Consultado el 8 de abril de 2021 .
- ^ Daniel, Stenberg. "Daniel Stenberg anuncia soporte HTTP / 3 en Firefox Nightly" . Twitter . Consultado el 5 de noviembre de 2019 .
- ^ Cimpanu, Catalin (26 de septiembre de 2019). "Cloudflare, Google Chrome y Firefox añaden compatibilidad con HTTP / 3" . ZDNet . Consultado el 27 de septiembre de 2019 .
- ^ "Notas de la versión de Safari Technology Preview 104" . 8 de abril de 2020 . Consultado el 7 de agosto de 2020 .
- ^ "Documentación para desarrolladores de Apple" . developer.apple.com . Consultado el 4 de diciembre de 2020 .
- ^ "Puedo usar ... Tablas de soporte para HTML5, CSS3, etc." . caniuse.com . Consultado el 9 de abril de 2021 .
- ^ "Habilitando QUIC en punta de árbol" . groups.google.com . Consultado el 9 de abril de 2021 .
- ^ "Propietarios de versiones de Firefox - MozillaWiki" . wiki.mozilla.org . Consultado el 9 de abril de 2021 .
- ^ "Implementaciones QUIC" . GitHub . Consultado el 8 de abril de 2021 .
- ^ "Primer HTTP / 3 con curl" . Daniel Stenberg. El 5 de agosto de 2019 . Consultado el 2 de octubre de 2019 .
- ^ "Wiki cURL HTTP3" . Daniel Stenberg. 26 de septiembre de 2019 . Consultado el 2 de octubre de 2019 .
- ^ "MsQuic es de código abierto" . 28 de abril de 2020 . Consultado el 28 de abril de 2020 .
- ^ "Registro de versiones del servidor web LiteSpeed" . Registro de versiones del servidor web LiteSpeed . 17 de abril de 2020 . Consultado el 26 de junio de 2020 .
- ^ "Presentación de una vista previa de la tecnología del soporte NGINX para QUIC y HTTP / 3" . NGINX . 10 de junio de 2020 . Consultado el 11 de junio de 2020 .
- ^ "Experimente con HTTP / 3 usando NGINX y quiche" . El blog de Cloudflare . 17 de octubre de 2019 . Consultado el 9 de noviembre de 2019 .
- ^ "Versión 2.0 beta 17 · caddyserver / caddy" . Github . 13 de marzo de 2020 . Consultado el 11 de agosto de 2020 .
- ^ "ngtcp2 / nghttp3" . 6 de agosto de 2020 . Consultado el 7 de agosto de 2020 , a través de GitHub.
enlaces externos
- Borrador de trabajo HTTP / 3 del grupo de trabajo QUIC del IETF
- HTTP / 3 en caniuse.com
- Lista de implementaciones de QUIC en el Wiki del grupo de trabajo QUIC del IETF
- Herramienta para comprobar si un sitio web es compatible con HTTP / 3