A consulta ao servidor de nomes é algo que ocorre o tempo todo em um computador que se conecta
outros sem que o usuário se dê conta.
Os hosts se comunicam efetivamente usando enderecos IP. Quando um nome de host com o qual queremos nos
comunicacar e' especificado, ele deve primeiro ser traduzido para o endereco ip deste host para que a
comunicacao efetivamente possa ocorrer. A este processo se da' o nome de resolução de nomes.
                                                                                                         
Sem este processo a utilizacao da internet ficaria bastante complicada pois teriamos que ter anotados os
enderecos IP de todos os hosts com o qual gostariamos de nos comunicar.
                                                                                                         
E' algo similar ao servico 102 da telefonica. Vc quer ligar para Joao da Silva em Sao Paulo, entao vc liga para o servico 102, informa o nome desejado e eles te informam o numero do telefone da pessoa e, ai entao, vc efetivamente disca o numero da pessoa.
                                                                                                         
Descrição passo a passo da resolução de nomes.

Passo 1 - Arquivo /etc/nsswitch.conf
                                                                                                         
Nos sistemas Solaris e outros sistemas Unix que fazem uso do arquivo
nsswitch.conf para determinar como encontrar os vários tipos de
informacoes de rede, o primeiro passo e' consultar este arquivo.
                                                                                                         
A linha hosts neste arquivo dirá ao sistema que serviço usar para resolver nomes de hosts.
Se a linha hosts se parece com a mostrada abaixo, o proximo passo na resolução de nomes será o
DNS. Se as palavras dns e files estivessem listadas em ordem inversa, o proximo passo seria consultar
o arquivo /etc/hosts.
                                                                                                         
hosts:      dns files [NOTFOUND=return]

Passo 2: /etc/resolv.conf
                                                                                                         
O passo 2(assumindo uma linha hosts como a acima) seria o arquivo
/etc/resolv.conf. Este arquivo diz ao sistema onde encontrar o
servidor DNS que agirá como seu ponto de contato para informacoes de
DNS. Este arquivo contém algo como
                                                                                                         
domain dragonflyditch.com
nameserver 10.10.10.2
nameserver 10.10.11.2
search dragonflyditch.com
                                                                                                         
Neste exemplo, o servidor de DNS é especificado para consultar o
dominio dragonflyditch.com. Os dois servidores de nomes, localizados
nos enderecos 10.10.10.2 and 10.10.11.2, sao comumente um servidor
mestre e um escravo (replica) mas nao há uma forma de se dizer isto
no arquivo /etc/resolv.conf.

Passo 3: Um servidor DNS local
                                                                                                         
O passo 3 envolve o primeiro dos servidores de nomes listado. Geralmente
este é um servidor de nomes que pertence a uma organização em particular,
 dai entao, apto a resolver os nomes de sistemas locais e que nao podem ser
resolvidos na Internet. Se este servidor, por alguma razao,  nao responde a
 consulta, esta será enviada para o segundo dos servidores de nomes listados
e assim por diante.
                                                                                                         
O servidor de nomes que responder irá examinar o nome de host que lhe foi enviado
e determinará se ou nao o host é um membro de seu próprio domínio. Isto
acontece dependendo se o nome do host tem um dominio ligado ele. Por
exemplo, se o servidor de nomes para o dominio dragonflyditch.com é consultado
para resolver o nome www.xanga.com, ele verificará se www.xanga.com.dragonflyditch.com
é um host conhecido antes de verificar fora do domínio local.
                                                                                                         
Este servidor de nomes também irá procurar em seu cache para ver se ele já tem uma resposta
salva para esta consulta resultado de uma consulta anterior. Se o endereço ip do
nome de host desejado estiver no cache, ele será passado então a quem fez a consulta.

                                                                                                   
Passo 4: Um servidor de dominios raiz
                                                                                                         
Uma vez que o servidor de nomes inicial determinou que o nome de host
requisitado nao está nos arquivos de sua zona nem no seu cache, ele irá
entao fazer uso dos servidores de nomes raizes - o nível mais alto de
servidores que mantem informacoes a respeito da localizacao de servidores de
nomes para os vários dominios - para localizar um servidor de nomes que é
responsável pela raiz da árvore DNS. A informacao a respeito dos servidores de
dominio raizes é mantida no arquivo "hints" do servidor. Ele pode ser chamado
de root.hints, root.cache ou named.root; o nome nao é importante, desde que
seja aquele especificado no arquivo named.conf. Com o arquivo de servidores raizes,
um servidor de nomes é capaz de localizar servidores de nomes que sao autoridades
para qualquer dominio DNS.
                                                                                                         
O servidor de nomes primeiro extrai o nome do host para determinar a qual dominio ele
pertence(por exemplo, .com .br .org). Ele entao faz uma consulta iterativa para encontrar
o servidor para o dominio alvo.
                                                                                                         
