O que é DNS? | Como o DNS funciona

DNS é o que permite aos usuários se conectarem a sites usando nomes de domínio em vez de endereços IP. Saiba como o DNS funciona.

Share facebook icon linkedin icon twitter icon email icon

DNS

Objetivos de aprendizado

Depois de ler este artigo você será capaz de:

  • Definição de DNS
  • Entenda como o DNS funciona
  • Diferencie entre pesquisas de DNS recursivas e iterativas
  • Separe authoritative nameservers dos resolvedores de DNS recursivos
  • Explore como o cache do DNS funciona

O que é DNS?

O sistema de nomes de domínio (DNS) é a lista telefônica da internet. Os seres humanos acessam informações on-line através de nomes de domínio, como nytimes.com ou espn.com. Navegadores da web interagem através de endereços IP (Protocolo da Internet). O DNS converte nomes de domínio em endereços IP, para que os navegadores possam carregar recursos da internet.

Cada dispositivo conectado à internet possui um endereço IP exclusivo que outras máquinas usam para encontrar o dispositivo. Os servidores de DNS eliminam a necessidade de humanos memorizarem endereços IP como 192.168.1.1 (no IPv4) ou endereços IP alfanuméricos mais complexos e mais recentes, como 2400:cb00:2048:1::c629:d7a2 (no IPv6).

DNS

Como o DNS funciona?

O processo de resolução do DNS envolve a conversão de um nome de host (como www.exemplo.com) em um endereço IP compatível com computadores (como 192.168.1.1). Um endereço IP é fornecido para cada dispositivo na internet, e esse endereço é necessário para encontrar o dispositivo de internet adequado - como um endereço de rua é usado para encontrar uma casa específica. Quando um usuário deseja carregar uma página da web, uma conversão deve ocorrer entre o que o usuário digita no navegador da web (exemplo.com) e o endereço de máquina necessário para localizar a página da web example.com.

Para entender o processo por trás da resolução do DNS, é importante aprender sobre os diferentes componentes de hardware pelos quais uma consulta de DNS deve passar. Para o navegador da web, a pesquisa de DNS ocorre "nos bastidores" e não requer interação do computador do usuário além da solicitação inicial.

Existem 4 servidores de DNS envolvidos no carregamento de uma página da web:

  • Recursor de DNS - o recursor pode ser pensado como um bibliotecário a quem é solicitado procurar um livro específico em algum lugar da biblioteca. O recursor de DNS é um servidor projetado para receber consultas das máquinas clientes por meio de aplicativos como navegadores da web. Normalmente, o recursor é responsável por fazer solicitações adicionais para satisfazer a consulta de DNS do cliente.
  • Root nameserver - o root nameserver é a primeira etapa na conversão (resolução) de nomes de host legíveis por humanos em endereços IP. Pode ser pensado como um índice em uma biblioteca que aponta para diferentes estantes de livros - normalmente serve como referência para outros locais mais específicos.
  • Nameserver TLD - o servidor de domínio de nível superior (TLD, top-level domain) pode ser pensado como um rack específico de livros em uma biblioteca. Esse nameserver é o próximo passo na busca de um endereço IP específico e hospeda a última parte de um nome de host (no exemplo.com, o servidor de TLD é "com").
  • Authoritative nameserver - este nameserver final pode ser pensado como um dicionário em uma estante de livros, na qual um nome específico pode ser traduzido em sua definição. O authoritative nameserver é a última parada na consulta do servidor de nomes. Se o servidor de nomes autoritativo tiver acesso ao registro solicitado, ele retornará o endereço IP do nome do host solicitado de volta ao Recursor de DNS (o bibliotecário) que fez a solicitação inicial.

Qual é a diferença entre um servidor de DNS autoritativo e um resolvedor de DNS recursivo?

Ambos os conceitos se referem a servidores (grupos de servidores) que são parte integrante da infraestrutura do DNS, mas cada um desempenha uma função diferente e vive em locais diferentes dentro do pipeline de uma consulta de DNS. Uma maneira de pensar sobre a diferença é que o resolvedor recursivo está no início da consulta de DNS e o authoritative nameserver está no final.

Resolvedor de DNS recursivo

O resolvedor recursivo é o computador que responde a uma solicitação recursiva de um cliente e leva um tempo para rastrear o registro DNS. Isso é feito fazendo uma série de solicitações até atingir o servidor de nomes DNS autoritativo do registro solicitado (ou atingir o tempo limite ou retornar um erro se nenhum registro for encontrado). Felizmente, os resolvedores de DNS recursivos nem sempre precisam fazer várias solicitações para rastrear os registros necessários para responder a um cliente; o armazenamento em cache é um processo de persistência de dados que ajuda a interromper as solicitações necessárias, fornecendo o registro do recurso solicitado anteriormente na pesquisa de DNS.

