HTTP / 3 - HTTP/3

HTTP / 3
Padrão internacional Protocolo de transferência de hipertexto versão 3 (HTTP / 3) (rascunho)
Desenvolvido por IETF
Introduzido Rascunho da Internet em julho de 2021
Local na rede Internet https://quicwg.org/base-drafts/draft-ietf-quic-http.html

HTTP / 3 é a terceira e próxima versão principal do Hypertext Transfer Protocol usado para trocar informações na World Wide Web , junto com HTTP / 1.1 e HTTP / 2 .

A semântica HTTP é consistente em todas as versões: os mesmos métodos de solicitação , códigos de status e campos de mensagem são normalmente aplicáveis ​​a todas as versões. As diferenças estão no mapeamento dessas semânticas para transportes subjacentes. Ambos HTTP / 1.1 e HTTP / 2 uso TCP como o seu transporte. O HTTP / 3 usa o QUIC , um protocolo de rede da camada de transporte que usa o controle de congestionamento do espaço do usuário sobre o User Datagram Protocol (UDP). A mudança para o QUIC visa corrigir um grande problema do HTTP / 2 chamado " bloqueio frontal ": como a natureza paralela da multiplexação do HTTP / 2 não é visível aos mecanismos de recuperação de perda do TCP , um pacote perdido ou reordenado torna todos ativos transações para experimentar uma paralisação, independentemente de a transação ter sido impactada pelo pacote perdido. Como o QUIC fornece multiplexação nativa, os pacotes perdidos afetam apenas os fluxos onde os dados foram perdidos.

Em outubro de 2021, o protocolo HTTP / 3 ainda é oficialmente um Internet Draft , mas já é suportado por 73% dos navegadores em execução e, de acordo com a W3Techs, por 22% dos 10 milhões de sites principais. Ele tem suporte do Google Chrome (incluindo Chrome para Android e Microsoft Edge , que é baseado nele) desde abril de 2020 e pelo Mozilla Firefox desde maio de 2021. Safari 14 (no macOS Big Sur e iOS 14 ) também implementou o protocolo mas o suporte está escondido atrás de um sinalizador de recurso .

História

HTTP / 3 é um rascunho da Internet adotado pelo grupo de trabalho QUIC. A proposta original foi denominada "Semântica HTTP / 2 usando o protocolo de transporte QUIC" e, posteriormente, "Protocolo de transferência de hipertexto (HTTP) sobre QUIC".

Em 28 de outubro de 2018, em uma discussão de lista de e-mails, Mark Nottingham, presidente dos grupos de trabalho IETF HTTP e QUIC, propôs renomear HTTP-over-QUIC para HTTP / 3, para "identificá-lo claramente como outra ligação da semântica HTTP ao protocolo de conexão ... para que as pessoas entendam sua separação do QUIC ". A proposta de Nottingham foi aceita por outros membros da IETF alguns dias depois. O grupo de trabalho HTTP é autorizado a auxiliar o grupo de trabalho QUIC durante o design do HTTP / 3 e, em seguida, assume a responsabilidade pela manutenção após a publicação.

O suporte para HTTP / 3 foi adicionado ao Chrome (compilação Canary) em setembro de 2019 e finalmente atingiu compilações estáveis, mas foi desativado por um sinalizador de recurso. Ele foi habilitado por padrão em abril de 2020. O Firefox adicionou suporte para HTTP / 3 em novembro de 2019 por meio de um sinalizador de recurso e começou a habilitá-lo por padrão em abril de 2021 no Firefox 88. Suporte experimental para HTTP / 3 foi adicionado ao Safari Technology Preview em abril 8, 2020 e foi incluído no Safari 14 que vem com iOS 14 e macOS 11 , mas ainda está desabilitado por padrão.

Implementações

Cliente

Navegador

Suporte do navegador para HTTP / 3
Navegador Versão implementada (desativada por padrão) Versão enviada (habilitado por padrão)
cromada Construção estável (79) Dezembro de 2019 87 Abril de 2020
Raposa de fogo Construção estável (72.0.1) Janeiro de 2020 88 Abril de 2021
Safári Safari Technology Preview 104 Abril de 2020
Borda 87 Abril de 2020

Bibliotecas

Bibliotecas de código aberto que implementam lógica de cliente ou servidor para QUIC e HTTP / 3 incluem

Bibliotecas que implementam HTTP / 3
Nome Cliente Servidor Linguagem de programação Empresa Repositório
lsquic sim sim C LiteSpeed https://github.com/litespeedtech/lsquic
nghttp3 sim sim C https://github.com/ngtcp2/nghttp3
h2o Não sim C https://github.com/h2o/h2o
libcurl sim Não C https://github.com/curl/curl
MsQuic sim sim C Microsoft https://github.com/microsoft/msquic
proxygen sim sim C ++ Facebook https://github.com/facebook/proxygen#quic-and-http3
Cronet sim sim C ++ Google https://github.com/chromium/chromium/tree/master/net/quic
Quic.NET sim sim C # https://github.com/Vect0rZ/Quic.NET
rápido sim sim Ir https://github.com/lucas-clemente/quic-go
http3 sim sim Haskell https://github.com/kazu-yamamoto/http3
Kwik sim sim Java https://github.com/ptrd/kwik
Flupke sim Não Java https://bitbucket.org/pjtr/flupke
aióquico sim sim Pitão https://github.com/aiortc/aioquic
http sim sim Ferrugem https://github.com/hyperium/http
quiche sim sim Ferrugem Cloudflare https://github.com/cloudflare/quiche
neqo sim sim Ferrugem Mozilla https://github.com/mozilla/neqo
Quinn sim sim Ferrugem https://github.com/quinn-rs/quinn

Servidor

  • LiteSpeed ​​Web Server (e OpenLiteSpeed) suporta HTTP / 3 draft 32.
  • O servidor web Caddy tem suporte experimental para HTTP / 3 a partir de 2.0 beta 17.
  • O suporte Nginx para HTTP / 3 está sendo trabalhado. Uma prévia da tecnologia do nginx com suporte a HTTP / 3 foi lançada em junho de 2020.
  • Cloudflare distribui um patch para nginx que integra a biblioteca quiche HTTP / 3 nele.

Existem várias bibliotecas que implementam um rascunho mais antigo do protocolo ou versões do QUIC do Google (por exemplo, Q046 usado no Chrome 76).

Veja também

Referências

links externos