Sobes.tech
Middle

Qual é a diferença entre HTTP/1 e HTTP/2?

sobes.tech IA

Resposta da IA

Principais diferenças:

  • Multiplexação. HTTP/2 permite enviar e receber múltiplas requisições e respostas através de uma única conexão TCP simultaneamente. HTTP/1.1 exigia uma conexão separada para cada requisição/resposta (exceto nos casos em que o mecanismo de pipelining era utilizado, com limitações).
  • Compressão de cabeçalhos. HTTP/2 usa compressão de cabeçalhos com o algoritmo HPACK para reduzir o seu tamanho e a quantidade de dados transmitidos. Em HTTP/1.1, os cabeçalhos são enviados em texto plano.
  • Priorização de fluxos. Em HTTP/2, o cliente pode indicar prioridades para diferentes fluxos (requisições/respostas), permitindo ao servidor otimizar a ordem de entrega dos dados. HTTP/1.1 não possui esse mecanismo.
  • Push do servidor. HTTP/2 permite ao servidor enviar recursos ao cliente antes de este os solicitar, baseando-se na suposição de sua necessidade para exibir a página. Em HTTP/1.1, o cliente deve solicitar explicitamente cada recurso.
  • Formato de quadros. HTTP/2 transmite dados em formato binário (quadros), o que facilita a análise e aumenta a eficiência em comparação com o formato de texto do HTTP/1.1.

Comparação em tabela:

Característica HTTP/1.1 HTTP/2
Conexão Uma conexão por requisição (sem pipelining) Uma conexão para múltiplos fluxos
Multiplexação Não (ou limitada por pipelining) Sim
Compressão de cabeçalhos Não HPACK (compressão binária)
Priorização de fluxos Não Sim
Push do servidor Não Sim
Formato de dados Texto Binário (quadros)
Bloqueio Head-of-Line Presente Parcialmente resolvido por multiplexação

Exemplo de requisição em HTTP/1.1:

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

Exemplo de representação parcial de dados em HTTP/2 (a troca de quadros é mais complexa e não é tão facilmente ilustrada):

// No HTTP/2, a interação ocorre ao nível de quadros (HEADERS, DATA, etc.),
// que são binários e ocultos ao usuário no nível da aplicação.
// É difícil representá-los em texto simples apenas para ilustração.
// Os cabeçalhos são comprimidos e transmitidos no quadro HEADERS.
// O corpo da resposta é transmitido em quadros DATA.