Serviços fornecidos pelo DNS

Acabamos de ver que há duas maneiras de identificar um hospedeiro — por um nome de hospedeiro e por um endereço IP. As pessoas preferem o identificador nome de hospedeiro por ser mais fácil de lembrar, ao passo que roteadores preferem endereços IP de comprimento fixo e estruturados hierarquicamente. Para conciliar essas preferências, é necessário um serviço de diretório que traduza nomes de hospedeiro para endereços IP. Esta é a tarefa principal do DNS (domain name system — sistema de nomes de domínio) da Internet. O DNS é (1) um banco de dados distribuído implementado em uma hierarquia de servidores de nome (servidores DNS), e (2) um protocolo de camada de aplicação que permite que hospedeiros consultem o banco de dados distribuído. Os servidores de nome são frequentemente máquinas UNIX que executam o software BIND (Berkeley Internet Name Domain) [BIND, 2009]. O protocolo DNS utiliza UDP e usa a porta 53.

O DNS é comumente empregado por outras entidades da camada de aplicação — inclusive HTTP, SMTP e FTP — para traduzir nomes de hospedeiros fornecidos por usuários para endereços IP. Como exemplo, considere o que acontece quando um browser (isto é, um cliente HTTP), que executa na máquina de algum usuário, requisita o URL www.someschool.edu/index.html. Para que a máquina do usuário possa enviar uma mensagem de requisição HTTP ao servidor Web www.someschool.edu, ela precisa primeiramente obter o endereço IP de www.someschool.edu. Isso é feito da seguinte maneira:

1. A própria máquina do usuário executa o lado cliente da aplicação DNS. 

2. O browser extrai o nome de hospedeiro, www.someschool.edu, do URL e passa o nome para o lado cliente da aplicação DNS. 

3. O cliente DNS envia uma consulta contendo o nome do hospedeiro para um servidor DNS. 

4. O cliente DNS finalmente recebe uma resposta, que inclui o endereço IP correspondente ao nome de hospedeiro. 

5. Tão logo o browser receba o endereço do DNS, pode abrir uma conexão TCP com o processo servidor HTTP localizado naquele endereço IP.  

Vemos, por esse exemplo, que o DNS adiciona mais um atraso — às vezes substancial — às aplicações de Internet que o usam. Felizmente, como discutiremos mais adiante, o endereço IP procurado frequentemente está no cache de um servidor DNS ‘próximo’, o que ajuda a reduzir o tráfego DNS na rede, bem como o atraso médio do DNS.

O DNS provê alguns outros serviços importantes além da tradução de nomes de hospedeiro para endereços IP:

Apelidos de hospedeiro. Um hospedeiro com nome complicado pode ter um ou mais apelidos. Um nome como relay1.west-coast.enterprise.com pode ter, por exemplo, dois apelidos, como enterprise.com e www.enterprise.com. Nesse caso, o nome de hospedeiro relay1.west-coast. enterprise.com é denominado nome canônico. Apelidos, quando existem, são em geral mais fáceis de lembrar do que o nome canônico. O DNS pode ser chamado por uma aplicação para obter o nome canônico correspondente a um apelido fornecido, bem como para obter o endereço IP do hospedeiro.

Apelidos de servidor de correio. Por razões óbvias, é adequado que endereços de e-mail sejam fáceis de lembrar. Por exemplo, se Bob tem uma conta no Hotmail, seu endereço de e-mail pode ser simplesmente bob@hotmail.com. Contudo, o nome de hospedeiro do servidor do Hotmail é mais complicado e muito mais difícil de lembrar do que simplesmente hotmail.com (por exemplo, o nome canônico pode ser algo parecido com relay1.west-coast.hotmail.com). O DNS pode ser chamado por uma aplicação de correio para obter o nome canônico a partir de um apelido fornecido, bem como o endereço IP do hospedeiro. Na verdade, o registro MX (veja adiante) permite que o servidor de correio e o servidor Web de uma empresa tenham nomes (apelidos) idênticos; por exemplo, o servidor Web e o servidor de correio de uma empresa podem ambos ser denominados enterprise.com.

Distribuição de carga. O DNS também é usado para realizar distribuição de carga entre servidores replicados, tais como os servidores Web replicados. Sites movimentados como cnn.com são replicados em vários servidores, sendo que cada servidor roda em um sistema final diferente e tem um endereço IP diferente. Assim, no caso de servidores Web replicados, um conjunto de endereços IP fica associado a um único nome canônico e contido no banco de dados do DNS. Quando clientes consultam um nome mapeado para um conjunto de endereços, o DNS responde com o conjunto inteiro de endereços IP, mas faz um rodízio da ordem dos endereços dentro de cada resposta. Como um cliente normalmente envia sua mensagem de requisição HTTP ao endereço IP que ocupa o primeiro lugar no conjunto, o rodízio de DNS distribui o tráfego entre os servidores replicados. O rodízio de DNS também é usado para e-mail, de modo que vários servidores de correio podem ter o mesmo apelido. Recentemente, empresas distribuidoras de conteúdo como a Akamai [Akamai, 2009] passaram a usar o DNS de maneira mais sofisticada para prover distribuição de conteúdo na Web.

O DNS está especificado no RFC 1034 e no RFC 1035 e atualizado em diversos RFCs adicionais. É um sistema complexo e, neste livro, apenas mencionamos os aspectos fundamentais de sua operação. O leitor interessado pode consultar os RFCs citados, o livro escrito por Abitz e Liu [Abitz, 1993] e também o artigo de [Mockapetris, 1988], que apresenta uma retrospectiva e uma ótima descrição do que e do porquê do DNS, e [Mockapetris, 2005].

DNS: funções decisivas de rede via paradigma cliente-servidor

Como os protocolos HTTP, FTP e SMTP, o DNS é um protocolo da camada de aplicação, já que (1) roda entre sistemas finais comunicantes usando o paradigma cliente-servidor e (2) depende de um protocolo de transporte fim a fim subjacente para transferir mensagens DNS entre sistemas finais comunicantes. Em outro sentido, contudo, o papel do DNS é bastante diferente das aplicações Web, da transferência de arquivo e do e-mail. Diferentemente dessas aplicações, o DNS não é uma aplicação com a qual o usuário interage diretamente. Em vez disso, fornece uma função interna da Internet — a saber, a tradução de nomes de hospedeiro para seus endereços IP subjacentes, para aplicações de usuário e outros softwares da Internet. Notamos, na Seção 1.2, que muito da complexidade da arquitetura da Internet está localizada na ‘periferia’ da rede. O DNS, que implementa o processo crucial de tradução de nome para endereço usando clientes e servidores localizados nas bordas da rede, é mais um exemplo dessa filosofia de projeto.

ATIVIDADE DE FIXAÇÃO

Comentários

Postagens mais visitadas deste blog

Wi-Fi: LANs sem fio 802.11

Caches Web

Acesso celular à Internet