O DNS inclui vários tipos de parâmetros. Estes são documentados, na sua maior parte, nas especificações RFC1034 e RFC1035. Os parâmetros adicionais para as diversas classes são definidos em outras RFCs conforme indicado nas tabelas.
Para cada nome armazenado no banco de dados do DNS é atribuído um tipo de objeto para identificá-lo. Por exemplo, o nome é para um host, caixa de correio ou usuário? Por exemplo, como você determina se inf em inf.ufrgs.br é o nome de um host ou um sub-domínio? Quando um cliente pede para o DNS converter um nome (isto é, para executar o mapeamento de nome para endereço), ele deve especificar o tipo de resposta desejado. Por exemplo, um aplicativo telnet remoto deve especificar que deseja o endereço IP de uma máquina, e não a informação do servidor de correio eletrônico do domínio. Em outras palavras, a pergunta deve ser bastante específica.
Um servidor de nomes pode trabalhar em dois modos: recursiva ou interativamente, com já foi mencionado no capítulo anterior, dependendo da solicitação do cliente. Quando um cliente conversor de nomes consulta um servidor de nomes, a mensagem contém as informações seguintes:
O DNS foi criado para ser independente de protocolo. Por isso, o campo classe na consulta identifica o grupo de protocolo do registro de interesse. É possível que haja vários registros no banco de dados DNS que tenham os mesmos dados no campo "nome" mas para protocolos diferentes. Para os usuários do TCP/IP, o código de classe é IN de Internet.
Decimal |
Nome |
Referências |
0 |
Reservado |
Internet Assigned Numbers Authority, Dezembro 1994 |
1 |
Internet (IN) |
RFC1035 |
2 |
Não associado |
Internet Assigned Numbers Authority, Dezembro 1994 |
3 |
Chaos (CH) |
RFC1035 |
4 |
Hesiod (HS) |
RFC1035 |
5-253 |
Não associado |
Internet Assigned Numbers Authority, Dezembro 1994 |
254 |
Nenhum |
Paul Vixie, Junho 1997 |
255 |
Qualquer [somente QCLASS] |
RFC1035 |
256-65534 |
Não associado |
Internet Assigned Numbers Authority, Dezembro 1994 |
65535 |
Reservado |
Internet Assigned Numbers Authority, Dezembro 1994 |
4.2 Tipos de Registros de Recursos
Você leu anteriormente que o DNS pode ser usado para traduzir um nome de host para um endereço IP e também pesquisar um endereço de servidor de correio eletrônico para um domínio. Essa informação é diferenciada pelos tipos de objetos. Na tabela 4.1, estão listados os tipos de RR (registros de recursos) mais comuns usados no DNS.
A |
Endereço IP do host |
CNAME |
Nome de domínio canônico para um alias (nome alternativo) |
HINFO |
Informações de CPU e sistema operacional para um host |
MX |
Nome do servidor de correio eletrônico para o domínio |
NS |
Servidor de nome (que tem autoridade) para o domínio |
PTR |
Ponteiro para o nome do domínio (como uma ligação simbólica nos sistemas de arquivo) |
SOA |
Start of Authority - indica a autoridade sobre os dados do domínio |
TXT |
Informação textual |
RP |
Pessoa responsável |
A maioria dos registros que você encontra em um banco de dados DNS é do tipo A, o que significa que eles consistem no nome de um host e seus endereços IP. O próximo tipo comum de registro é provavelmente MX. Ele contém nomes de hosts que atuam como recurso para troca de correspondência eletrônica (gateway) para um sub-domínio dado. Os registros MX habilitam você a enviar uma correspondência eletrônica para alguém em determinado sub-domínio sem precisar conhecer o nome do gateway de correio eletrônico. Por exemplo, você precisa endereçar a correspondência eletrônica para fulano@inf.ufrgs.br sem saber que o nome do servidor de correio eletrônico é caracol. Senão, você teria que endereçar sua correspondência eletrônica para fulano@caracol.inf.ufrgs.br.
Abaixo segue uma tabela com todos os tipos de dados e perguntas (TYPES e QTYPES) definidos para a classe Internet (IN).
Tipo |
Valor |
Significado | Referências |
A |
1 |
um endereço de host | RFC1035 |
NS |
2 |
um servidor de nomes authoritative | RFC1035 |
MD |
3 |
um destino de mail (Obsoleto à MX) | RFC1035 |
MF |
4 |
um mail forwarder (Obsoleto à MX) | RFC1035 |
CNAME |
5 |
o nome canônico para um alias | RFC1035 |
SOA |
6 |
define o início de uma zona com autoridade | RFC1035 |
MB |
7 |
um nome de domínio de uma caixa de correio (EXPERIMENTAL) | RFC1035 |
MG |
8 |
um membro de um grupo de mail (EXPERIMENTAL) | RFC1035 |
MR |
9 |
um nome de domínio renomeado de mail (EXPERIMENTAL) | RFC1035 |
NULL |
10 |
um RR nulo (EXPERIMENTAL) | RFC1035 |
WKS |
11 |
descrição de um serviço bastante conhecido (Well Known Service) | RFC1035 |
PTR |
12 |
um ponteiro para um nome de domínio | RFC1035 |
HINFO |
13 |
informações sobre um host | RFC1035 |
MINFO |
14 |
informações sobre um mailbox ou uma lista de mail | RFC1035 |
MX |
15 |
um servidor de mail (mail exchange) | RFC1035 |
TXT |
16 |
texto simples | RFC1035 |
RP |
17 |
para Pessoa Responsável | RFC1183 |
AFSDB |
18 |
para a localização de base de dados AFS | RFC1183 |
X25 |
19 |
para endereço X.25 PSDN | RFC1183 |
ISDN |
20 |
para endereço ISDN | RFC1183 |
RT |
21 |
para indicação de rota | RFC1183 |
NSAP |
22 |
para endereço NSAP (estilo de registro A para NSAP) | RFC1706 |
NSAP-PTR |
23 |
idem (estilo de PTR para NSAP) | RFC1706 |
SIG |
24 |
para assinatura de segurança | RFC2065 |
KEY |
25 |
para chave de segurança | RFC2065 |
PX |
26 |
informação de mapeamento de mail X.400 | RFC1664 |
GPOS |
27 |
posição geográfica | RFC1712 |
AAAA |
28 |
endereço IP6 | Susan Thomson, Agosto 1995 |
LOC |
29 |
informação sobre localização | Paul Vixie, Junho 1997 |
NXT |
30 |
próximo domínio | RFC2065 |
EID |
31 |
identificador de fim | Michael Patton, Junho 1995 |
NIMLOC |
32 |
localizador Nimrod | Michael Patton, Junho 1995 |
SRV |
33 |
servidor selecionado | RFC2052 |
ATMA |
34 |
endereço ATM | George Dobrowski, Julho 1996 |
NAPTR |
35 |
ponteiro para autoridade de um nome | Ron Daniel, Junho 1997 |
TSIG |
36 |
assinatura de transação | Paul Vixie, Junho 1997 |
IXFR |
251 |
transferência incremental | RFC1995 |
AXFR |
252 |
transferência de toda uma zona | RFC1035 |
MAILB |
253 |
RRs relacionados a mailbox (MB, MG ou MR) | RFC1035 |
MAILA |
254 |
RRs para agentes de mail (Obsoleto - veja MX) | RFC1035 |
* |
255 |
Um pedido por todos os registros | RFC1035 |
Toda a comunicação envolvendo o protocolo do DNS é carregado por um só formato de pacote chamado mensagem. O formato em um primeiro nível da mensagem é dividido em 5 seções (algumas delas ficam vazias em alguns casos), mostrado na figura 4.1.
O cabeçalho está sempre presente. O cabeçalho inclui campos que especificam quais das seções restantes estão presentes na mensagem, e também indica se é uma pergunta ou uma resposta, uma pergunta padrão ou algum outro código de operação, etc.
Os nomes da seções depois do cabeçalho são derivados dos seus usos nas perguntas padrões. A seção pergunta contém campos que descrevem um pergunta a um servidor de nomes. Esses campos são: QTYPE (tipo), QCLASS (classe) e QNAME (nome de domínio). As últimas três seções possuem o mesmo formato: uma lista de registros de recursos (RRs) concatenados, podendo ser vazia. A seção de resposta contém RRs que respondem a pergunta. A seção autoridade contém RRs que apontam para servidores de nomes com autoridade sobre o nome de domínio perguntado. A seção adicional contém RRs que se relacionam com a pergunta, mas não são respostas diretas para a pergunta.
Quando um servidor de nomes receber uma consulta, ele verificará se o nome está dentro do sub-domínio para o qual tem autoridade. Nesse caso, ele pesquisará o nome no banco de dados e retornará a informação solicitada, se houver.
Se o servidor de nome não puder converter o nome completamente, ele verificará qual "código de operação" o cliente especificou. Se o cliente tiver solicitado uma conversão recursiva (pesquisa completa), o servidor de nome irá contactar outro servidor de nomes para ver se poderá convertê-lo; se esse servidor contactado não puder converter o nome, ele irá indicar o próximo servidor e assim por diante até que tenha sucesso ou até que o tempo limite de nome não encontrado seja decorrido.
Código |
Nome |
Significado |
Referências |
0 |
Query |
Pergunta recursiva |
RFC1035 |
1 |
IQuery |
pergunta não-recursiva |
RFC1035 |
2 |
Status |
Estado |
RFC1035 |
3 |
Reservado |
Internet Assigned Numbers Authority, Dezembro 1994 |
|
4 |
Notify |
Notificação |
RFC1996 |
5 |
Update |
Atualização |
Paul Vixie, Junho 1997 |
Tabela 4.4 Códigos de Operação
Se o resolver pedir conversão interativa (pesquisa não recursiva), o servidor de nome irá gerar um erro se não puder converter o nome. Como parte da mensagem de resposta, o servidor de nome indicará outro um servidor no qual o cliente deverá fazer o próxima tentativa.
Sempre que um cliente envia uma pergunta para um servidor de nomes, este responde seguindo um código para as respostas. Abaixo seguem os códigos de resposta e seus respectivos significados.
Código |
Nome |
Significado |
Referências |
0 |
NoError |
Sem erro |
RFC1035 |
1 |
FormErr |
Erro de formato |
RFC1035 |
2 |
ServFail |
Falha no servidor |
RFC1035 |
3 |
NXDomain |
Domínio não existente |
RFC1035 |
4 |
NotImp |
Não implementado |
RFC1035 |
5 |
Refused |
Pergunta recusada |
RFC1035 |
6 |
YXDomain |
Nome existe, mas não deveria |
RFC2136 |
7 |
YXRRSet |
RR afirma existir, mas não deveria |
RFC2136 |
8 |
NXRRSet |
RR afirma que deveria existir, mas não existe |
RFC2136 |
9 |
NotAuth |
Servidor sem autoridade sobre a zona |
RFC2136 |
10 |
NotZone |
Nome não está contido na zona |
RFC2136 |