HTTP/3 é a terceira e a próxima versão principal do Protocolo de Transferência de Hipertexto usado para trocar informações na World Wide Web, junto com HTTP/1.1 e HTTP/2.[1]

HTTP/3
Padrão internacional Hypertext Transfer Protocol Version 3 (HTTP/3) (draft)
Desenvolvido por IETF
Introduzido Internet Draft desde junho de 2021

A semântica HTTP é consistente em todas as versões: os mesmos métodos de solicitação, códigos de estado 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. HTTP/1.1 e HTTP/2 usam o TCP como o transporte deles. O HTTP/3 usa o QUIC, um protocolo de rede da camada de transporte que usa o controle de congestionamento no espaço de usuário sobre o User Datagram Protocol (UDP). A mudança para o QUIC visa corrigir um grande problema do HTTP/2 chamado "bloqueio de cabeça de fila": 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 faz com que todas as transações ativas sejam paralisadas, independentemente de qual 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.[2][3][4][5]

Em junho de 2021, o protocolo HTTP/3 ainda é oficialmente um Internet Draft, mas já é suportado por 71% dos navegadores web ativos[6] e, de acordo com a W3Techs, 19,6% dos 10 milhões de sites principais.[7] Tem sido suportado pelo Google Chrome (incluindo Chrome para Android e Microsoft Edge, que é baseado nele)[8] desde abril de 2020 e pelo Mozilla Firefox desde maio de 2021.[6][9] Safari 14 (no macOS Big Sur) também implementou o protocolo, mas o suporte está escondido por trás de um sinalizador de recurso.

História editar

HTTP/3 é um Internet Draft adotado pelo QUIC working group. A proposta original foi denominada "HTTP/2 Semantics Using The QUIC Transport Protocol",[10] e posteriormente denominada "Hypertext Transfer Protocol (HTTP) over QUIC".[11]

Em 28 de outubro de 2018, em discussão numa lista de correio, Mark Nottingham, presidente dos Working Groups do HTTP e do QUIC do IETF, propôs renomear HTTP-sobre-QUIC para HTTP/3 para "identificá-lo claramente como outra ligação da semântica HTTP para o protocolo de ligação ... para que as pessoas entendam sua separação do QUIC".[12] A proposta de Nottingham foi aceita por outros membros da IETF alguns dias depois. O HTTP working group é autorizado a auxiliar o QUIC working group durante o projeto do HTTP/3 e, em seguida, assumir a responsabilidade pela manutenção após a publicação.[13]

O suporte ao HTTP/3 foi adicionado ao Chrome (versão Canary) em setembro de 2019[2][3][4][5] e finalmente chegou nas versões estáveis, mas foi desabilitado por um sinalizador de recurso. Ele foi ativado 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[2][3][4][5][6][14][15] e ele foi habilitado por padrão em abril de 2021 no Firefox 88.[6][9] O suporte experimental para HTTP/3 foi adicionado ao Safari Technology Preview em 8 de abril de 2020[16] e foi programado para ser lançado oficialmente com o Safari 14 que vem com o macOS 11,[17] mas ele ainda está desabilitado por padrão.

Implementações editar

Cliente editar

Navegador editar

Suporte de navegador para o HTTP/3
Navegador Versão implementada (desabilitado por padrão) Versão lançada (habilitado por padrão)
Chrome Estável (79) Dezembro de 2019 87[18] Abril de 2020[8]
Firefox Estável (72.0.1) Janeiro de 2020 88[9] Abril de 2021[19]
Safari Safari Technology Preview 104 Abril de 2020
Edge 87 Abril de 2020

Bibliotecas editar

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

Suporte de biblioteca para o HTTP/3
Nome Cliente Servidor Linguagem de programação Organização Repositório
http Sim Sim Rust https://github.com/hyperium/http
quiche Sim Sim Rust Cloudflare https://github.com/cloudflare/quiche
neqo Sim Sim Rust Mozilla https://github.com/mozilla/neqo
quinn Sim Sim Rust https://github.com/quinn-rs/quinn
proxygen Não 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
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[21][22] Sim Não C https://github.com/curl/curl
MsQuic[23] Sim Sim C Microsoft https://github.com/microsoft/msquic
Quic.NET Sim Sim C# https://github.com/Vect0rZ/Quic.NET
Flupke Sim Não Java https://bitbucket.org/pjtr/flupke
aioquic Sim Sim Python https://github.com/aiortc/aioquic
quic-go Sim Sim Go https://github.com/lucas-clemente/quic-go
http3 Sim Sim Haskell https://github.com/kazu-yamamoto/http3

Servidor editar

  • O Litespeed Web Server suporta HTTP/3 draft 32.[24]
  • O suporte do nginx para o HTTP/3 está sendo desenvolvido. Uma prévia da tecnologia do nginx com suporte a HTTP/3 foi lançada em junho de 2020.[25]
  • A Cloudflare distribui um patch para nginx que integra a biblioteca HTTP/3 quiche nele.[26]
  • O servidor web Caddy tem suporte experimental para o HTTP/3 a partir de 2.0 beta 17.[27]

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

