DWEB 01.4 DNS e Resolução de Nomes de Domínio

No tópico anterior, vimos que toda máquina conectada à internet tem um endereço IP — uma sequência numérica única. Mas você, no dia a dia, nunca digita números no navegador. Você digita nomes: leaoeducacao.com.br, google.com, wikipedia.org. Esses nomes não viajam, por si só, pela rede — os roteadores só entendem números. Como, então, o navegador descobre o IP correto a partir de um nome? Quem traduz nome em número? A resposta é uma das peças mais importantes (e menos visíveis) da infraestrutura da web: o DNS, sigla para Domain Name System, ou Sistema de Nomes de Domínio.

A motivação: por que precisamos do DNS

Imagine que você queira ligar para um amigo, mas só pode discar o número exato — sem agenda, sem busca por nome, sem nada. Cada amigo seu vira uma sequência decorada. Se ele troca de número, você precisa atualizar a memória. Multiplique isso por milhares de “amigos” e o sistema simplesmente colapsa. Foi exatamente esse o problema dos primeiros anos da internet: cada computador tinha um endereço numérico, e cada usuário precisava saber qual era. Houve uma época em que havia, literalmente, um arquivo único com a lista de todos os computadores da rede — chamado hosts.txt — que era baixado periodicamente por todos. À medida que a rede cresceu, essa abordagem se tornou impossível.

Em 1984, Paul Mockapetris propôs e implementou um sistema descentralizado, hierárquico e altamente escalável de tradução de nomes em endereços: o DNS. A ideia central é a de uma agenda telefônica gigante e distribuída, em que ninguém precisa ter a lista inteira — basta saber a quem perguntar quando você precisa de um número específico.

A analogia da agenda

Pense na sua própria agenda de contatos no celular. Quando você quer ligar para a Marina, você não pensa no número dela. Você digita “Marina” e o telefone traduz isso, internamente, no número correto. Se a Marina trocar de número, você só precisa atualizar uma vez na sua agenda — todo mundo que liga pelo nome continua acertando.

O DNS faz exatamente isso, em escala planetária. Você digita leaoeducacao.com.br; o DNS responde, por exemplo, 203.0.113.42. Seu navegador então conecta a esse IP usando TCP/IP, faz a requisição HTTP, recebe a resposta e mostra a página. A diferença entre a agenda do celular e o DNS é a escala e a forma como a informação está distribuída. Nenhum servidor DNS isolado conhece todos os nomes do mundo — porque seria impossível mantê-los todos atualizados. Em vez disso, o DNS opera por hierarquia e delegação.

A hierarquia dos domínios

Um nome de domínio é lido da direita para a esquerda, em níveis hierárquicos. Tome o exemplo:

www.leaoeducacao.com.br

Da direita para a esquerda:

  • . (ponto invisível ao final) — é a raiz do DNS, o topo da árvore.
  • br — é o domínio de topo (TLD, Top-Level Domain), nesse caso o domínio do Brasil. Outros TLDs comuns são .com, .org, .net, .gov, .edu e centenas de outros.
  • com.br — é um subnível dentro do TLD brasileiro, usado para fins comerciais.
  • leaoeducacao — é o domínio de segundo nível, registrado pela organização que controla o site.
  • www — é um subdomínio dentro do domínio, indicando, tradicionalmente, o serviço da World Wide Web (hoje, na prática, é frequentemente opcional ou redirecionado).

Cada nível dessa hierarquia tem seus próprios servidores responsáveis. Quando uma busca DNS acontece, ela percorre essa hierarquia — geralmente do mais geral para o mais específico — até chegar à resposta.

Como funciona uma resolução de DNS, passo a passo

Vamos acompanhar o que acontece quando você digita um endereço e pressiona Enter. Esse processo é chamado resolução de DNS, e envolve várias camadas. Vou descrever em ordem, sem assumir conhecimento prévio:

  1. Cache do navegador. O navegador primeiro olha em sua própria memória se já consultou esse nome recentemente. Se sim, e a resposta ainda for válida, ele usa o IP guardado e pula tudo abaixo. Esse cache local é o que torna o segundo acesso a um site bem mais rápido que o primeiro.
  2. Cache do sistema operacional. Se o navegador não tem, ele pergunta ao sistema operacional, que mantém seu próprio cache de DNS.
  3. Resolver recursivo do provedor. Se nem o navegador nem o sistema souberem, a pergunta é encaminhada para um servidor DNS configurado no roteador ou no sistema — geralmente, o servidor do seu provedor de internet, ou um serviço público como o 8.8.8.8 (Google Public DNS), 1.1.1.1 (Cloudflare) ou 9.9.9.9 (Quad9). Esse servidor é chamado resolver recursivo, e a partir daqui ele se encarrega de descobrir a resposta para você.
  4. Servidores-raiz. O resolver, se ainda não souber, pergunta a um dos 13 conjuntos de servidores-raiz do mundo. Esses servidores não sabem o IP de leaoeducacao.com.br, mas sabem quem cuida do TLD .br.
  5. Servidor do TLD. O resolver então pergunta a um servidor responsável pelo .br quem cuida do domínio leaoeducacao.com.br. A resposta indica o servidor autoritativo desse domínio específico.
  6. Servidor autoritativo do domínio. Por fim, o resolver pergunta a esse servidor autoritativo qual o IP de www.leaoeducacao.com.br. Ele responde, por exemplo, 203.0.113.42.
  7. Resposta de volta ao navegador. O resolver devolve o IP ao seu navegador, que finalmente pode abrir uma conexão TCP com o servidor de destino.