Passo 5: Um servidor de nomes com autoridade sobre um dominio.
                                                                                                         
Uma vez que o servidor de nomes localizou o servidor de nomes que tem
autoridade sobre um dominio particular, ele pode entao requisitar a
informacao necessaria(o endereco IP do host desejado) e retornar aquela
informacao, quando recebida, para o cliente que a requisitou.
                                                                                                         
Stop 6: O processo de requisicao.
                                                                                                         
O tempo de uma consulta DNS é geralmente medido em milisegundos. A despeito do
numero de passos requeridos, o processo é robusto e surpreendentemente confiavel.
                                                                                                   

-------------------------------------------------------------------------------------
O texto a seguir é uma descricao de como a consulta é feita iterativamente.
                                                                                                   

Este texto é uma tradução da página http://cr.yp.to/djbdns/faq/orientation.html#dns
                                                                                
Como o DSN funciona? Como meu computador encontra o endereço IP do site, por exemplo,
 network-surveys.cr.yp.to
                                                                                
Resposta: Seu computador entra em contato com uma série de servidores de nomes na Internet.
Existem diversos servidores de nomes com informação a respeito de network-surveys.cr.yp.to
Um servidor central raiz (central root server) no endereço 192.5.5.241 tem a seguinte informação:
                                                                                
.:192.5.5.241
&to:198.6.1.82
                                                                                
A segunda linha é uma delegação. Ela diz "para informações a respeito de .to, pergunte ao
 servidor DNS no endereço 198.6.1.82." O servidor DNS no endereço 192.168.1.82 tem a seguinte
informacao

                                                                                                         
     .to:198.6.1.82
     &yp.to:131.193.178.181
                                                                                                         
A segunda linha diz: "Para informação a respeito de .yp.to, pergunte ao servidor de DNS no endereço
  131.193.178.181." O servidor de DNS no endereço IP 131.193.178.181 tem a seguinte informação:
                                                                                                         
     .yp.to:131.193.178.181
     =network-surveys.cr.yp.to:131.193.178.100
                                                                                                         
A segunda linha dá o endereço IP de network-surveys.cr.yp.to.
                                                                                                         
Seu computador inicia com o endereço do servidor raiz especificado em um arquivo em disco.
Ele conversa com o root server, depois com  o servidor .to no endereço 198.6.1.82, depois
 com o servidor .yp.to no endereço 131.193.178.181, e finalmente ele tem a resposta. Ele se
 lembra de tudo que ele aprendeu(durante um tempo limitado; a informação se altera!) para
 ganhar tempo depois. Todo este trabalho é feito por um cache DNS rodando em seu computador.
                                                                                                         
Para se proteger contra falhas de computadores, existem na realidade diversos root servers
 e diversos servidores .to. Cada um dos servidores root tem a seguinte informação:

     .:198.41.0.4:a
     .:128.9.0.107:b
     .:192.33.4.12:c
     .:128.8.10.90:d
     .:192.203.230.10:e
     .:192.5.5.241:f
     .:192.112.36.4:g
     .:128.63.2.53:h
     .:192.36.148.17:i
     .:198.41.0.10:j
     .:193.0.14.129:k
     .:198.32.64.12:l
     .:202.12.27.33:m
     &to:128.250.1.21:a
     &to:193.0.0.193:b
     &to:196.7.0.139:c
     &to:206.184.59.10:d
     &to:198.6.1.82:e
     &to:206.86.247.253:f
     &to:148.59.19.11:g

Cada um dos servidores .to tem a seguinte informação:
                                                                                                         
     .to:128.250.1.21:a
     .to:193.0.0.193:b
     .to:196.7.0.139:c
     .to:206.184.59.10:d
     .to:198.6.1.82:e
     .to:206.86.247.253:f
     .to:148.59.19.11:g
     &yp.to:131.193.178.181:a
     # ou, no formato BIND arquivo de zona master:
     # yp.to IN NS a.ns.yp.to
     # a.ns.yp.to IN A 131.193.178.181
                                                                                                         
Seu computador escolhe o root server aleatoriamente. Quando ele recebe uma resposta de algum
root server, ele se dirige aos servidores .to escolhendo um também aleatoriamente.
                                                                                                         
-------------------------------------------------------------------------------------------
Como funciona o DNS reverso? Como meu computador encontra o nome de, por exemplo, 208.33.217.122?
                                                                                                         
Resposta: Seu computador pergunta a  uma série de servidores DNS pelo nome de
 122.217.33.208.in-addr.arpa. Os root servers tem a seguinte informação:
                                                                                                         
     &33.208.in-addr.arpa:206.228.179.10:c
     &33.208.in-addr.arpa:144.228.254.10:b
     &33.208.in-addr.arpa:144.228.255.10:a
                                                                                                         
