DNS
DNS
O DNS (Domain Name Sercive), ou sistema de nomes de domínio, é um sistema que permite traduzir o nome de um domínio (como www.ifpr.edu.br) em um endereço IP (como 200.17.98.70). Isto faci1ilita na medida em que não precisamos mais memorizar endereços IP, mas sim nomes de domínio, muito mais fáceis de serem lembrados e ao mesmo tempo identificados com o proprietário do domínio. [1].
Para resolver os nomes, o DNS realiza uma busca em um banco de dados distribuído, armazenado em sistemas cooperativos independentes, chamados resolvedores de nomes, que fazem a tradução do nome de domínio em endereço IP.
Uma solicitação de tradução de um nome a um resolvedor de nomes pode usar um ou mais resolvedores para obter o endereço desejado. Há dois modos possíveis para um servidor resolver um nome: resolução interativa ou resolução recursiva. Em ambos os casos, o servidor consultado verifica se o nome solicitado pertence a seu sub-domínio. Se for o caso, traduz o nome ao endereço de acordo com sua base de dados. Se não puder resolver o nome completamente, verifica o tipo de solicitação feita pelo cliente. Se o cliente solicitou busca recursiva o servidor contata um DNS que possa resolver o nome e devolve a resposta ao cliente. Caso a solicitação foi do tipo interativa, ele fornece o nome de um DNS ao cliente e não a resposta da resolução completa do nome.
Uma configuração típica de para um programa usuário socilitar consultas ao serviço DNS é mostrada na figura \ref{DNS}. O programa usuário interage com o DNS através de um resolvedor de nomes local, enviando solicitações (\textit{queries}) e recebendo respostas (\textit{responses}). O resolvedor de nomes pode ter as informações solicitadas pelo usuário em memória \textit{cache}, ou, caso não as tenha, ele faz uma consulta a um resolvedor de nomes externo. A resposta obtida do servidor externo é então passada ao usuário solicitante e também armazenada na \textit{cache} do resolver local visando atender possíveis consultas futuras ao mesmo endereço. O resolvedor de nomes externo, por sua vez, pode realizar socilitações a outros servidores para obter a resposta que lhe foi solicitada.
Todo resolvedor de nomes precisa saber como contatar pelo menos um servidor de nomes raiz. Em adição, um resolvedor de nomes deve saber o endereço de um resolvedor de nomes de domínio imediatamente superior (servidor pai). Todos os nomes recentemente usados são armazenados na na memória \textit{cache} local do resolvedor de nomes, bem como a informação de como foram obtidos. Como a informação em memória pode estar desatualizada, o resolvedor de nomes marca como não autoritativa (\textit{non authoritative}), podendo o cliente contatar a autoridade para ver se o nome ainda é válido.
\subsection*{Mensagem DNS}
Toda comunicação do serviço DNS é realizada por meio de uma mensagem cujos campos são mostrados na figura \ref{MensagemDNS}.
\begin{figure}[!htpb] \centering {\scriptsize \begin{verbatim}
+---------------------+ | Header | +---------------------+ | Question | the question for the name server +---------------------+ | Answer | RRs answering the question +---------------------+ | Authority | RRs pointing toward an authority +---------------------+ | Additional | RRs holding additional information +---------------------+
\end{verbatim} } \caption{Formato da mensagem DNS (RFC1035).} \label{MensagemDNS} \end{figure}
O cabeçalho (\textit{Header}) é sempre presente e especifica a quantidade campos presentes na sequência da mensagem e também se a mensagem é uma solicitação ou resposta. O campo questão (\textit{Question}) contém a solicitação ao resolvedor de nomes. O campo resposta (\textit{Answer}) contém a resposta, chamada de RR (\textit{resource record}). O campo autoridade (\textit{Authority}) contém RRs que apontam para um resolverdor de nomes com ``autoridade para responder a solicitação. O campo adicional (\textit{Additional}) contém RRs outras indormações relacionadas a solicitação.
As mensagens DNS são encaminhadas como mensagens de aplicação utilizando como protocolo de transporte o UDP e a porta 53.
O serviço DNS está situado no nível da camada aplicação, contudo é um serviço auxiliar utilizado pelas aplicações usuários, as quais, antes iniciar uma comunicação na Internet, precisam obter o endereço IP do seu correspondente.
Referências
- ↑ KUROSE, J.F; ROSS K. W. Redes de Computadores e a Internet: Uma abordagem top-down, São Paulo: Pearson, 2010.
--Evandro.cantu (discussão) 11h45min de 29 de setembro de 2014 (BRT)