Versões HTTP | Protocolo HTTP | Redes
- Versões HTTP | Protocolo HTTP | Redes

- POC realizada

Recomendações

- Artigo: 🔗 Clique aqui
Evolução do HTTP
Uma visão curta das principais versões do HTTP, com o que mudou e um exemplo simples de cada uma.
HTTP/0.9
A primeira versão do HTTP era extremamente simples.
Características
- Só suportava
GET - Não tinha headers
- Não tinha status code
- A resposta normalmente era apenas o conteúdo HTML
Exemplo de requisição
GET /index.html
Exemplo de resposta
<html>
<body>
<h1>Olá</h1>
</body>
</html>
Observação
Era praticamente uma forma de buscar páginas HTML de maneira crua.
HTTP/1.0
O HTTP/1.0 trouxe uma estrutura mais completa para requisição e resposta.
Características
- Suporte a múltiplos métodos, como
GET,POSTeHEAD - Introdução de headers
- Introdução de status codes
- Cada requisição normalmente abria e fechava uma conexão TCP
Exemplo de requisição
GET /produtos HTTP/1.0
Host: exemplo.com
User-Agent: MeuCliente/1.0
Exemplo de resposta
HTTP/1.0 200 OK
Content-Type: text/html
<h1>Lista de produtos</h1>
Problema principal
Abrir e fechar conexão para cada requisição era caro.
HTTP/1.1
Foi a versão mais usada por muitos anos e ainda é muito comum.
Características
- Conexões persistentes por padrão (
keep-alive) - Mais métodos, como
PUT,DELETE,OPTIONS,PATCH - Header
Hostobrigatório - Melhor reaproveitamento da conexão TCP
Exemplo de requisição
GET /api/clientes HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Connection: keep-alive
Exemplo de resposta
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 27
{"id":1,"nome":"Adolfo"}
Vantagem principal
Menos custo com abertura de conexão.
HTTP/2
O HTTP/2 manteve a semântica do HTTP/1.1, mas mudou a forma de transportar os dados.
Características
- Multiplexação: várias requisições na mesma conexão
- Headers binários e comprimidos
- Melhor performance
- Evita boa parte do problema de bloqueio por fila de requisições
Exemplo conceitual
No HTTP/2, o cliente pode mandar várias requisições ao mesmo tempo na mesma conexão TCP:
Stream 1 -> GET /css/site.css
Stream 3 -> GET /js/app.js
Stream 5 -> GET /img/logo.png
Exemplo equivalente de requisição
Em termos lógicos, continua parecendo HTTP normal:
GET /api/pedidos HTTP/2
Host: api.exemplo.com
Accept: application/json
Resposta
:status: 200
content-type: application/json
{"pedidoId":99}
Vantagem principal
Uma única conexão consegue carregar vários recursos ao mesmo tempo.
HTTP/3
O HTTP/3 troca o TCP por QUIC, que roda sobre UDP.
Características
- Usa QUIC em vez de TCP
- Menor latência
- Melhor recuperação em perda de pacotes
- Evita bloqueios no nível de transporte que ocorriam no TCP
- resolve limitações do TCP em cenários de perda de pacote e instabilidade
- melhora especialmente quando há:
- retransmissões
- jitter
- troca de rede
- conexão móvel/wifi ruim
Exemplo conceitual
Vários fluxos independentes dentro de uma conexão QUIC:
Stream 1 -> GET /index.html
Stream 2 -> GET /style.css
Stream 3 -> GET /script.js
Exemplo lógico de requisição
Para quem desenvolve API ou backend, continua parecido:
GET /api/usuarios HTTP/3
Host: api.exemplo.com
Accept: application/json
Exemplo de resposta
:status: 200
content-type: application/json
[{"id":1,"nome":"Maria"}]
Vantagem principal
Melhor desempenho em redes modernas, principalmente móveis e instáveis.
Resumo rápido
| Versão | Transporte | Destaque |
|---|---|---|
| HTTP/0.9 | TCP | Só GET, sem headers |
| HTTP/1.0 | TCP | Headers e status codes |
| HTTP/1.1 | TCP | Conexões persistentes |
| HTTP/2 | TCP | Multiplexação |
| HTTP/3 | QUIC/UDP | Menor latência e melhor resiliência |
Ponto importante
Do ponto de vista de quem desenvolve APIs:
HTTP/1.1,HTTP/2eHTTP/3mantêm a ideia de métodos, rota, headers e status code- o que mais muda é o protocolo de transporte e a performance
- ou seja: sua API continua parecida, mas a comunicação fica mais eficiente nas versões novas