O servidor DNS no endereço  144.228.254.10 tem a seguinte informação:
                                                                                                         
                                                                                                         
     .33.208.in-addr.arpa:144.228.255.10:a
     .33.208.in-addr.arpa:206.228.179.10:c
     .33.208.in-addr.arpa:144.228.254.10:b
     &217.33.208.in-addr.arpa:209.191.164.20:a
     &217.33.208.in-addr.arpa:206.253.194.65:b

O servidor DNS no endereço IP 209.191.164.20 tem a seguinte informação:
                                                                                                         
     .217.33.208.in-addr.arpa:209.191.164.20:a
     .217.33.208.in-addr.arpa:206.253.194.65:b
     =mm-outgoing.amazon.com:208.33.217.122
                                                                                                         
-------------------------------------------------------------------------------------------
                                                                                                         
Que programas eu devo usar? Eu vejo uma disponibilidade de diferentes programas no pacote
djbdns. De quais eu preciso?
                                                                                                         
Resposta: Normalmente cada computador rodará um dnscache program como o cache local no endereço
 127.0.0.1.
                                                                                                         
Como uma alternativa, um computador pode rodar o dnscache como um cache externo DNS em um endereço
IP público. Outros computadores (se autorizados) podem então usar aquele cache ao invés de rodarem
 caches locais.
                                                                                                         
Você também precisará rodar o programa  tinydns como um servidor DNS em qualquer
computador para os quais os nomes tem sido, ou serão delegados. Você não precisa do tinydns
se sua informação de host é suprida pelo servidor DNS de seu provedor.
                                                                                                         
Os resultados finais para uma típica rede departamental pareceriam com isto:
                                                                                                         
                        em endereco e        em endereco com isto no
     computer  rodando  IP privado  rodando  IP publico  /etc/resolv.conf
     --------------------------------------------------------------------
     unix1     dnscache 127.0.0.1   tinydns  18.25.0.1   127.0.0.1
     unix2     dnscache 127.0.0.1   tinydns  18.25.0.2   127.0.0.1
     unix3     dnscache 127.0.0.1   -        18.25.0.3   127.0.0.1
     unix4     dnscache 127.0.0.1   -        18.25.0.4   127.0.0.1
     unix5     -        127.0.0.1   dnscache 18.25.0.5   18.25.0.5
     doze1     -        127.0.0.1   -        18.25.0.6   18.25.0.5
     doze2     -        127.0.0.1   -        18.25.0.7   18.25.0.5
     doze3     -        127.0.0.1   -        18.25.0.8   18.25.0.5
     doze4     -        127.0.0.1   -        18.25.0.9   18.25.0.5
                                                                                                         
unix1, unix2, unix3, e unix4 estão rodando caches DNS locais. unix1 and unix2 estão rodando
 também servidores DNS; cada servidor está provendo a mesma informação a respeito de varios
nomes que foram delegado a 18.25.0.1 e 18.25.0.2. unix está rodando um DNS externo cache que
 é compartilhado por unix5, doze1, doze2, doze3, e  doze4.
Se você está configurando um computador pessoal, você pode seguir o modelo de doze4 mostrado
acima, com o endereço do cache externo de seu provedor em /etc/resolv.conf; você nao precisa
rodar um cache local. Ou você pode setguir o modelo de unix4, com um cache local em
127.0.0.1 e com 127.0.0.1 no /etc/resolv.conf; respostas de cache sao extremamente rápidas,
 e você não precisa de qualquer informação de seu provedor. Você pode querer ter o seu cache
local repassando os pedidos de nomes para o cache de seu provedor se sya conexão de rede é
lenta ou limitada por um firewall.
                                                                                                         
Se você está provendo endereços para um grande grupo de servidores web, você pode querer usar
 pickdns para balancear a carga HTTP. Você pode tambem usar pickdns para prover diferentes
respostas para diferentes clientes. Na versao 1.04 e acima, estas caracteristicas foram
integradas ao tinydns.
Você pode também usar rbldns para prover listas tais como RBL ou DUL. Estas listas são usadas
 por rblsmtp.
                                                                                                         
Quais programas eu devo usar atrás de um firewall? Eu quero limitar o número de máquinas
que recebem pacotes UDP da internet. Eu gostaria tambem de ter também nomes de hosts
*.moon.af.mil que não são visíveis para a  Internet.

Resposta: Configure uns poucos caches externos. Defina seu firewall para permitir pacotes
 UDP entre a porta 53 da Internet e portas acima de 1024 em cada cache externo. Defina todos
 os seus computadores para usar estes caches.
                                                                                                         
Configure um servidor de DNS atrás do firewall, separado do servidor público de DNS. Coloque
seu nomes quaisquer.moon.af.mil neste servidor. Configure cada cache externo para consultar
ester servidor para nomes moon.af.mil.
                                                                                                         
Voce pode também querer rodar um servidor público de DNS reverso para prover nomes de hosts
 para todos o seus endereços IP.

---------------------------------------------------------------