PROTOCOLO DE APLICAÇÃO
HTTP define como pedir e como responder.
HTTP significa Hypertext Transfer Protocol. Ele começou como um protocolo para buscar hipertexto, mas hoje transporta HTML, CSS, JavaScript, imagens, vídeos, fontes, JSON e muitas outras representações. É um protocolo de aplicação baseado no modelo cliente–servidor e em trocas de requisição e resposta.
O que possui uma identidade
Uma URI identifica o alvo conceitual: um documento, usuário, produto, imagem, relatório ou até uma ação modelada pela aplicação.
O estado que atravessa a rede
O servidor não envia “o recurso em si”, mas uma representação dele: HTML, JSON, JPEG e outros formatos descritos por metadados.
Uma intenção e um resultado
O método expressa a intenção do cliente; o status comunica o resultado; headers carregam metadados; o corpo pode carregar conteúdo.
Intermediários também participam
Proxies, gateways, caches e CDNs podem encaminhar ou responder à mensagem sem mudar a semântica esperada pelo cliente.
CLIENTE, INTERMEDIÁRIO E SERVIDOR
A requisição vai; a resposta volta.
O cliente sempre inicia a troca HTTP. Um proxy ou CDN pode participar do caminho, mas continua existindo uma mensagem de requisição e uma mensagem de resposta. Percorra o diagrama para acompanhar o papel de cada componente.
Laboratório visual · Uma troca HTTP
Do endereço digitado até os recursos usados na renderização.
Início: o usuário informa uma URL. Antes da mensagem HTTP, o navegador ainda precisa localizar o endereço do servidor e estabelecer uma comunicação adequada à versão negociada.
- Interpretar a URL. O navegador separa esquema, host, porta, caminho, query e fragmento. O fragmento não é enviado na requisição HTTP.
- Preparar a conexão. Após DNS, HTTP/1.1 e HTTP/2 normalmente usam TCP; HTTPS acrescenta TLS. HTTP/3 usa QUIC sobre UDP, com segurança integrada.
- Enviar a requisição. Método e alvo expressam a intenção; headers dão contexto; algumas requisições também carregam um corpo.
- Processar no servidor. Servidor Web, aplicação, cache e banco de dados podem cooperar para produzir a representação.
- Receber a resposta. O status informa o resultado, headers descrevem a resposta e o corpo pode conter a representação solicitada.
- Descobrir dependências. Ao processar o HTML, o navegador cria outras requisições e combina os recursos para montar a interface.
ANATOMIA DA MENSAGEM
A estrutura é simples; a semântica é precisa.
A forma textual do HTTP/1.1 é a melhor maneira de aprender. HTTP/2 e HTTP/3 codificam a comunicação em frames binários, mas preservam conceitos como método, alvo, status, campos e conteúdo.
| Elemento | Na requisição | Na resposta | Pergunta respondida |
|---|---|---|---|
| Linha inicial | GET /produto HTTP/1.1 | HTTP/1.1 200 OK | O que o cliente deseja? Qual foi o resultado? |
| Headers | Accept, Authorization, Cookie | Content-Type, Cache-Control, Set-Cookie | Quais condições, formatos e metadados acompanham a troca? |
| Linha vazia | Delimita o final da seção de headers no formato textual. | Onde terminam os metadados? | |
| Corpo | JSON, formulário ou arquivo enviado, quando aplicável. | HTML, JSON, imagem ou outro conteúdo, quando aplicável. | Quais dados acompanham a mensagem? |
A troca continua
Resposta intermediária. Exemplo: 100 Continue.
A intenção foi atendida
Exemplos: 200 OK, 201 Created e 204 No Content.
Outra ação é necessária
Exemplos: 301, 302, 304 e 308.
O servidor não pode atendê-la assim
Exemplos: 400, 401, 403, 404 e 429.
O servidor falhou ao atender
Exemplos: 500, 502, 503 e 504.
Status não é apenas “sucesso ou erro”. O significado depende do método e da situação. 304 Not Modified, por exemplo, não é falha: permite reutilizar uma representação em cache. Métodos, headers, cookies e sessões serão aprofundados em uma página própria.
HTTP PROTEGIDO POR TLS
HTTPS cria um canal protegido antes de enviar HTTP.
No esquema https://, cliente e servidor estabelecem proteção criptográfica. Em HTTP/1.1 e HTTP/2, isso normalmente significa HTTP sobre TLS sobre TCP. Em HTTP/3, o QUIC incorpora o handshake TLS e oferece os serviços de transporte seguro.
“Estou falando com o servidor certo?”
O cliente valida a identidade apresentada, normalmente por uma cadeia de certificados ligada a uma autoridade certificadora confiável.
“Alguém consegue ler o conteúdo?”
Depois do handshake, chaves de sessão protegem requisições e respostas contra leitura por observadores no caminho.
“A mensagem foi alterada?”
A proteção autenticada permite detectar modificações no tráfego antes que dados adulterados sejam aceitos.
Laboratório visual · HTTP aberto × HTTPS
Acompanhe um handshake TLS 1.3 conceitual e observe o que um intermediário consegue ver.
HTTPS · preparação: antes de enviar a requisição, cliente e servidor precisam negociar parâmetros, autenticar o servidor e estabelecer chaves de sessão.
| Aspecto | HTTP | HTTPS |
|---|---|---|
| Esquema | http:// | https:// |
| Porta padrão | 80 | 443 |
| Conteúdo no caminho | Sem confidencialidade ou integridade fornecida pelo próprio esquema. | Protegido pelo canal TLS ou pela segurança integrada do QUIC. |
| Identidade do servidor | Não é autenticada criptograficamente pelo HTTP simples. | Validada pelo cliente usando certificado e regras de identidade. |
| Origem Web | http://exemplo.com e https://exemplo.com são origens diferentes, mesmo com o mesmo host. | |
EVOLUÇÃO DO TRANSPORTE
A linguagem permaneceu; a viagem ficou mais eficiente.
Métodos como GET, status como 200 e headers como Content-Type mantêm essencialmente a mesma semântica. As versões modernas alteram a codificação e a maneira de transportar várias trocas simultâneas.
HTTP/0.9
Pedido extremamente simples, voltado à obtenção de hipertexto. Não possuía a estrutura moderna de headers e status.
HTTP/1.0
Formalizou versões, status, headers, tipos de conteúdo e mensagens mais gerais. Conexões normalmente não eram persistentes.
HTTP/1.1
Conexões persistentes, Host, cache e transferências mais eficientes. A especificação atual está consolidada na RFC 9112.
HTTP/2
Frames binários, multiplexação de streams e compressão de headers sobre uma conexão, preservando a semântica HTTP.
HTTP/3
Leva a semântica HTTP ao QUIC sobre UDP, com streams independentes e segurança integrada.
Laboratório visual · Como os recursos viajam
Compare filas, multiplexação e o efeito didático de uma perda de pacote.
HTTP/1.1: em uma única conexão, as respostas ocupam a sequência de bytes. Navegadores costumam abrir múltiplas conexões para obter paralelismo, pagando o custo e a disputa entre elas.
| Versão | Transporte típico | Formato | Concorrência | Limitação importante |
|---|---|---|---|---|
| HTTP/1.1 | TCP; TLS quando HTTPS | Mensagens textuais | Sem multiplexação nativa; paralelismo costuma usar várias conexões. | Fila por conexão e custo de múltiplas conexões. |
| HTTP/2 | TCP; navegadores usam amplamente TLS | Frames binários e compressão HPACK | Vários streams intercalados em uma conexão. | Perda de um segmento TCP segura os bytes posteriores da conexão, afetando os streams. |
| HTTP/3 | QUIC sobre UDP, com TLS integrado | Frames binários e compressão QPACK | Vários streams independentes em uma conexão QUIC. | Mais complexo e pode enfrentar redes que bloqueiam ou degradam UDP. |
OBSERVE A WEB REAL
Abra a aba Network e encontre o protocolo em ação.
O DevTools reconstrói os conceitos HTTP mesmo quando os dados viajaram em frames binários ou criptografados. Isso permite estudar a troca sem montar mensagens manualmente.
- Abra o DevTools. Pressione
F12ouCtrl+Shift+Ie escolha a aba Network. - Recarregue a página. Marque “Disable cache” apenas durante o experimento se quiser observar novas transferências.
- Selecione o documento HTML. Identifique Request URL, Request Method, Status Code e Remote Address.
- Compare Headers e Response. Separe metadados do conteúdo e procure
content-type,cache-controlecontent-encoding. - Exiba a coluna Protocol. Compare
http/1.1,h2eh3em sites diferentes. A versão é negociada; ela não aparece obrigatoriamente na URL. - Observe o waterfall. Relacione DNS, conexão, TLS, espera pelo primeiro byte e transferência com as etapas aprendidas.
PARE E PENSE
Um site migrou de HTTP/1.1 para HTTP/3. O endpoint GET /produtos precisa mudar para continuar significando “obter a representação da coleção”?
Separe semântica da aplicação, codificação da mensagem e transporte.
GET, o recurso identificado e o significado dos status permanecem. HTTP/3 muda a forma como essa troca é codificada e transportada usando QUIC, frames e streams. Implementação, infraestrutura e negociação precisam suportar a versão, mas o contrato conceitual do endpoint não deve mudar apenas por isso.CONTINUE EXPLORANDO
Referências e estudos adicionais
As RFCs atuais separam a semântica comum do HTTP das especificações de cada versão de mensagem e transporte. Essa divisão é a base conceitual desta aula.
Referências técnicas
Especificações oficiais e registros usados como base.
- RFC 9110 · HTTP Semantics — arquitetura, métodos, status, campos e conceitos compartilhados.
- RFC 9112 · HTTP/1.1 — sintaxe textual, framing e gerenciamento da conexão.
- RFC 9113 · HTTP/2 — frames, streams, multiplexação e compressão de headers.
- RFC 9114 · HTTP/3 — mapeamento das semânticas HTTP sobre QUIC.
- RFC 9000 · QUIC — transporte seguro e multiplexado baseado em UDP.
- RFC 9846 · TLS 1.3 — especificação atualizada do canal seguro, publicada em 2026.
- IANA · HTTP Status Code Registry — registro oficial dos códigos de resposta.
Itens adicionais de estudo
Atividades para transformar os diagramas em observação prática.
- Leia a visão geral do HTTP na MDN e monte um glossário de cliente, servidor, proxy, recurso e representação.
- Use
curl -v https://example.come identifique a negociação, a linha de requisição, os headers e a resposta. - No DevTools, compare o documento HTML com uma imagem e uma chamada JSON. Observe método, tipo, tamanho, cache e iniciador.
- Explique por que
https://exemplo.comehttp://exemplo.comsão origens diferentes. - Desenhe três recursos atravessando HTTP/1.1, HTTP/2 e HTTP/3 e marque o efeito de uma perda em cada caso.
- Pesquise ALPN e Alt-Svc e descreva como cliente e servidor descobrem uma versão compatível sem colocá-la na URL.