Módulo 14 – DNS Domain Name System Existem diversas maneiras de sermos identificados, através do nome, CPF, RG, etc. Cada uma dessas maneiras se encaixa em um contexto adequado. Por exemplo, a universidade prefere identificar seu aluno pela matrícula do que pelo seu nome completo, já as pessoas preferem identificar seus amigos e parentes pelo nome pois é bem mais fácil de se lembra do que o CPF. Imagine você sendo chamado pelo CPF, você entenderia? Da mesma forma que podemos ser identificados de várias maneiras, os Hosts espalhados pela internet também podem. Nomes como www.google.com.br, www.globo.com, www.terra.com.br, etc. são fáceis de serem lembrados e por isso são bem utilizados pelos usuários. Infelizmente esse tipo de identificação fornece poucas informações sobre a localização desses Hosts, como o universo de caracteres utilizados nos nomes são variáveis isso torna difícil o processamento dos roteadores e por essas razões é que os Hosts também são identificados pelo endereço IP. Para que haja uma conciliação entre o endereço IP e a identificação através dos nomes com caracteres é necessário um serviço de diretório que execute a tradução dos nomes para os endereços IP, essa é a tarefa do DNS (Domain Name System – Sistema de nome de Domínios). O DNS pode ser entendido com um grande banco de dados distribuído, implementado através de uma hierarquia de servidores de nomes conhecidos como servidores DNS, tem o auxilio de um protocolo da camada de aplicação permitindo que os Hosts consultem o banco de dados de informações. As entidades da camada de aplicação que utilizam o dns são: http, SMTP,FTP,etc. Elas utilizam o DNS para traduzir nomes de Hosts que são fornecidos pelo usuário, para o endereço IP. Como exemplo, quando você digita no Browser do seu computador a URL www.google.com.br acontece os seguintes passos: 1. Sua própria máquina executa o lado cliente da aplicação DNS; 2. O Browser passa o nome do Host www.google.com.br para o lado cliente da aplicação; 3. O cliente DNS envia uma consulta para o servidor DNS contendo o endereço www.google.com.br; 4. O servidor DNS envia uma resposta para o cliente contendo o IP do Host desejado; 5. Depois de receber o endereço, o Browser abre uma conexão TCP com um processo http localizado naquele endereço IP. Como foi observado nesse passo a passo que acontece uma troca de mensagens entre o servidor e o cliente DNS, existe um pequeno atraso para as aplicações de internet que utilizam os serviços de DNS. Para diminuir esse problema,os endereços IP que são procurados com freqüência ficam armazenados no cache de servidores de DNS próximos e com isso ajuda a reduzir o tráfego e o atraso. Assim como os protocolos HTTP ,FTP, SMTP o DNS também é um protocolo da camada de aplicação, só que o seu papel é bem diferente dos outros pois ele não é uma aplicação com o qual os usuários interagem diretamente, em vez da interação, ele fornece uma função interna da internet que é a tradução de nomes para endereços IP. O DNS não é responsável apenas pela tradução de nomes, existem outros serviços que ele desempenha que são os seguintes: Apelidos dos Hosts: Às vezes alguns Hosts possuem um nome complicado ou então mais de um nome. Um nome como zona1.setor-x.corporate.com.br pode ter dois apelidos www.corporate.com.br e corporate.com.br. Os apelidos são na maioria das vezes bem mais fáceis de serem lembrados, com isso o DNS pode ser chamado para obter o nome real do apelido. Apelido do servidor de correio: Assim como no apelido dos Hosts, é interessante que o nome de um e-mail seja fácil de ser lembrado. Quem tem uma conta no Yahoo pode ter o seguinte e-mail [email protected], só que o servidor de hospedagem do Yahoo pode ter um nome complicado como zona1.setor-x.yahoo.com.br. O DNS é chamado pela aplicação de correio eletrônico para obter o nome real a partir do apelido que é fornecido e o endereço IP do servidor. Distribuição de Cargas: O DNS é bastante utilizado para realizar a distribuição de cargas em sites que são bastante visitados como o google.com.br. Essa distribuição é feita com a utilização de vários servidores que utilizam IP’s diferentes. O conjunto de IP’s desses servidores são associados ao nome real do site e armazenados no bando de dados do DNS. Quando um computador cliente solicita o endereço do site, o servidor de DNS oferece um conjunto de endereços IP, só que ele efetua um rodízio na ordem dos endereços a cada solicitação, esse rodízio distribuí o tráfego entre os vários servidores replicados e balanceia a carga entre eles. 14.1 Banco de dados centralizado Um modo simples e objetivo de se visualizar o DNS e seus serviços, seria um único servidor de nome contendo todos os mapeamentos. Os usuários dirigiriam todas as suas consultas para esse único ponto que responderia diretamente todas as consultas. Essa simplicidade é bem interessante só que não é adequada para a internet de hoje pois: Ponto único sujeito a falha: Se o servidor DNS parar, toda a internet para. Alto volume de tráfego: Imagine um único servidor DNS manipulando todas as consultas de milhares de Hosts. Banco de dados distante: Não seria possível que um único servidor estivesse próximo de todos os clientes, com isso resultaria em grandes atrasos. Grande volume de dados: Como seria um único servidor, o seu banco de dados armazenaria uma grande quantidade de informações e seria enorme, isso ocasionaria uma atualização freqüente das informações por causa dos novos Hosts que surgiriam. Como você deve ter observado, um único servidor de DNS centralizado não seria viável, por isso que o DNS é um projeto distribuído. 14.2 Banco de dados distribuído Para resolver todos os problemas que são causados por um banco de dados centralizado, o DNS utiliza um grande número de servidores que são organizados de forma hierárquica e distribuídos em todo o mundo, fazendo com que todos os mapeamentos da internet estejam espalhados. Existem três classes de servidores de nomes: Servidor de nomes raiz: Na internet existem aproximadamente 20 servidores de nomes espalhados pelo mundo, a maior parte se encontra na América do Norte. Cada um desses servidores é formado por um conglomerado de servidores replicados, que garante segurança e confiabilidade das informações. Servidor de nome de domínio de alto nível (TDL): Esses servidores são responsáveis pelos domínios de alto nível como .com, .org, .net e por todos os domínios de alto nível dos países como .br, .ar, .jp. Servidor de nome com autoridade: Todas as organizações que possuem um servidor que possa ser acessado publicamente pela internet, devem fornecer registros de DNS que faça o mapeamento desses servidores para um endereço IP. Algumas organizações preferem ter seu próprio servidor DNS para abrigar esses serviços, ou então utilizam alguns provedores de serviços. 14.3 Cache DNS O DND utiliza muito o cache para melhorar o desempenho em relação ao atraso e reduzir o número de mensagens de DNS pela internet. Seu funcionamento é bem simples, quando um servidor de DNS recebe a resposta de uma cadeia de consulta ele vai armazenando essas informações em sua memória local. Se uma nova consulta for efetuada e o endereço desejado já estiver em memória, ele pode fornecer o endereço IP desejado mesmo que não tenha a autoridade para esse nome. Esse armazenamento de endereços não é permanente, ele permanece após um período de tempo que na maioria dos servidores DNS é de dois dias, após esse período as informações que estão no cache são descartadas.