Baixe o app para aproveitar ainda mais
Prévia do material em texto
CURSO CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: ARQUITETURA DE REDES DE COMPUTADORES TEMA: SERVIÇO DE CORREIO ELETRÔNICO (SMTP, POP E IMAP) E DE NOMES (DNS) TEXTO PARA APOIO AO ESTUDO 1. Correio Eletrônico na Internet (SMTP, IMAP e POP) O correio eletrônico existe desde o início da Internet. Era uma das aplicações mais populares quando ela ainda estava na infância, e ficou mais e mais elaborado e poderoso ao longo dos anos. É uma das aplicações mais importantes e de maior uso na Internet. Tal como o correio normal, o e-mail é um meio de comunicação assíncrono — as pessoas enviam e recebem mensagens quando for conveniente para elas, sem ter de estar coordenadas com o horário das outras. Ao contrário do correio normal, que anda a passos lentos, o eletrônico é rápido, fácil de distribuir e barato. O correio eletrônico moderno tem muitas características poderosas, incluindo mensagens com anexos, hiperlinks, textos formatados em HTML e fotos embutidas. A Figura 1 apresenta uma visão do sistema de correio da Internet. Vemos, por esse diagrama, que há três componentes principais: agentes de usuário, servidores de correio e o SMTP (Simple Mail Transfer Protocol). Figura 1-uma visão do sistema de e-mail da internet Descreveremos agora cada um deles no contexto de um remetente, Alice, enviando uma mensagem de e-mail para um destinatário, Bob. Agentes de usuários permitem que usuários leiam, respondam, encaminhem, salvem e componham mensagens. Microsoft Outlook e Apple Mail são alguns desses agentes. Quando Alice termina de compor sua mensagem, seu agente de usuário envia a mensagem para seu servidor de correio, onde a mensagem é colocada em sua fila de mensagens de saída. Quando Bob quer ler uma mensagem, seu agente de usuário apanha a mensagem de sua caixa de correio, em seu servidor de correio. Servidores de correio formam o núcleo da infraestrutura do e-mail. Cada destinatário, como Bob, tem uma caixa postal localizada em um desses servidores. A de Bob administra e guarda as mensagens que foram enviadas a ele. Uma mensagem típica inicia sua jornada no agente de usuário do remetente, vai até seu servidor de correio e viaja até o do destinatário, onde é depositada na caixa postal. Quando Bob quer acessar as mensagens de sua caixa postal, o servidor de correio que contém sua caixa postal o autentica (com nome de usuário e senha). O servidor de correio de Alice também deve cuidar das falhas no servidor de correio de Bob. Se o servidor de correio dela não puder entregar a correspondência ao dele, manterá a mensagem em uma fila de mensagens e tentará transferi-la mais tarde. O SMTP é o principal protocolo de camada de aplicação do correio eletrônico da Internet. Usa o serviço confiável de transferência de dados do TCP para transferir mensagens do servidor de correio do remetente para o do destinatário. Como acontece com a maioria dos protocolos de camada de aplicação, o SMTP tem dois lados: um lado cliente, que funciona no servidor de correio do remetente, e um lado servidor, que funciona no servidor de correio do destinatário. Ambos funcionam em todos os servidores de correio. Quando um servidor de correio envia correspondência para outros, age como um cliente SMTP. Quando o servidor de correio recebe correspondência de outros, age como um servidor SMTP. O envio de um simples e-mail de Alice para Bob requer nove diferentes passos, conforme mostrado na figura. Alice e Bob usam três diferentes agentes: um Agente de Usuário (UA – User Agent), um Agente de Transferência de Mensagens (MTA – Mail Transfer Agent), e um Agente de Acesso a Mensagens (MAA – Message Access Agent). Para explicar a arquitetura de e-mail, vamos considerar um cenário comum, como o ilustrado na Figura 2. Quando Alice precisa enviar uma mensagem a Bob, ela executa um programa AU para preparar a mensagem e enviá-la para seu servidor de e-mail. O servidor de e-mail no lado de Alice usa uma fila para armazenar as mensagens a serem enviadas. A mensagem, no entanto, precisa ser enviada via Internet, do lado de Alice para o lado de Bob, usando um MTA. Aqui, dois agentes de transferência de mensagens são necessários: um cliente e um servidor. Como a maioria dos programas cliente-servidor na Internet, o servidor precisa estar sendo executado o tempo todo, porque ele não sabe quando um cliente vai pedir uma conexão. O cliente, por outro lado, pode ser ativado pelo sistema quando houver uma mensagem na fila de envio. O agente de usuário no lado de Bob permite que ele leia a mensagem recebida. (Forouzan, 2013) Figura 2-Alice envia uma mensagem a Bob (Forouzan, 2013) Bob, posteriormente, usa um cliente MAA para recuperar a mensagem de um servidor MAA em execução no segundo servidor. (Forouzan, 2013) Há dois pontos importantes que precisamos enfatizar aqui. Em primeiro lugar, Bob não pode ignorar o servidor de e-mail e usar o servidor MTA diretamente, pois para isto, teria que executar o servidor MTA o tempo todo, por não saber quando uma mensagem vai chegar. Isto significa que Bob precisa manter seu computador ligado o tempo todo se ele estiver conectado ao seu sistema por meio de uma LAN. Se estiver conectado por meio de uma WAN, deve manter a conexão aberta o tempo todo. Nenhuma dessas situações é viável hoje. (Forouzan, 2013) Em segundo lugar, perceba que Bob precisa de outro par de programas cliente-servidor: pro- gramas de acesso à mensagem. Isto porque um programa cliente-servidor MTA é um programa do tipo push: o cliente “empurra” a mensagem para o servidor. Bob precisa de um programa do tipo pull. O cliente precisa “puxar” a mensagem do servidor. (Forouzan, 2013) 1.1. Componentes do serviço de correio Agente de usuário O primeiro componente de um sistema de correio eletrônico é o agente de usuário (UA – user agent). Ele presta serviços ao usuário para facilitar o processo de envio e recebimento de uma mensagem. Um agente é um pacote de software (um programa) que compõe, lê, responde, e encaminha mensagens. Ele também gerencia caixas de correio locais nos computadores dos usuários. (Forouzan, 2013) Agentes de usuário modernos têm base em Interface Gráfica de Usuário (GUI – Graphical User Interface). Eles contêm componentes de GUI que permitem ao usuário interagir com o software usando o teclado e o mouse. Eles apresentam componentes gráficos, como ícones, barras de menus e janelas que facilitam o acesso aos serviços. Alguns exemplos de agentes de usuário com base em GUI são Mozilla Thunderbird, Eudora e Microsoft Outlook. (Forouzan, 2013) Para enviar um e-mail, o usuário, por meio do UA, cria uma entidade que se parece muito com uma carta comum. Ela contém um envelope e uma mensagem (ver Figura 3). O envelope geralmente contém o endereço do remetente, o endereço do destinatário e outras informações. A mensagem contém um cabeçalho e um corpo. O cabeçalho da mensagem define o remetente, o destinatário, o assunto da mensagem e algumas outras informações. O corpo da mensagem contém a informação de fato a ser lida pelo destinatário. (Forouzan, 2013) Figura 3-Formato de um e-mail. (Forouzan, 2013) O agente de usuário é acionado pelo usuário (ou por um temporizador). Se um usuário tem um e-mail, o UA notifica o usuário. Se o usuário está pronto para ler o e-mail, uma lista é apresentada na qual cada linha contém um resumo das informações sobre uma determinada mensagem na caixa de correio. O resumo geralmente inclui o endereço de e-mail do remetente, o assunto e o instante em que o e-mail foi enviado ou recebido. O usuário pode selecionar qualquer uma das mensagens e exibir o seu conteúdo na tela. (Forouzan, 2013) Agente de transferência de mensagens: SMTP Com base no cenário comum (Figura 2), podemos dizer que o e-mail é uma aplicação que precisa de três usos do paradigma cliente-servidor para realizar sua tarefa. É importante distinguir esses três usos quando estamos lidando com o e-mail. A Figura 4 mostra as trêsaplicações cliente-servidor correspondentes. Denominamos a primeira e a segunda como Agentes de Transferência de Mensagens (MTAs – Mail Transfer Agents), e a terceira como Agente de Acesso a Mensagens (MAA – Message Access Agent). (Forouzan, 2013) Figura 4-Protocolos usados no correio eletrônico (Forouzan, 2013) O protocolo formal que define os MTAs cliente e servidor na Internet é chamado Protocolo Simples de Transferência de Correio (SMTP – Simple Mail Transfer Protocol). O SMTP é usado duas vezes, uma entre o remetente e o servidor de e-mail do remetente e outra entre os dois servido- res de e-mail. Como veremos em breve, um outro protocolo é necessário entre o servidor de e-mail e o receptor. O SMTP simplesmente define como os comandos e as respostas devem ser enviados de um lado para outro. (Forouzan, 2013) O SMTP usa comandos e respostas para transferir mensagens entre um MTA cliente e um MTA servidor. O comando vai de um MTA cliente para um MTA servidor; a resposta vai de um MTA servidor para o MTA cliente. Cada comando ou resposta é terminado por um indicador de fim de linha formado por dois caracteres (retorno de carro e nova linha). Os comandos são enviados do cliente para o servidor. (Forouzan, 2013) Ele consiste em uma palavra-chave seguida de zero ou mais argumentos. O SMTP define 14 comandos. As respostas são enviadas pelo servidor para o cliente. Uma resposta é um código de três dígitos que pode ser seguido por informação textual adicional. (Forouzan, 2013) Agente de acesso a mensagens: POP e IMAP O primeiro e o segundo estágios da entrega do e-mail usam o SMTP. No entanto, o SMTP não está envolvido na terceira fase, porque é um protocolo do tipo push; ele serve para enviar a mensagem do cliente para o servidor. Em outras palavras, a direção da maior parte dos dados (as mensagens) é do cliente para o servidor. Por outro lado, a terceira fase precisa de um protocolo do tipo pull; o cliente precisa recuperar as mensagens do servidor. A direção da maioria dos dados é do servidor para o cliente. A terceira etapa usa um agente de acesso a mensagens. (Forouzan, 2013) Atualmente, dois protocolos de acesso a e-mail estão disponíveis: o Protocolo de Agência de Correio, versão 3 (POP3 – Post Office Protocol) e o Protocolo de Acesso a Correio da Internet, versão 4 (IMAP4 – Internet Mail Access Protocol). A Figura 4 ilustra o papel desses dois protocolos. (Forouzan, 2013) O Protocolo de Agência de Correio, versão 3 (POP3 – Post Office Protocol) é simples, porém limitado em termos de funcionalidade. O software cliente POP3 é instalado no computador do destinatário; o software servidor POP3 é instalado no servidor de e-mail. O acesso ao e-mail começa com o cliente, quando o usuário precisa fazer o download de seu e-mail da caixa de correio presente no servidor. O cliente abre uma conexão com o servidor na porta TCP 110. Em seguida, envia seu nome de usuário e senha para acessar a caixa de correio. O usuário pode, então, listar e recuperar as mensagens de correio, uma a uma. (Forouzan, 2013) Outro protocolo de acesso a e-mail é o Protocolo de Acesso a Correio da Internet, versão 4 (IMAP4 – Internet Mail Access Protocol). O IMAP4 é semelhante ao POP3, mas tem mais funcionalidades. O IMAP4 é mais poderoso e mais complexo. O POP3 apresenta várias deficiências. Ele não permite que o usuário organize seus e-mails no servidor, pois o usuário não pode ter diferentes pastas ali. Além disso, o POP3 não permite que o usuário verifique parcialmente o conteúdo do e-mail antes de obtê-lo. O IMAP4 fornece as seguintes funcionalidades extras: (Forouzan, 2013) • Um usuário pode verificar o cabeçalho do e-mail antes de obtê-lo. • Um usuário pode procurar por uma sequência específica de caracteres no conteúdo dos e-mails antes de obtê-los. • Um usuário pode obter um e-mail parcialmente. Isto é especialmente útil se a largura de banda é limitada e o e-mail inclui conteúdo multimídia que exija um elevado consumo de banda. • Um usuário pode criar, remover ou renomear caixas de correio no servidor de e-mail. • Um usuário pode criar uma hierarquia de caixas de correio em uma pasta para armazenamento de e- mails. 1.2. MIME O correio eletrônico tem uma estrutura simples, mas sua simplicidade tem um preço. Ele permite enviar apenas mensagens no formato NVT ASCII de 7 bits, ou seja, tem algumas limitações. Não pode ser usado para outros idiomas além do inglês (como francês, português, alemão, hebraico, russo, chinês e japonês). Além disso, ele não pode ser usado para enviar arquivos binários, de vídeo ou de áudio. (Forouzan, 2013) O Extensões Multifunção para Mensagens de Internet (MIME – Multipurpose Internet Mail Extensions) é um protocolo suplementar que permite que dados não ASCII sejam enviados por e-mail. O MIME transforma dados não ASCII do lado do remetente em dados NVT ASCII e entrega o resultado ao MTA cliente para ser enviado via Internet. A mensagem no lado do destinatário é transformada novamente, levando de volta aos dados originais. Podemos pensar no MIME como um conjunto de funções de software que transformam dados não ASCII em dados ASCII e vice-versa. (Forouzan, 2013) 2. Serviço de nomes (DNS) Nós, seres humanos, podemos ser identificados por diversas maneiras. Por exemplo, podemos ser identificados pelo nome que aparece em nossa certidão de nascimento, pelo número do RG ou da carteira de motorista. Embora cada um desses números possa ser usado para identificar pessoas, em um dado contexto um pode ser mais adequado que outro. Por exemplo, os computadores da Receita Federal preferem usar o número do CPF (de tamanho fixo) ao nome que consta em nossa certidão de nascimento. Por outro lado, pessoas comuns preferem nosso nome de batismo, mais fácil de lembrar, ao número do CPF. (Kurose, 2013) Assim como seres humanos podem ser identificados de muitas maneiras, o mesmo acontece com hospedeiros da Internet. Um identificador é seu nome de hospedeiro (hostname). Nomes de hospedeiro — como cnn.com, www.yahoo.com, gaia.cs.umass.edu e cis.poly.edu — são fáceis de lembrar e, portanto, apreciados pelos seres humanos. Todavia, eles fornecem pouca — se é que alguma — informação sobre a localização de um hospedeiro na Internet. (Um nome como www.eurecom.fr, que termina com o código do país .fr, nos informa que o hospedeiro deve estar na França, mas não diz muito mais do que isso.) Além disso, como nomes de hospedeiros podem consistir em caracteres alfanuméricos de comprimento variável, seriam difíceis de ser processados por roteadores. Por essas razões, hospedeiros também são identificados pelo que denominamos endereços IP. (Kurose, 2013) 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 é (Kurose, 2013) (1) um banco de dados distribuído executado em uma hierarquia de servidores de DNS, e (2) um protocolo de camada de aplicação que permite que hospedeiros consultem o banco de dados distribuído. O protocolo DNS utiliza UDP e usa a porta 53. A Figura 5mostra como o TCP/IP usa um cliente DNS e um servidor DNS para mapear um nome para um endereço. Um usuário quer usar um cliente de transferência de arquivos para acessar o servidor de transferência de arquivos correspondente que está sendo executado em um host remoto. O usuário conhece apenas o nome do servidor de transferência de arquivos, tal como fontedearquivos.com. No entanto, a pilha de protocolos TCP/IP exige o endereço IP do servidor de transferência de arquivos para estabelecera conexão. Os seis passos a seguir permitem o mapeamento do nome do host para um endereço IP: (Forouzan, 2013) Figura 5-Propósito do DNS (Forouzan, 2013) 1. O usuário fornece o nome do host para o cliente de transferência de arquivos. 2. O cliente de transferência de arquivos passa o nome do host para o cliente DNS. 3. Cada computador, depois de inicializado, conhece o endereço de um servidor DNS. O cliente DNS envia uma mensagem para um servidor DNS com uma consulta, na qual consta o nome do servidor de transferência de arquivos, usando o endereço IP (conhecido) daquele servidor DNS. 4. O servidor DNS responde com o endereço IP do servidor de transferência de arquivos desejado. 5. O cliente DNS passa o endereço IP para o servidor de transferência de arquivos. 6. O cliente de transferência de arquivos usa o endereço IP recebido para acessar o servidor de transferência de arquivos. A função de busca de informações dentro do espaço de nomes é conhecida como resolução de nomes ou lookup. O processo funciona no modelo cliente-servidor, e o cliente é chamado de resolvedor (resolver), e o servidor, de servidor DNS. O processo se inicia quando o cliente necessita da resolução de um nome e essa solicitação é passada para o resolvedor. O resolvedor pode fazer parte do próprio aplicativo, por exemplo do browser, ou ser parte do sistema operacional. O resolvedor, por sua vez, solicita a resolução do nome a um servidor DNS, previamente definido no cliente. No Microsoft Windows, o comando ipconfig/all apresenta os servidores primário e secundário, se disponíveis, que serão referenciados pelo resolvedor na resolução de nomes. Depois de resolvida a solicitação, normalmente essa informação fica armazenada em uma memória cache do resolvedor por um certo período de tempo, a fim de evitar nova resolução de nomes já referenciados. O comando ipconfig/displaydns mostra as entradas da cache do resolvedor. (Maia, 2013) 2.1. Um banco de dados distribuído e hierárquico Para tratar da questão da escala, o DNS usa um grande número de servidores, organizados de maneira hierárquica e distribuídos por todo o mundo. Nenhum servidor DNS isolado tem todos os mapeamentos para todos os hospedeiros da Internet. Em vez disso, os mapeamentos são distribuídos pelos servidores DNS. Como uma primeira aproximação, há três classes de servidores DNS: raiz, de domínio de alto nível (top-level domain — TLD) e servidores DNS autoritativos — organizados em uma hierarquia, como mostra a Figura 6. (Kurose, 2013) Figura 6-Hierarquia de servidores DNS (Kurose, 2013) Para entender como essas três classes interagem, suponha que um cliente DNS queira determinar o endereço IP para o nome de hospedeiro www.amazon.com. Como uma primeira aproximação, ocorrerão os seguintes eventos. Primeiro, o cliente contatará um dos servidores raiz, que retornará endereços IP dos servidores TLD para o domínio de alto nível com. Então, o cliente contatará um desses servidores TLD, que retornará o endereço IP de um servidor autoritativo para amazon.com. Por fim, o cliente contatará um dos servidores autoritativos para amazon.com, que retornará o endereço IP para o nome de hospedeiro www.amazon.com. Mais adiante, analisaremos em detalhes esse processo de consulta DNS. Mas, primeiro, vamos examinar mais de perto as três classes de servidores DNS: (Kurose, 2013) • Servidores DNS raiz. Na Internet há 13 servidores DNS raiz (denominados de A a M) e a maior parte deles está localizada na América do Norte. Uma lista dos servidores DNS raiz existentes hoje está disponível em Root-servers. Embora tenhamos nos referido a cada um dos 13 servidores DNS raiz como se fossem um servidor único, na realidade, cada um é um conglomerado de servidores replicados, para fins de segurança e confiabilidade. No total, havia 247 servidores raiz no segundo semestre de 2011. (Kurose, 2013) • Servidores DNS de Domínio de Alto Nível (TLD). Esses servidores são responsáveis por domínios de alto nível como com, org, net, edu e gov, e por todos os domínios de alto nível de países, tais como uk, fr, ca e jp. A empresa Verisign Global Registry Services mantém os servidores TLD para o domínio de alto nível com e a Educause mantém os servidores TLD para o domínio de alto nível edu. (Kurose, 2013) • Servidores DNS autoritativos. Toda organização que tiver hospedeiros que possam ser acessados publicamente na Internet (como servidores Web e servidores de correio) deve fornecer registros DNS também acessíveis publicamente que mapeiem os nomes desses hospedeiros para endereços IP. Um servidor DNS autoritativo de uma organização abriga esses registros. Uma organização pode preferir executar seu próprio servidor DNS autoritativo para abrigar esses registros ou, como alternativa, pagar para armazená- los em um servidor DNS autoritativo de algum provedor de serviço. A maioria das universidades e empresas de grande porte executa e mantém seus próprios servidores DNS primário e secundário (backup) autoritativos. (Kurose, 2013) Os servidores DNS raiz, TLD e autoritativo pertencem à hierarquia de servidores DNS. Há mais um tipo importante de DNS, denominado servidor DNS local, que não pertence, estritamente, à hierarquia de servidores, mas, mesmo assim, é central para a arquitetura DNS. Cada ISP — como o de uma universidade, de um departamento acadêmico, de uma empresa ou de uma residência — tem um servidor DNS local (também denominado servidor DNS default). Quando um hospedeiro se conecta com um ISP, este fornece os endereços IP de um ou mais de seus servidores DNS locais. Determinar o endereço IP do seu servidor DNS local é fácil: basta acessar as janelas de estado da rede no Windows ou UNIX. (Kurose, 2013) 2.2. Tipos de consultas O servidor de DNS local possui a sua própria base de dados e armazena na sua memória cache as solicitações de nomes mais recentes. Sempre que um resolvedor solicita uma resolução de nome, o servidor DNS verifica se essa solicitação pode ser resolvida localmente. Caso não seja possível, pois o servidor DNS desconhece o nome solicitado, existem dois mecanismos de busca que podem ser utilizados para a resolução de nomes: busca iterativa e busca recursiva. (Maia, 2013) Na busca iterativa, apresentada na Figura 7, o cliente solicita ao resolvedor a resolução do nome www.wxyz.com.br. Caso desconheça o nome, o resolvedor solicita ao servidor DNS local a resolução do nome e, caso também desconheça, inicia o processo de busca. O servidor DNS local solicita a resolução do nome ao servidor DNS raiz e, caso desconheça, retorna o endereço do servidor DNS responsável pelo domínio br. O servidor DNS local solicita a resolução do nome ao servidor DNS br e, caso desconheça, retorna o endereço do servidor DNS responsável pelo domínio com.br. O servidor DNS local solicita a resolução do nome ao servidor DNS com.br e, caso desconheça, retorna o endereço do servidor DNS responsável pelo domínio wxyz.com.br. Finalmente, o servidor DNS local solicita a resolução do nome ao servidor DNS wxyz.com.br, que retorna o endereço do site www.wxyz.com.br. O servidor DNS local repassa a informação para o resolvedor, que atende a solicitação do cliente e, agora, pode fazer o acesso ao nome referenciado. (Maia, 2013) Figura 7-Busca iterativa(Maia, 2013) Os servidores DNS que estão na raiz do espaço de nomes de domínio são fundamentais para o funcionamento de todo o sistema de resolução de nomes. Esses servidores conhecem os servidores DNS dos domínios de primeiro nível, que, por sua vez, conhecem os servidores DNS de segundo nível. Caso haja algum problema com todos os servidores DNS na raiz, o mecanismo de resolução de nomes, em algum momento, ficará comprometido. (Maia, 2013) Na busca recursiva, apresentada na Figura 8, o processo é bem diferente da busca iterativa. Inicialmente, o cliente solicita ao resolvedor a resolução do nome www.wxyz.com.br. Caso desconheça o nome, o resolvedor solicitaao servidor DNS local a resolução do nome e, caso também desconheça, inicia o processo de busca. O servidor DNS local solicita a resolução do nome ao servidor DNS raiz e, caso desconheça, solicita ao servidor DNS responsável pelo domínio br a resolução do nome. Caso o servidor DNS br desconheça o nome www.wxyz.com.br, é feita uma solicitação de resolução de nome ao servidor responsável pelo domínio com.br. Caso o servidor DNS com.br desconheça o nome www.wxyz.com.br, é feita uma solicitação de resolução de nome ao servidor responsável pelo domínio wxyz.com.br. Finalmente, o servidor DNS wxyz.com.br retorna o endereço do site www.wxyz.com.br ao servidor DNS solicitante. Esse processo se repete até o servidor raiz passar a informação para o servidor DNS local, que, por sua vez, repassa a informação para o resolvedor. Finalmente, o resolvedor atende a solicitação do cliente, que, agora, pode fazer o acesso ao nome referenciado. (Maia, 2013) Figura 8-Busca Recursiva(Maia, 2013) 2.3. Tipos de zonas Como a hierarquia completa de nomes de domínio não pode ser armazenada em um único servidor, ela é dividida entre vários servidores. Aquilo sobre o qual um servidor tem responsabilidade ou autoridade é chamado zona. Se um servidor aceita a responsabilidade para um domínio e não o divide em domínios menores, o “domínio” e a “zona” referem-se à mesma coisa. Nesse caso, o servidor cria um banco de dados chamado arquivo de zona e mantém todas as informações sobre cada nó dentro desse domínio. No entanto, se um servidor dividir seu domínio em subdomínios e delegar parte de sua autoridade a outros servidores, o “domínio” e a “zona” se referem a coisas distintas. As informações sobre os nós dos subdomínios são armazenadas nos servidores em níveis mais baixos, sendo que o servidor original mantém algum tipo de referência aos de nível inferior. Claro que o original não se livra totalmente da responsabilidade. Ele ainda tem uma zona, mas as informações detalhadas são mantidas pelos servidores dos níveis inferiores. (Forouzan, 2013) As informações sobre o DNS são armazenadas em zonas. Em uma zona, poderá haver informações sobre um ou mais domínios. As Zonas podem ser de pesquisa direta ou reversa que podem estar hospedados em servidores primários ou secundários. Zonas de pesquisa direta e reversa A zona de pesquisa direta é o tipo de resolução de nomes mais utilizada. Nesse tipo de resolução de nome, o cliente possui o nome DNS e precisa localizar o endereço IP associado a esse nome. A zona de pesquisa Reversa é empregada para fazer a tradução IP para nome. Quando é utilizada esse tipo de consulta o resolvedor envia o endereço IP e pergunta qual é o nome associado. Este tipo de zona o domínio in-addr.arpa. Para criar o espaço para nome reverso, os subdomínios dentro do domínio in-addr.arpa são formados usando a ordem inversa dos números na notação decimal com pontos dos endereços IP, por exemplo, 1.168.192. in-addr.arpa Servidores primários e secundários O DNS define dois tipos de servidores: primários e secundários. Um servidor primário armazena um arquivo relativo à zona sobre a qual ele tem autoridade. É responsável pela criação, manutenção e atualização do arquivo de zona, que mantém armazenado em seu disco local. Um servidor secundário recebe todas as informações sobre uma zona de um outro servidor (primário ou secundário) e armazena tal arquivo em seu disco local. O servidor secundário não cria nem atualiza os arquivos de zona. Se uma atualização for necessária, ela deve ser feita pelo servidor primário, que envia a versão atualizada para o secundário. Tanto os servidores primários como os secundários têm autoridade sobre as zonas que servem. A ideia não é colocar o servidor secundário em um nível de autoridade inferior, mas sim, criar redundância de dados de modo que, se um servidor falhar, o outro pode continuar a servir os clientes. Perceba também que um servidor pode ser primário para uma zona específica e secundário para outra. Portanto, quando dizemos que um servidor é primário ou secundário, devemos ter cuidado com a zona à qual nos referimos. (Forouzan, 2013) 2.4. Registros de Recursos s servidores DNS que juntos executam o banco de dados distribuído do DNS armazenam registros de recursos (RR) que fornecem mapeamentos de nomes de hospedeiros para endereços IP. Cada mensagem de resposta DNS carrega um ou mais registros de recursos. Nesta seção e na subsequente, apresentaremos uma breve visão geral dos registros de recursos e mensagens DNS. (Kurose, 2013) Um registro de recurso é uma tupla de quatro elementos que contém os seguintes campos: (Kurose, 2013) (Name, Value, Type, TTL) TTL é o tempo de vida útil do registro de recurso; determina quando um recurso deve ser removido de um cache. Nos exemplos de registros dados a seguir, ignoramos o campo TTL. Os significados de Name e Value dependem de Type: (Kurose, 2013) • Se Type=A, então Name é um nome de hospedeiro e Value é o endereço IP para o nome de hospedeiro. Assim, um registro Type A fornece o mapeamento-padrão entre nomes de hospedeiros e endereços IP. Como exemplo, (relay1.bar.foo.com, 145.37.93.126, A) é um registro com Type igual a A. O registro A realiza o mapeamento para endereços IPv4 e o AAAA para endereços IPv6. (Kurose, 2013) • Se Type=NS, então Name é um domínio (como foo.com) e Value é o nome de um servidor DNS autoritativo que sabe como obter os endereços IP para hospedeiros do domínio. Esse registro é usado para encaminhar consultas DNS ao longo da cadeia de consultas. Como exemplo, (foo.com, dns.foo.com, NS) é um registro com Type igual a NS. (Kurose, 2013) • Se Type=CNAME, então Value é um nome canônico de hospedeiro para o apelido de hospedeiro contido em Name. Esse registro pode fornecer aos hospedeiros consultantes o nome canônico correspondente a um apelido de hospedeiro. Como exemplo, (foo.com, relay1.bar.foo.com, CNAME) é um registro CNAME. (Kurose, 2013) • Se Type=MX, então Value é o nome canônico de um servidor de correio cujo apelido de hospedeiro está contido em Name. Como exemplo, (foo.com, mail.bar.foo.com, MX) é um registro MX. Registros MX permitem que os nomes de hospedeiros de servidores de correio tenham apelidos simples. Note que, usando o registro MX, uma empresa pode ter o mesmo apelido para seu servidor de arquivo e para um de seus outros servidores (tal como seu servidor Web). Para obter o nome canônico do servidor de correio, um cliente DNS consultaria um registro MX; para obter o nome canônico do outro servidor, o cliente DNS consultaria o registro CNAME. (Kurose, 2013) Se um servidor DNS tiver autoridade para determinado nome de hospedeiro, então conterá um registro Type A para o nome de hospedeiro. (Mesmo que não tenha autoridade, o servidor DNS pode conter um registro Type A em seu cache.) Se um servidor não tiver autoridade para um nome de hospedeiro, conterá um registro Type NS para o domínio que inclui o nome e um registro Type A que fornece o endereço IP do servidor DNS no campo Value do registro NS. Como exemplo, suponha que um servidor TLD edu não tenha autoridade para o hospedeiro gaia.cs.umass.edu. Nesse caso, esse servidor conterá um registro para um domínio que inclui o hospedeiro gaia.cs.umass.edu, por exemplo (umass.edu, dns.umass.edu, NS). O servidor TLD edu conterá também um registro Type A, que mapeia o servidor DNS dns.umass.edu para um endereço IP, por exemplo (dns.umass.edu, 128.119.40.111, A). (Kurose, 2013) AS INFORMAÇÕES CONTIDAS NESTE MATERIAL DE APOIO AO ESTUDO FORAM EXTRAÍDAS DAS SEGUINTES PUBLICAÇÕES: MAIA, Luiz P. Arquitetura de Redes de Computadores – 2. ed. – Rio de Janeiro: LTC, 2013 KUROSE, James F. e ROSS, Keith W. Redes de Computadores e a Internet: uma abordagem top-down. 6. ed. São Paulo: Pearson, 2013. FOROUZAN, Behrouz A. Comunicação de Dados e Redes de Computadores. 4. ed. São Paulo: McGraw- Hill, 2008. COMER, D. E. Rede de Computadorese Internet. 6ª Ed. Rio de Janeiro: Bookman, 2016. FOROUZAN, Behrouz A., MOSHARRAF, Firouz. Redes de Computadores: Uma Abordagem Top-Down. AMGH; Edição: 1, 2013
Compartilhar