Hospedagem de sites

HTTP/2 e HTTP/3

Definição

HTTP/2 e HTTP/3 são as versões recentes do protocolo da web. O HTTP/2 faz muitas requisições circularem em paralelo em uma única conexão TCP, na forma de frames binários com cabeçalhos comprimidos; o HTTP/3 mantém esse princípio, mas usa o QUIC, sobre UDP, para que um pacote perdido só atrase o próprio fluxo.

HTTP/2 e HTTP/3, Hospedagem de sites

Uma página do WordPress raramente é um arquivo só: vem o HTML e depois dezenas de folhas de estilo, scripts, imagens e fontes. No HTTP/1.1, cada conexão trata uma requisição por vez, o que obriga o navegador a abrir várias conexões e a fazer fila. O HTTP/2 e depois o HTTP/3 foram criados para transportar essas muitas trocas pequenas com mais eficiência, sem mudar nada no significado das requisições: métodos, códigos de resposta e cabeçalhos continuam os mesmos.

HTTP/2: a multiplexação

O HTTP/2, hoje descrito pela RFC 9113 (que substitui a RFC 7540), divide as mensagens em frames binários. Cada troca vira um fluxo (stream), e muitos fluxos circulam ao mesmo tempo em uma única conexão: um fluxo lento não impede mais os outros de avançar. Os cabeçalhos, muito repetitivos de uma requisição para outra, são comprimidos pelo HPACK.

A RFC reconhece um limite: o bloqueio de cabeça de fila (head-of-line blocking) do TCP não foi resolvido. Se um pacote se perde, o TCP segura tudo o que vem depois até a retransmissão, e todos os fluxos esperam. Para HTTP/2 sobre TLS, a norma exige TLS 1.2 ou mais recente, e a documentação do Apache lembra que a maioria dos navegadores só fala HTTP/2 com endereços https.

Comparação em três colunas. HTTP/1.1: texto, uma requisição por vez em cada conexão, o navegador abre várias conexões TCP, cabeçalhos repetidos em texto puro. HTTP/2: frames binários, muitos fluxos multiplexados em uma única conexão TCP, cabeçalhos comprimidos pelo HPACK, mas um pacote TCP perdido bloqueia todos os fluxos. HTTP/3: a mesma multiplexação sobre QUIC em cima do UDP, criptografia TLS 1.3 integrada, compressão QPACK, um pacote perdido só atrasa o seu fluxo, anunciado pelo cabeçalho Alt-Svc.
O HTTP/2 agrupa as requisições em uma conexão; o HTTP/3 troca de transporte para eliminar o bloqueio causado pelo TCP.

HTTP/3: trocar de transporte

O HTTP/3 (RFC 9114) mantém o mesmo modelo, mas sobre o QUIC (RFC 9000), um protocolo de transporte seguro que trafega em datagramas UDP. O próprio QUIC gerencia os fluxos: eles são independentes, e uma perda só atrasa o fluxo afetado. A criptografia TLS 1.3 faz parte do handshake, o que reduz o número de idas e voltas antes do primeiro byte, e uma conexão pode sobreviver a uma troca de rede, do Wi-Fi para o 4G, por exemplo. A compressão dos cabeçalhos passa a ser o QPACK.

O navegador descobre o HTTP/3 pelo cabeçalho Alt-Svc, enviado em uma primeira conexão em HTTP/2 ou HTTP/1.1: ele indica que o mesmo site também responde em h3, em uma porta UDP. Se um firewall bloquear o UDP, o navegador simplesmente continua no HTTP/2.

Vídeo: “A evolução do protocolo HTTP. Do HTTP/1 ao HTTP/1.1 ao HTTP/2 ao HTTP/3.” (vadebyte)

No WordPress

  • Confira a versão usada na aba Rede das ferramentas de desenvolvedor do navegador (coluna Protocolo: h2 ou h3).
  • O mais simples muitas vezes é uma CDN, que fala HTTP/3 com os visitantes qualquer que seja o seu servidor. O LiteSpeed também oferece; no Nginx, o módulo HTTP/3 existe desde a versão 1.25.0 e a documentação ainda o apresenta como experimental.
  • No Apache, o HTTP/2 passa pelo mod_http2 e pela diretiva Protocols h2 http/1.1; a documentação recomenda o MPM event, porque com o prefork uma conexão só trata uma requisição por vez.
  • Libere a porta UDP 443 no firewall do servidor se você mesmo ativar o HTTP/3.

O efeito no desempenho depende do site, da rede e da quantidade de arquivos; os sinais de desempenho considerados pelo Google são tratados no nosso artigo HTTPS, HSTS e cabeçalhos de segurança.

Para saber mais

  • Artigo HTTPS, HSTS e cabeçalhos de segurança: o que o Google realmente leva em conta

Fontes

  1. RFC 9113: HTTP/2 (link externo, abre em uma nova aba)
  2. RFC 9114: HTTP/3 (link externo, abre em uma nova aba)
  3. RFC 9000: QUIC, A UDP-Based Multiplexed and Secure Transport (link externo, abre em uma nova aba)
  4. Apache HTTP Server: HTTP/2 guide (link externo, abre em uma nova aba)

Todas as definições

Segurança WordPress, sem ruído

Um e-mail quando importa: novos ataques observados, atualizações do plugin e guias práticos. Sem spam, cancelamento com um clique.

Comece de graça e mude para o Pro quando estiver pronto

A versão gratuita já oculta o WordPress e muda o endereço da página de login. O Pro acrescenta aliases, verificação em duas etapas e monitoramento.