O Sistema
de Nomes de Domínio, mais conhecido pela nomenclatura em Inglês Domain
Name System (DNS), é um sistema hierárquico e distribuído de
gerenciamento de nomes para computadores, serviços ou qualquer máquina
conectada à Internet ou a uma rede privada. Faz a associação
entre várias informações atribuídas a nomes de domínios e cada entidade
participante. Em sua utilização mais convencional, associa nomes de domínios
mais facilmente memorizáveis a endereços IP numéricos, necessários à
localização e identificação de serviços e dispositivos, processo esse
denominado resolução de nome. Em virtude do banco de dados de DNS
ser distribuído, seu tamanho é ilimitado e o desempenho não se degrada
substancialmente quando se adicionam mais servidores. Por padrão, o DNS usa o
protocolo User Datagram Protocol (UDP) na porta 53 para
servir as solicitações e as requisições.
O DNS
apresenta uma arquitetura cliente/servidor, podendo envolver vários
servidores DNS na resposta a uma consulta. O servidor DNS resolve nomes para os
endereços IP e de endereços IP para nomes respectivos, permitindo a localização
de hosts num domínio determinado.
Num sistema
livre, o serviço é comummente implementado pelo software BIND. Este
serviço geralmente se encontra localizado no servidor DNS primário. O servidor
DNS secundário é uma espécie de cópia de segurança do servidor DNS primário.
Assim, ele se torna parte necessária para quem quer usar a internet de uma
forma mais fácil, evita que hackers roubem os seus dados pessoais.
Existem
centenas de servidores-raiz DNS (root servers) no mundo todo,
agrupados em 13 zonas DNS raiz, das quais sem elas a Internet não
funcionaria. Destes, dez estão localizados nos Estados Unidos da América, dois
na Europa e um na Ásia. Para aumentar a base instalada destes servidores, foram
criadas réplicas localizadas por todo o mundo, inclusive no Brasil desde 2003.
História
A implementação do DNS-Berkeley, foi desenvolvida
originalmente para o sistema operacional BSDUNIX 4.3. A
implementação do Servidor de DNS Microsoft se tornou parte do sistema
operacional Windows NT na versão Server 4.0. O DNS passou a ser o
serviço de resolução de nomes padrão a partir do Windows 2000 Server como
a maioria das implementações de DNS teve suas raízes nas RFCs 882 e
883, e foi atualizado nas RFCs 1034 e 1035.
Visão geral
Um recurso da internet, por exemplo um site da Web,
pode ser identificado de duas maneiras: pelo seu nome de domínio, por
exemplo, “www.wikipedia.org” ou pelo endereço de IP dos equipamentos
que o hospedam (por exemplo, 208.80.152.130 é o IP associado ao domínio
www.wikipedia.org). Endereços IP são usados pela camada de rede para
determinar a localização física e virtual do equipamento. Nomes de domínio,
porém, são mais mnemônicos para o usuário e empresas. É então
necessário um mecanismo para resolver um nome de domínio em um endereço IP.
Esta é a principal função do DNS.
Ocasionalmente, presume-se que o DNS serve apenas o
objetivo de mapear nomes de hosts da Internet a dados e mapear
endereços para nomes de host. Porém, o DNS pode armazenar uma
grande variedade de tipo de dados, para praticamente qualquer finalidade.
Hierarquia
Devido ao tamanho da Internet, armazenar todos os
pares domínio - endereço IP em um único servidor DNS seria inviável por
questões de escalabilidade, que incluem:
·
Disponibilidade: se o
único servidor de DNS falhasse, o serviço se tornaria indisponível para o mundo
inteiro;
·
Volume de tráfego: o servidor deveria tratar os pedidos DNS do planeta inteiro;
·
Distância: grande
parte dos usuários estaria muito distante do servidor, onde quer que ele fosse
instalado, gerando grandes atrasos para resolver pedidos DNS;
·
Manutenção do banco de dados: o banco de dados deveria armazenar uma
quantidade de dados enorme e teria que ser atualizado com uma frequência muito
alta (assim que um novo domínio fosse associado a um endereço IP).
A solução encontrada foi usar uma base de dados
distribuída e hierárquica. Os servidores DNS se dividem nas seguintes
categorias:
·
Servidores-raiz;
·
Servidores
de domínio de topo;
·
Servidores
com autoridade.
Servidores-raiz
No topo da hierarquia estão os 13 servidores raiz. Um
servidor-raiz (root name server) é um servidor de nome para a zona raiz
do DNS (Domain Name System). A sua função é responder diretamente às
requisições de registros da zona raiz e responder a outras requisições
retornando uma lista dos servidores de nome designados para o domínio de
topo apropriado. Os servidores raiz são parte crucial da Internet porque
são o primeiro passo em resolver nomes para endereços IP, esses últimos
usados para comunicação entre hosts.
Servidores
de domínio de topo (top-level domain)
Cada domínio é formado por nomes separados por pontos.
O nome mais à direita é chamado de domínio de topo. Exemplos de domínios
de topo são .com, .org, .net, .edu, .inf, .gov.
Cada servidor de domínio de topo conhece os endereços
dos servidores autoritativos que pertencem àquele domínio de topo, ou o
endereço de algum servidor DNS intermediário que conhece um servidor autoritário.
Há também terminações orientadas a países, chamadas de
Código de País para Domínios de Topo/Primeiro Nível (Country Code Top Level
Domains). Por exemplo: .br para o Brasil, .ar para a
Argentina, .fr para a França e assim por diante. Há também
combinações, como .com.br e .blog.br.[11]
Servidores
com autoridade
O servidor com autoridade de um domínio possui os
registros originais que associam aquele domínio a seu endereço de IP. Toda vez
que um domínio adquire um novo endereço, essas informações devem ser
adicionadas a pelo menos dois servidores autoritativos. Um deles
será o servidor autoritativo principal e o outro, o secundário. Isso é feito
para minimizar o risco de, em caso de erros em um servidor DNS, perder todas as
informações originais do endereço daquele domínio.
Métodos de resolução: iterativo e recursivo
Com as três classes de servidores DNS, já é possível
resolver qualquer requisição DNS. Basta fazer uma requisição a um servidor
raiz, e esse retornará o endereço do servidor de topo responsável. Então
repete-se a requisição para o servidor de topo, que retornará o endereço do
servidor autoritativo ou algum intermediário. Repete-se a requisição aos
servidores intermediários (se houver) até obter o endereço do servidor
autoritativo, que finalmente retornará o endereço IP do domínio desejado.
Repare que essa solução não resolve um dos problemas
de escalabilidade completamente: os servidores raiz tem que ser acessados uma
vez para cada requisição que for feita em toda a internet. Esses servidores
também podem estar muito longe do cliente que faz a consulta. Além disso, para
resolver cada requisição, são precisas várias consultas, uma para cada servidor
na hierarquia entre o raiz e o autoritativo.
Esta forma de resolver consultas é chamada de iterativa ou
não-recursiva: cada servidor retorna ao cliente (ou ao servidor local
requisitante, como explicado adiante) o endereço do próximo servidor no caminho
para o autoritativo, e o cliente ou servidor local fica encarregado de fazer as
próximas requisições.
Há também o método recursivo: o servidor pode se
responsabilizar por fazer a requisição ao próximo servidor, que fará a
requisição ao próximo, até chegar ao autoritativo, que retornará o endereço
desejado, e esse endereço será retornado para cada servidor no caminho até
chegar ao cliente. Esse método faz com que o cliente realize apenas uma
consulta e receba diretamente o endereço desejado, porém aumenta a carga dos
servidores no caminho. Por isso, servidores podem se recusar a resolver
requisições recursivas.
Melhorias de performance
Dois recursos são usados em conjunto para reduzir a
quantidade de requisições que os servidores raiz devem tratar e a quantidade de
requisições feitas para resolver cada consulta: cache e servidor local.
Cache
Toda vez que um servidor retorna o resultado de uma
requisição para a qual ele não é autoridade (método de resolução recursivo),
ele armazena temporariamente aquele registro. Se, dentro do tempo de vida do
registro (TTL, Time to Live), alguma requisição igual for feita, o
servidor DNS pode retornar o resultado sem a necessidade de uma nova consulta.
Note que isso pode provocar inconsistência, já que se um domínio mudar de
endereço durante o tempo de vida do cache, o registro estará
desatualizado. Apenas o servidor autoritativo tem a garantia de ter a
informação correta. É possível exigir, na mensagem de requisição DNS, que a
resposta seja dada pelo servidor autoritativo.
Servidor
local
Esse tipo de servidor não pertence à hierarquia DNS,
mas é fundamental para o seu bom funcionamento. Em vez de fazer requisições a
um servidor raiz, cada cliente faz sua requisição a um servidor local, que
geralmente localiza-se fisicamente muito próximo do cliente, por exemplo
um servidor proxy. Este se encarrega de resolver a requisição. Com o uso
de cache, o servidor local pode ter a resposta pronta, ou ao menos conhecer algum
servidor mais próximo ao autoritativo que o raiz (por exemplo, o servidor de
topo), reduzindo a carga dos servidores raiz.
DNS reverso (reverse lookup)
Normalmente o DNS atua resolvendo o nome do domínio de
um host qualquer para seu endereço IPcorrespondente. O DNS
Reverso resolve o endereço IP, buscando o nome de domínio associado ao
host. Ou seja, quando temos disponível o endereço IP de um host e não sabemos o
endereço do domínio (nome dado à máquina ou outro equipamento que acesse uma
rede), tentamos resolver o endereço IP através do DNS reverso que procura qual
nome de domínio está associado àquele endereço. Os servidores que utilizam o
DNS Reverso conseguem verificar a autenticidade de endereços, verificando se o
endereço IP atual corresponde ao endereço IP informado pelo servidor DNS. Isto
evita que alguém utilize um domínio que não lhe pertence para enviar spam,
por exemplo.
Estrutura
Registro de nome de domínio
A organização responsável por atribuir nomes de
domínio e endereços IP em nível global é a ICANN.
Comentários
Enviar um comentário