MÓDULO · FUNDAMENTOS DA WEB

HTTP: a conversa por trás da Web

URLs indicam recursos, requisições expressam intenções e respostas informam resultados. HTTPS protege essa conversa; as versões modernas a transportam com mais eficiência.

Imagem: Bernd Dittrich / Unsplash

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.

RECURSO

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.

REPRESENTAÇÃ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.

TROCA

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.

EXTENSIBILIDADE

Intermediários também participam

Proxies, gateways, caches e CDNs podem encaminhar ou responder à mensagem sem mudar a semântica esperada pelo cliente.

HTTP é sem estado, mas aplicações podem manter estado. Cada requisição deve ser compreensível isoladamente pelo protocolo. Login, carrinho e preferências são implementados acima disso com cookies, identificadores de sessão, tokens, banco de dados ou outros mecanismos.
Uma página não corresponde a uma única requisição. O navegador normalmente solicita primeiro o HTML. Ao interpretá-lo, descobre CSS, JavaScript, imagens e fontes e produz novas requisições, possivelmente para origens diferentes.

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.

Passo a passo
Seu navegador não suporta canvas.

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.

  1. Interpretar a URL. O navegador separa esquema, host, porta, caminho, query e fragmento. O fragmento não é enviado na requisição HTTP.
  2. 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.
  3. Enviar a requisição. Método e alvo expressam a intenção; headers dão contexto; algumas requisições também carregam um corpo.
  4. Processar no servidor. Servidor Web, aplicação, cache e banco de dados podem cooperar para produzir a representação.
  5. Receber a resposta. O status informa o resultado, headers descrevem a resposta e o corpo pode conter a representação solicitada.
  6. 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.

Cliente → servidorRequisição
GET /produtos/42?moeda=BRL HTTP/1.1
Host: loja.exemplo.com
Accept: application/json
Accept-Language: pt-BR
User-Agent: Navegador/1.0

[sem corpo nesta requisição GET]
Servidor → clienteResposta
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Cache-Control: max-age=60
Content-Length: 68

{"id":42,"nome":"Teclado","preco":199.90,"moeda":"BRL"}
Linha inicial: intenção ou resultadoHeaders: metadadosCorpo: conteúdo opcional
ElementoNa requisiçãoNa respostaPergunta respondida
Linha inicialGET /produto HTTP/1.1HTTP/1.1 200 OKO que o cliente deseja? Qual foi o resultado?
HeadersAccept, Authorization, CookieContent-Type, Cache-Control, Set-CookieQuais condições, formatos e metadados acompanham a troca?
Linha vaziaDelimita o final da seção de headers no formato textual.Onde terminam os metadados?
CorpoJSON, formulário ou arquivo enviado, quando aplicável.HTML, JSON, imagem ou outro conteúdo, quando aplicável.Quais dados acompanham a mensagem?
1xx · INFORMAÇÃO

A troca continua

Resposta intermediária. Exemplo: 100 Continue.

2xx · SUCESSO

A intenção foi atendida

Exemplos: 200 OK, 201 Created e 204 No Content.

3xx · REDIRECIONAMENTO

Outra ação é necessária

Exemplos: 301, 302, 304 e 308.

4xx · PROBLEMA NA REQUISIÇÃO

O servidor não pode atendê-la assim

Exemplos: 400, 401, 403, 404 e 429.

5xx · PROBLEMA NO SERVIDOR

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.

AUTENTICAÇÃO

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

CONFIDENCIALIDADE

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

INTEGRIDADE

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

Canal seguro
Seu navegador não suporta canvas.

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.

AspectoHTTPHTTPS
Esquemahttp://https://
Porta padrão80443
Conteúdo no caminhoSem confidencialidade ou integridade fornecida pelo próprio esquema.Protegido pelo canal TLS ou pela segurança integrada do QUIC.
Identidade do servidorNão é autenticada criptograficamente pelo HTTP simples.Validada pelo cliente usando certificado e regras de identidade.
Origem Webhttp://exemplo.com e https://exemplo.com são origens diferentes, mesmo com o mesmo host.
O cadeado não garante que o site seja honesto ou que a aplicação seja segura. HTTPS protege a comunicação com a identidade validada pelo certificado. Um site malicioso também pode possuir certificado, e falhas como XSS, SQL Injection ou senhas fracas continuam possíveis.
Criptografia não torna toda a conexão invisível. Endereços IP, volume e momento dos pacotes continuam observáveis. A exposição do nome do host depende também de DNS, SNI e mecanismos de privacidade como DNS criptografado e ECH. O conteúdo HTTP protegido, porém, não deve ficar legível no caminho.

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.

1991

HTTP/0.9

Pedido extremamente simples, voltado à obtenção de hipertexto. Não possuía a estrutura moderna de headers e status.

1996

HTTP/1.0

Formalizou versões, status, headers, tipos de conteúdo e mensagens mais gerais. Conexões normalmente não eram persistentes.

1997 → atual

HTTP/1.1

Conexões persistentes, Host, cache e transferências mais eficientes. A especificação atual está consolidada na RFC 9112.

2015 → atual

HTTP/2

Frames binários, multiplexação de streams e compressão de headers sobre uma conexão, preservando a semântica HTTP.

2022 → atual

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.

Multiplexação
Seu navegador não suporta canvas.

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ãoTransporte típicoFormatoConcorrênciaLimitação importante
HTTP/1.1TCP; TLS quando HTTPSMensagens textuaisSem multiplexação nativa; paralelismo costuma usar várias conexões.Fila por conexão e custo de múltiplas conexões.
HTTP/2TCP; navegadores usam amplamente TLSFrames binários e compressão HPACKVários streams intercalados em uma conexão.Perda de um segmento TCP segura os bytes posteriores da conexão, afetando os streams.
HTTP/3QUIC sobre UDP, com TLS integradoFrames binários e compressão QPACKVários streams independentes em uma conexão QUIC.Mais complexo e pode enfrentar redes que bloqueiam ou degradam UDP.
HTTP/3 não substitui os significados do HTTP/1.1. A aplicação continua pedindo recursos com métodos, recebendo status e interpretando headers. O que muda é a representação no fio e como conexão, streams, perdas e segurança são tratados.

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.

  1. Abra o DevTools. Pressione F12 ou Ctrl+Shift+I e escolha a aba Network.
  2. Recarregue a página. Marque “Disable cache” apenas durante o experimento se quiser observar novas transferências.
  3. Selecione o documento HTML. Identifique Request URL, Request Method, Status Code e Remote Address.
  4. Compare Headers e Response. Separe metadados do conteúdo e procure content-type, cache-control e content-encoding.
  5. Exiba a coluna Protocol. Compare http/1.1, h2 e h3 em sites diferentes. A versão é negociada; ela não aparece obrigatoriamente na URL.
  6. Observe o waterfall. Relacione DNS, conexão, TLS, espera pelo primeiro byte e transferência com as etapas aprendidas.
Tutorial oficial do painel NetworkPratique a inspeção de headers, respostas, tamanhos, iniciadores e tempos de uma requisição.

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.

Não. A semântica de 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.

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.com e 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.com e http://exemplo.com sã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.