O que Acontece ao Acessar um Site?
Este módulo une tudo que você aprendeu: a timeline completa de o que acontece nos bastidores quando você digita uma URL e aperta Enter.
Visão Geral — Os 7 Passos
Você abre o Chrome, digita https://github.com e aperta Enter. Em menos de um segundo, a página carrega. O que aconteceu nesse tempo? Vamos destrinchar cada passo.
Resolução DNS — Passo a Passo
A resolução DNS parece simples, mas tem vários servidores envolvidos. Entender isso ajuda a diagnosticar problemas de "site não carrega".
- Cache do navegador: primeiro lugar consultado. Guarda respostas recentes.
- Cache do SO:
C:\Windows\System32\drivers\etc\hostse cache do sistema. - Servidor DNS Recursivo: geralmente seu provedor ou DNS público (8.8.8.8 do Google, 1.1.1.1 da Cloudflare). Faz o trabalho duro consultando os outros.
- Servidores Raiz (Root): 13 endereços de servidores raiz no mundo (a.root-servers.net até m.root-servers.net). Sabem onde estão os servidores TLD.
- Servidor TLD: gerencia extensões como
.com,.org,.br. Sabe quais são os servidores autoritativos de cada domínio. - Servidor Autoritativo: tem a resposta final. É onde o dono do domínio cadastrou os registros DNS. Diz: "github.com = 140.82.114.3, TTL = 60 segundos".
Cada resposta DNS tem um TTL (em segundos) que diz por quanto tempo ela pode ser cacheada. TTL baixo (60s) = mudanças propagam rápido. TTL alto (86400s = 24h) = menos consultas, mas mudanças demoram para propagar. Quando você troca o DNS de um domínio, espere o TTL anterior expirar.
Three-Way Handshake TCP
Three-Way Handshake — Estabelecimento de Conexão TCP
O handshake garante que ambos os lados estão prontos para comunicar e que a conexão é bidirecional. Com dois passos, o cliente saberia que o servidor recebeu o SYN, mas o servidor não teria confirmação de que o cliente recebeu o SYN-ACK. O terceiro passo (ACK) fecha esse ciclo.
Os números de sequência (SEQ) são usados para ordenar os segmentos TCP e detectar perda de pacotes. Cada byte de dados incrementa o número de sequência.
Handshake TLS
Depois do handshake TCP, se é HTTPS, acontece o handshake TLS. No TLS 1.3 (atual):
- Client Hello: cliente envia versão TLS suportada, algoritmos de criptografia suportados (cipher suites) e um número aleatório.
- Server Hello: servidor escolhe o cipher suite, envia número aleatório, e o certificado digital.
- Verificação do certificado: o navegador verifica se o certificado foi emitido por uma CA confiável (embutida no SO/navegador), se o domínio bate e se não está expirado.
- Troca de chaves: usam criptografia de chave pública para estabelecer um segredo compartilhado (sem nunca enviá-lo pela rede).
- Derivação da chave de sessão: ambos derivam a mesma chave simétrica a partir do segredo.
- Finished: ambos confirmam que o handshake foi bem-sucedido. Comunicação criptografada começa.
O TLS 1.3 reduziu o handshake para apenas 1 round-trip (antes eram 2). Em conexões repetidas ao mesmo servidor, o TLS 1.3 com 0-RTT pode até eliminar completamente o handshake, enviando dados na primeira mensagem.
Requisição HTTP e Resposta
GET /index.html HTTP/1.1
Host: github.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120
Accept: text/html,application/xhtml+xml
Accept-Language: pt-BR,pt;q=0.9
Connection: keep-alive
Cookie: _gh_sess=xxxxx
E a resposta do servidor:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 15432
Cache-Control: no-cache
Set-Cookie: _octo=GH1.xxx; SameSite=Strict
<!DOCTYPE html>
<html lang="en">...
| Código | Significado | Quando ocorre |
|---|---|---|
| 200 | OK | Requisição bem-sucedida |
| 201 | Created | Recurso criado com sucesso (POST) |
| 301/302 | Moved Permanently/Temporarily | Redirecionamento |
| 304 | Not Modified | Use o cache — não mudou |
| 400 | Bad Request | Requisição malformada |
| 401 | Unauthorized | Precisa autenticar |
| 403 | Forbidden | Autenticado mas sem permissão |
| 404 | Not Found | Recurso não existe |
| 500 | Internal Server Error | Bug no servidor |
| 503 | Service Unavailable | Servidor sobrecarregado ou em manutenção |
Renderização do Navegador
- HTML parsing: navegador lê o HTML e constrói o DOM (Document Object Model) — uma árvore de elementos.
- Requisições adicionais: ao encontrar
<link rel="stylesheet">e<script src="...">, faz novas requisições HTTP para buscar CSS e JS. - CSS parsing: constrói o CSSOM (CSS Object Model).
- Render Tree: combina DOM + CSSOM para construir a árvore de renderização — apenas os elementos visíveis.
- Layout (Reflow): calcula a posição e tamanho de cada elemento na tela.
- Paint: pinta os pixels na tela.
- Composite: combina as camadas em uma imagem final.
Enquanto isso, o JavaScript pode modificar o DOM dinamicamente, causando novos ciclos de layout e paint (por isso JS pesado torna páginas lentas).
Digitar URL → Verificar cache DNS → Consultar DNS → Obter IP → Three-way handshake TCP → Handshake TLS → Enviar HTTP GET → Receber HTML → Parsear HTML → Buscar CSS/JS → Construir DOM/CSSOM → Renderizar → Exibir página.
Tudo isso em <500ms em condições normais. Cada etapa pode ser um ponto de falha quando algo dá errado.