Explore a evolução do protocolo HTTP, do HTTP/0.9 até o HTTP/3. Entenda as melhorias de performance, segurança e como fazer requisições HTTP com `curl` para ver tudo de perto (ou pelo menos, mais perto do que talvez você gostaria).
HTTP, o famoso Hypertext Transfer Protocol, é praticamente a cola que mantém a internet funcionando. Este protocolo define como os navegadores e servidores se comunicam para transferir dados — desde o HTML puro e simples até vídeos e aqueles pop-ups irritantes. Desde sua criação, HTTP evoluiu, passando por várias versões para lidar com as necessidades cada vez mais exageradas da web. Prepare-se para uma viagem nostálgica e levemente caótica através das versões de HTTP, das mais lentas e sofridas até as mais modernas e aceleradas.
HTTP é aquele sistema de "pedido e entrega" que acontece cada vez que você digita um endereço na barra do navegador. Funciona assim: o navegador faz uma solicitação e o servidor responde (ou pelo menos tenta). Isso é a essência do protocolo HTTP. E o mais divertido? É que ele sempre te surpreende com erros 404 e carregamentos eternos.
GET /recurso
). É como enviar um bilhete bem básico para o servidor.HTTP/1.0 trouxe uma "revolução". Ou algo perto disso.
GET
, POST
, e HEAD
. Uau, agora você podia fazer um pouco mais!Content-Type
e Status
. Com isso, o servidor finalmente começava a "falar" o que estava mandando.HTTP/1.1 foi a versão que trouxe um pouco de estabilidade para a loucura.
ETag
. Finalmente, algum controle sobre o que estava sendo mandado.HTTP/2 chega para tentar resolver o caos com um pouco de ordem e multiplexação.
HTTP/3 abandona o TCP e adota o QUIC, criando uma conexão rápida e confiável.
QUIC foi criado pelo Google para resolver os problemas do TCP. Porque, vamos ser sinceros, o TCP foi ótimo, mas seu tempo já passou.
Característica | HTTP/1.0 | HTTP/1.1 | HTTP/2 | HTTP/3 |
---|---|---|---|---|
Conexões Persistentes | Não | Sim | Sim | Sim (baseado em QUIC) |
Multiplexação | Não | Não (pipelining) | Sim | Sim |
Server Push | Não | Não | Sim | Sim |
Bloqueio de Cabeça | Sim | Sim | Sim (limitado) | Não |
Criptografia | Opcional | Opcional | Obrigatório (na prática) | Integrado |
curl
(Modo Nostálgico)Pronto para ver o HTTP em ação? Vamos fazer isso da forma antiquada, com curl
, porque nada diz "sou um programador hardcore" como linhas de comando.
Requisição Simples
1curl http://seusitefavorito.com
Só o HTML cru. Nada de CSS ou JavaScript. É a web como ela era nos anos 90.
Exibindo Apenas os Cabeçalhos
1curl -I http://seusitefavorito.com
Quem precisa do conteúdo? Vamos só ver os cabeçalhos. Dá até para imaginar que é interessante.
HTTP/2 e HTTP/3
1curl -I --http2 https://seusitefavorito.com 2curl -I --http3 https://seusitefavorito.com
Porque, se
você está em 2024, o mínimo é que o site suporte HTTP/3, certo?
Modo Verbose
1curl -v http://seusitefavorito.com
Mostra cada detalhe da conversa. Como um reality show de requisições e respostas.
Aceitando JSON
1curl -H "Accept: application/json" http://seusitefavorito.com/api
Ah, JSON, o que seríamos sem você?
E aí está! Desde o HTTP/0.9, que nem headers tinha, até o HTTP/3 com QUIC, que manda pacotes como um carro de Fórmula 1. Essa evolução do HTTP é a prova de que, com tempo e pressão, até o protocolo mais simples pode se transformar numa máquina complexa e cheia de recursos. Que bom que chegamos até aqui, mas vamos sempre ter um espaço no coração para aquelas conexões perdidas do HTTP/1.1.