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
pipeliningera 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.