DNS query diagram

Servidor DNS autoritativo

Simplificando, um servidor DNS autoritativo é um servidor que realmente mantém e é responsável por registros de recursos de DNS. Esse é o servidor na parte inferior da cadeia de pesquisa de DNS que responderá com o registro de recurso consultado, permitindo que o navegador da web solicite o endereço IP necessário para acessar um site ou outros recursos da web. Um authoritative nameserver pode atender a consultas de seus próprios dados sem precisar consultar outra fonte, pois é a fonte final da verdade para certos registros DNS.

DNS query diagram

Vale ressaltar que, nos casos em que a consulta é para um subdomínio, como foo.example.com ou blog.cloudflare.com, um nameserver adicional será adicionado à sequência após o authoritative nameserver, responsável por armazenar o registro CNAME do subdomínio.

DNS query diagram

Há uma diferença fundamental entre muitos serviços de DNS e aquele que a Cloudflare fornece. Diferentes resolvedores de DNS recursivos, como Google DNS, OpenDNS e provedores como Comcast, todos mantêm instalações de data center de resolvedores de DNS recursivos. Esses resolvedores permitem consultas rápidas e fáceis por meio de clusters otimizados de sistemas de computadores otimizados para DNS, mas são fundamentalmente diferentes dos nameservers hospedados pela Cloudflare.

A Cloudflare mantém nameservers no nível da infraestrutura, essenciais para o funcionamento da internet. Um exemplo importante é a rede de servidores f-root, cuja hospedagem é feita parcialmente pela Cloudflare. O f-root é um dos componentes da infraestrutura de nameserver de DNS no nível raiz, responsável por bilhões de solicitações de internet por dia. Nossa rede Anycast nos coloca em uma posição única para lidar com grandes volumes de tráfego de DNS sem interrupção do serviço.

Quais são as etapas em uma pesquisa de DNS?

Na maioria das situações, o DNS está preocupado com um nome de domínio sendo convertido para o endereço IP apropriado. Para aprender como esse processo funciona, siga o caminho de uma pesquisa de DNS à medida que viaja a partir de um navegador da web, através do processo de pesquisa de DNS e vice-versa. Vamos dar uma olhada nas etapas.

Observação: Frequentemente, as informações de pesquisa de DNS são armazenadas em cache localmente no computador de consulta ou remotamente na infraestrutura de DNS. Normalmente, existem 8 etapas em uma pesquisa de DNS. Quando as informações de DNS são armazenadas em cache, as etapas são ignoradas no processo de pesquisa de DNS, o que a torna mais rápida. O exemplo abaixo descreve todas as 8 etapas quando nada é armazenado em cache.

As 8 etapas em uma pesquisa de DNS:

  1. Um usuário digita 'exemplo.com' em um navegador da web e a consulta viaja na internet e é recebida por um resolvedor de NDS recursivo.
  2. O resolvedor então consulta um DNS root nameserver DNS (.).
  3. O root nameserver responde ao resolvedor com o endereço de um servidor DNS de domínio de nível superior (TLD) (como .com ou .net), que armazena as informações de seus domínios. Ao pesquisar em exemplo.com, nossa solicitação é direcionada para o TLD .com.
  4. O resolvedor faz então uma solicitação ao TLD .com.
  5. O servidor do TLD responde com o endereço IP do nameserver do domínio, exemplo.com.
  6. Por fim, o resolvedor recursivo envia uma consulta ao nameserver do domínio.
  7. O endereço IP de exemplo.com é retornado ao resolvedor a partir do nameserver.
  8. O resolvedor de DNS responde ao navegador da web com o endereço IP do domínio solicitado inicialmente.

  9. Depois que as 8 etapas da pesquisa de DNS retornaram o endereço IP de exemplo.com, o navegador pode fazer a solicitação da página da web:

  10. O navegador faz uma solicitação de HTTP para o endereço IP.
  11. O servidor nesse IP retorna a página da web a ser renderizada no navegador (etapa 10).
DNS query diagram

O que é um resolvedor de DNS?

O resolvedor de DNS é a primeira parada na pesquisa de DNS e é responsável por lidar com o cliente que fez a solicitação inicial. O resolvedor inicia a sequência de consultas que, em última análise, faz com que um URL seja convertido no endereço IP necessário.

Observação: Uma pesquisa típica de DNS não armazenada em cache envolverá consultas recursivas e iterativas.

É importante diferenciar entre uma consulta de DNS recursiva e um resolvedor de DNS recursivo. A consulta refere-se à solicitação feita a um resolvedor de DNS que requer a resolução da consulta. Um resolvedor de DNS recursivo é o computador que aceita uma consulta recursiva e processa a resposta fazendo as solicitações necessárias.