Ver também editar

Referências

  1. Bishop, Mike (21 de fevereiro de 2020). «Hypertext Transfer Protocol Version 3 (HTTP/3)» (em inglês). IETF 
  2. a b c Paulo Higa (27 de setembro de 2019). «HTTP/3 está chegando para tornar sua internet mais rápida e segura». Tecnoblog. Consultado em 19 de junho de 2021 
  3. a b c Claudio Yuge (27 de setembro de 2019). «HTTP/3 promete web mais rápida e já tem suporte do Chrome, Firefox e Cloudflare». Canaltech. Consultado em 19 de junho de 2021 
  4. a b c Pedro Pinto (13 de novembro de 2018). «HTTP/3 já está a caminho da Internet e deixará o protocolo TCP de fora». Pplware. Consultado em 19 de junho de 2021 
  5. a b c Tonino Jankov (29 de abril de 2019). «O Que É HTTP/3 – A Verdade Sobre o Novo Protocolo Baseado em UDP». Blog Kinsta. Consultado em 19 de junho de 2021 
  6. a b c d «Can I use... Support tables for HTML5, CSS3, etc». caniuse.com (em inglês). Consultado em 19 de junho de 2021 
  7. «Usage of HTTP/3 for websites». World Wide Web Technology Surveys (em inglês). W3Techs. Consultado em 19 de junho de 2021 
  8. a b «Enabling QUIC in tip-of-tree». groups.google.com (em inglês). Consultado em 19 de junho de 2021 
  9. a b c Damjanovic, Dragana (16 de abril de 2021). «QUIC and HTTP/3 Support now in Firefox Nightly and Beta». Mozilla Hacks – the Web developer blog (em inglês). Consultado em 19 de junho de 2021 
  10. Shade, Robbie (8 de julho de 2016). «HTTP/2 Semantics Using The QUIC Transport Protocol» (em inglês). IETF 
  11. Cimpanu, Catalin (12 de novembro de 2018). «HTTP-over-QUIC to be renamed HTTP/3 | ZDNet». ZDNet (em inglês). Consultado em 19 de junho de 2021 
  12. Nottingham, Mark (28 de outubro de 2018). «Identifying our deliverables». IETF Mail Archive (Lista de grupo de correio) (em inglês) 
  13. «Hypertext Transfer Protocol Charter». ietf.org (em inglês). Consultado em 19 de junho de 2021 
  14. Stenberg, Daniel. «Daniel Stenberg announces HTTP/3 support in Firefox Nightly». Twitter (em inglês). Consultado em 19 de junho de 2021 
  15. Cimpanu, Catalin (26 de setembro de 2019). «Cloudflare, Google Chrome, and Firefox add HTTP/3 support». ZDNet (em inglês). Consultado em 19 de junho de 2021 
  16. «Release Notes for Safari Technology Preview 104» (em inglês). 8 de abril de 2020. Consultado em 19 de junho de 2021 
  17. «Apple Developer Documentation». developer.apple.com (em inglês). Consultado em 19 de junho de 2021 
  18. «Can I use... Support tables for HTML5, CSS3, etc». caniuse.com (em inglês). Consultado em 19 de junho de 2021 
  19. «Firefox Release Owners - MozillaWiki». wiki.mozilla.org (em inglês). Consultado em 19 de junho de 2021 
  20. «QUIC Implementations». GitHub (em inglês). Consultado em 19 de junho de 2021 
  21. «First HTTP/3 with curl» (em inglês). Daniel Stenberg. 5 de agosto de 2019. Consultado em 19 de junho de 2021 
  22. «cURL HTTP3 wiki» (em inglês). Daniel Stenberg. 26 de setembro de 2019. Consultado em 19 de junho de 2021 
  23. «MsQuic is Open Source» (em inglês). 28 de abril de 2020. Consultado em 19 de junho de 2021 
  24. «LiteSpeed Web Server Release Log». LiteSpeed Web Server Release Log (em inglês). 17 de abril de 2020. Consultado em 19 de junho de 2021 
  25. «Introducing a Technology Preview of NGINX Support for QUIC and HTTP/3». NGINX (em inglês). 10 de junho de 2020. Consultado em 19 de junho de 2021 
  26. «Experiment with HTTP/3 using NGINX and quiche». The Cloudflare Blog (em inglês). 17 de outubro de 2019. Consultado em 19 de junho de 2021 
  27. «Release 2.0 beta 17 · caddyserver/caddy». Github (em inglês). 13 de março de 2020. Consultado em 19 de junho de 2021 
  28. «ngtcp2/nghttp3» (em inglês). 6 de agosto de 2020. Consultado em 19 de junho de 2021 – via GitHub 

Ligações externas editar