Tudo isso normalmente leva frações de segundo. Em conexões boas, é tão rápido que parece instantâneo. Em conexões ruins ou em situações de falha em algum servidor DNS, pode demorar mais — e é a origem daquele “site não carrega” que parece misterioso.

Tipos de registro DNS

O DNS guarda mais do que apenas IPs. Existem vários tipos de registro, cada um com uma função:

Tipo Para que serve
A Associa um nome a um endereço IPv4 (ex.: 203.0.113.42)
AAAA Associa um nome a um endereço IPv6
CNAME Cria um “apelido” que aponta para outro nome
MX Indica qual servidor recebe e-mails para o domínio
TXT Guarda texto livre, frequentemente usado para verificação de domínio ou políticas de e-mail
NS Indica quais servidores são autoritativos para o domínio

Como desenvolvedor front-end, você raramente vai mexer diretamente nesses registros — isso é, normalmente, trabalho da equipe de infraestrutura, do administrador do servidor ou de quem comprou o domínio. Mas, em projetos pequenos, é comum que o próprio desenvolvedor precise configurar pelo menos um registro A (apontando o domínio para um servidor) ou CNAME (apontando para um serviço como Netlify, Vercel ou GitHub Pages). Vale, portanto, conhecer os nomes.

Propagação e cache: por que mudar DNS demora

Como cada nível da hierarquia guarda em cache as respostas que recebeu (para acelerar as próximas consultas), quando você muda um registro DNS — digamos, troca o IP do seu site —, a alteração não é instantânea no mundo todo. Servidores DNS espalhados pelo planeta podem continuar respondendo com o IP antigo até que seus caches expirem. Cada registro tem um valor chamado TTL (Time To Live, ou “tempo de vida”) que define quanto tempo a resposta pode ficar em cache.

Esse processo de “espalhar” a nova informação chama-se, informalmente, propagação de DNS, e pode demorar de alguns minutos a várias horas. É por isso que mudanças em domínios — trocar de servidor, mudar de provedor de e-mail — costumam ser feitas com planejamento, e por que profissionais do setor sempre dizem “espera 24 horas antes de avaliar”.

Momento de aplicação prática

Você pode investigar o DNS de qualquer site sem instalar nada. Use o terminal do seu sistema operacional (Prompt de Comando no Windows, ou Terminal no Mac/Linux) e experimente o comando:

nslookup leaoeducacao.com.br

(ou o nome de qualquer outro site). Você verá, na saída, o servidor DNS que respondeu e o endereço (ou endereços) IP associados ao nome. Esse comando faz, em um único passo, a mesma resolução que o navegador faz internamente — mas a deixa explícita para você.

Sugestão: faça o mesmo com dois ou três sites grandes (por exemplo, google.com e wikipedia.org). Note que sites maiores frequentemente respondem com vários endereços IP. Isso não é erro: é uma estratégia chamada balanceamento de carga, em que o nome aponta para vários servidores e o tráfego é distribuído entre eles. Voltaremos a esse tema no Tópico 1.9.

Armadilha comum

Quando um site não abre, a primeira reação costuma ser “deve ser o servidor”. Mas, com frequência, o problema é o DNS — local ou no caminho. Sinais típicos: o site não carrega de jeito nenhum, mas funciona em um celular conectado à internet móvel (que usa outro DNS). Ou um colega seu consegue acessar e você não. Em casos assim, vale tentar trocar o DNS configurado no seu sistema para um público confiável (como 1.1.1.1 ou 8.8.8.8) e verificar se o problema desaparece. Esse pequeno truque já resolveu, sozinho, muito chamado de suporte.

O que vem a seguir

Agora você sabe como o nome de um site é convertido em um endereço de rede. Mas ainda falta detalhar uma peça importante: o nome do site é apenas uma parte de um endereço maior — a URL. Aquilo que você digita no navegador pode incluir, além do domínio, um caminho, parâmetros, uma porta e mais alguns elementos. Saber ler uma URL é, para o desenvolvedor front-end, tão essencial quanto saber ler horas em um relógio. Vamos a isso no próximo tópico.