O que é DNS?

Prévia grátis 6 min de leitura

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
Aula 1 de 7 · grátis

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.

Digite para buscar...