O que é DNS?
A lista telefônica da internet
Todo dispositivo na internet tem um endereço IP: um número como 198.51.100.34. Mas humanos não pensam em números. Pensamos em nomes: google.com, github.com, myapp.com.
O Sistema de Nomes de Domínio (DNS) é o serviço que traduz nomes de domínio legíveis por humanos em endereços IP legíveis por máquinas. Sem DNS, você teria que memorizar endereços IP para cada site que visita.
Você digita: google.com
DNS retorna: 142.250.80.46
Navegador usa: 142.250.80.46 para fazer uma conexão TCP
DNS é uma das peças mais críticas da infraestrutura da internet. Se DNS cair, a internet efetivamente para de funcionar: mesmo que todo servidor ainda esteja rodando. As pessoas não conseguem encontrá-los.
Por que não usar apenas endereços IP?
Você poderia usar endereços IP diretamente. Tente http://142.250.80.46 no seu navegador: o Google responde (por HTTPS você veria um aviso de certificado, já que ele nomeia google.com, e não o IP). Mas existem problemas críticos:
| Problema | Como DNS Resolve |
|---|---|
| Memorabilidade | google.com é mais fácil de lembrar que 142.250.80.46 |
| IP muda | Servidores mudam IPs quando são movidos. DNS atualiza o mapeamento sem você saber |
| Múltiplos servidores | Um domínio pode apontar para vários IPs para balanceamento de carga |
| Hospedagem virtual | Vários domínios podem compartilhar um IP (o header Host diz ao servidor qual site) |
| Branding | Empresas precisam de nomes memoráveis e brandáveis |
A analogia: listas telefônicas e contatos
DNS funciona como o app de contatos do seu celular:
App de Contatos DNS
─────────────── ───
"Mãe" → +55-11-5555-0123 "google.com" → 142.250.80.46
"Trabalho" → +55-11-5555-0456 "github.com" → 140.82.121.4
"Pizza" → +55-11-5555-0789 "myapp.com" → 203.0.113.42
Você não memoriza números de telefone: procura por nomes. DNS faz o mesmo para a internet.
Mas diferente do seu app de contatos (que armazena tudo localmente), DNS é um sistema distribuído: nenhum servidor único tem todas as respostas. Em vez disso, diferentes servidores são responsáveis por diferentes partes da hierarquia de nomes.
Como DNS se encaixa no ciclo de vida da requisição
DNS é o primeiro passo antes de qualquer requisição HTTP poder ser feita:
1. Usuário digita: https://myapp.com/courses
2. Navegador pergunta ao DNS: "Qual é o IP de myapp.com?"
3. DNS responde: "203.0.113.42"
4. Navegador conecta a 203.0.113.42:443 (handshake TCP)
5. Navegador envia requisição HTTP: GET /courses
6. Servidor responde com HTML
7. Navegador renderiza a página
Sem os passos 2-3, passos 4-7 não podem acontecer. DNS é a ponte entre URLs legíveis por humanos e endereços legíveis por máquinas.
DNS é um banco de dados distribuído
O sistema DNS lida com trilhões de consultas por dia. Nenhum servidor único poderia lidar com essa carga. Em vez disso, DNS usa uma arquitetura hierárquica e distribuída:
flowchart TB
R["Servidores raiz (.)<br>13 identidades raiz, anycast pelo mundo"]
COM["TLD .com"]
ORG["TLD .org"]
BR["ccTLD .br"]
R --> COM & ORG & BR
COM --> G["google.com<br>nameserver"]
COM --> H["github.com<br>nameserver"]
ORG --> W["wikipedia.org<br>nameserver"]
BR --> GB["google.com.br<br>nameserver"]
Cada nível é responsável por uma porção do namespace:
| Nível | Responsabilidade | Exemplo |
|---|---|---|
| Servidores raiz | Sabem onde encontrar servidores TLD | . (o ponto invisível após todo domínio) |
| Servidores TLD | Sabem onde encontrar nameservers de domínio | .com, .org, .br, .io |
| Nameservers autoritativos | Sabem os endereços IP reais | ns1.google.com |
Exploraremos essa hierarquia em detalhe na aula 3.
DNS usa UDP (na maioria)
Como você aprendeu no curso de TCP/IP, DNS usa principalmente UDP na porta 53:
Navegador → DNS Resolver (UDP porta 53)
Query: "Qual é o IP de myapp.com?"
DNS Resolver → Navegador (UDP porta 53)
Resposta: "203.0.113.42"
Total: 2 pacotes, ~5ms
Por que UDP?
- Consultas DNS são pequenas (cabem em um pacote)
- Velocidade importa: DNS acontece antes de cada nova conexão
- Se a resposta for perdida, o cliente pergunta novamente
DNS muda para TCP quando:
- A resposta é grande demais para o UDP (mais de 512 bytes no modelo clássico; o EDNS0 aumenta isso, muitas vezes para 1232)
- Transferências de zona entre servidores DNS (AXFR)
- Validação DNSSEC requer payloads maiores
DNS no seu trabalho diário com Rails
Você interage com DNS constantemente como desenvolvedor Rails:
| Tarefa | Envolvimento DNS |
|---|---|
Rodar bin/rails server |
localhost resolve para 127.0.0.1 via /etc/hosts |
| Conexão com banco | host: localhost vem do /etc/hosts; um host de banco remoto → consulta DNS |
| Enviar emails | Hostname do servidor SMTP → consulta DNS |
Chamadas de API (Net::HTTP) |
Hostname de API externa → consulta DNS |
| Deploy | Seu domínio → aponta para IP do servidor via DNS |
| Certificados SSL | A posse do domínio pode ser provada com um registro DNS (ou por HTTP) |
Erros comuns relacionados a DNS
# Resolução DNS falhou
SocketError: getaddrinfo: nodename nor servname provided, or not known
# → O nome de domínio não pôde ser resolvido em um IP
# Timeout DNS
Resolv::ResolvTimeout: DNS resolv timeout
# → Servidor DNS não respondeu a tempo
Terminologia chave de DNS
| Termo | Significado |
|---|---|
| Nome de domínio | Endereço legível por humanos (ex: myapp.com) |
| Endereço IP | Endereço legível por máquinas (ex: 203.0.113.42) |
| Consulta DNS | Uma requisição para traduzir domínio em IP |
| Resposta DNS | A resposta contendo o endereço IP |
| Resolver | O cliente DNS que envia consultas (seu SO ou ISP) |
| Nameserver | Um servidor DNS que responde consultas |
| Registro | Uma única entrada no DNS (ex: myapp.com → 203.0.113.42) |
| TLD | Top-Level Domain (.com, .org, .br) |
| TTL | Time To Live: por quanto tempo cachear uma resposta DNS |
| Propagação | Tempo para mudanças DNS se espalharem pela internet |
Resumo
| Conceito | Ponto Chave |
|---|---|
| DNS | Traduz nomes de domínio em endereços IP |
| Por que existe | Humanos lembram nomes, computadores precisam de números |
| Sistema distribuído | Nenhum servidor único tem todas respostas: delegação hierárquica |
| Usa UDP porta 53 | Consultas rápidas e pequenas: se perder, basta perguntar de novo |
| Primeiro passo em qualquer requisição | DNS acontece antes do handshake TCP e HTTP |
| Infraestrutura crítica | Se DNS falha, a internet parece quebrada |
| Conexão com Rails | Toda chamada HTTP, conexão com banco e email envolve DNS |
Continue com a aula 2
Estrutura de nomes de domínio
Decompõe um nome de domínio em raiz, TLD, SLD e subdomínios, e trata de FQDN, domínio apex e registro.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.