DNS query diagram

Quais são os tipos de consultas de DNS?

Em uma pesquisa típica de DNS, ocorrem três tipos de consultas. Ao usar uma combinação dessas consultas, um processo otimizado para a resolução de DNS pode resultar em uma redução da distância percorrida. Em uma situação ideal, os dados do registro em cache estarão disponíveis, permitindo que um nameserver de DNS retorne uma consulta não recursiva.

Três tipos de consultas de DNS:

  1. Consulta recursiva - em uma consulta recursiva, um cliente de DNS exige que um servidor DNS (normalmente um resolvedor de DNS recursivo) responda ao cliente com o registro de recurso solicitado ou uma mensagem de erro se o resolvedor não conseguir encontrar o registro.

  2. Consulta iterativa - nessa situação, o cliente de DNS permitirá que um servidor DNS retorne a melhor resposta possível. Se o servidor DNS consultado não corresponder ao nome da consulta, ele retornará uma referência a um servidor DNS autoritativo para um nível inferior do espaço para nome do domínio. O cliente de DNS fará uma consulta no endereço de referência. Esse processo continua com servidores DNS adicionais na cadeia de consulta até que ocorra um erro ou tempo limite.

  3. Consulta não recursiva - normalmente isso ocorre quando um cliente resolvedor de DNS consulta um servidor DNS em busca de um registro ao qual ele tenha acesso porque é autoritativo para o registro ou existe dentro do cache. Normalmente, um servidor DNS armazena em cache os registros DNS para evitar o consumo adicional de largura de banda e o carregamento nos servidores ascendentes.

O que é o cache de DNS? Onde ocorre o cache de DNS?

O objetivo do armazenamento em cache é armazenar dados temporariamente em um local que resulte em melhorias no desempenho e na confiabilidade das solicitações de dados. O cache de DNS envolve o armazenamento de dados mais perto do cliente solicitante, para que a consulta de DNS possa ser resolvida mais cedo e consultas adicionais mais abaixo na cadeia de pesquisa de DNS possam ser evitadas, melhorando assim os tempos de carregamento e reduzindo o consumo de largura de banda/CPU. Os dados de DNS podem ser armazenados em cache em vários locais, cada um dos quais armazenará registros DNS por um período de tempo determinado, estabelecido por um tempo de vida útil (TTL).

Cache de DNS do navegador

Navegadores da web modernos são projetados por padrão para armazenar os registros DNS em cache por um período de tempo definido. O objetivo aqui é óbvio; quanto mais próximo do navegador da web ocorrer o cache de DNS, menos etapas de processamento deverão ser realizadas para verificar o cache e fazer as solicitações corretas para um endereço IP. Quando é feita uma solicitação para um registro DNS, o cache do navegador é o primeiro local verificado para o registro solicitado.

No Chrome, você pode ver o status do cache de DNS acessando chrome://net-internals/#dns.

Cache de DNS no nível do sistema operacional (SO)

O resolvedor de DNS no nível do sistema operacional é a segunda e a última parada local antes que uma consulta de DNS saia da sua máquina. O processo dentro do seu sistema operacional, projetado para lidar com essa consulta, geralmente é chamado de "resolvedor de stub" ou cliente de DNS. Quando um resolvedor de stub obtém uma solicitação de um aplicativo, ele primeiro verifica seu próprio cache para ver se o registro existe. Caso contrário, ele envia uma consulta de DNS (com um sinalizador recursivo definido) para fora da rede local para um resolvedor de DNS recursivo dentro do provedor de serviços de internet (ISP).

Quando o resolvedor recursivo dentro do ISP recebe uma consulta de DNS, como todas as etapas anteriores, ele também verifica se a conversão solicitada do host para o endereço IP já está armazenada na sua camada de persistência local.

O resolvedor recursivo também apresenta funcionalidade adicional, dependendo dos tipos de registros que existem em seu cache:

  1. Se o resolvedor não tiver os registros A, mas tiver os registros NS para os authoritative nameserver, ele consultará esses nameservers diretamente, ignorando várias etapas na consulta de DNS. Esse atalho evita pesquisas dos root e .com nameservers (em nossa pesquisa por exemplo.com) e ajuda a resolução da consulta de DNS a ocorrer mais rapidamente.
  2. Se o resolvedor não tiver os registros NS, ele enviará uma consulta aos servidores de TLD (.com no nosso caso), ignorando o servidor raiz.
  3. No caso improvável de o resolvedor não ter registros apontando para os servidores de TLD, ele consultará os servidores raiz. Esse evento geralmente ocorre após a limpeza de um cache de DNS.

Conheça o que diferencia o DNS da Cloudflare de outros provedores de DNS.