Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo explica a estrutura e o formato das mensagens DNS (Sistema de Nomes de Domínio) em ambientes Windows e Windows Server. Compreender os formatos de mensagem DNS é essencial para os administradores de servidor DNS que precisam analisar o tráfego DNS, solucionar problemas de resolução de nomes e otimizar o desempenho do DNS.
O DNS usa formatos de mensagem padronizados para comunicação entre clientes e servidores. Todas as mensagens DNS, sejam consultas, respostas ou atualizações, seguem uma estrutura comum com campos específicos que determinam como as informações são processadas. Este artigo aborda os três principais tipos de mensagens DNS e detalha seus componentes para ajudá-lo a entender como a comunicação DNS funciona no nível do protocolo.
Protocolos e padrões DNS
O DNS no Windows e no Windows Server adere aos padrões e protocolos do setor definidos pela Internet Engineering Task Force (IETF). O protocolo DNS principal é especificado na RFC 1035, que descreve o formato das mensagens DNS, incluindo consultas e respostas. Padrões adicionais, como RFC 2136 para atualizações dinâmicas e RFC 4033 para DNS Security Extensions (DNSSEC), melhoram a funcionalidade e a segurança do DNS.
O protocolo DNS consiste em diferentes tipos de mensagens DNS que são processadas de acordo com as informações em seus campos de mensagem. Esta seção discute os tipos de mensagens DNS e os campos em cada tipo de mensagem.
Existem três tipos de mensagens DNS:
Queries
Responses
Updates
As consultas e respostas são definidas no padrão DNS original e as atualizações são definidas no RFC 2136. Todos os três tipos seguem um formato de mensagem comum.
Para saber mais sobre os formatos de mensagem, expanda as seções a seguir.
Formato de mensagem de consulta DNS
O formato de mensagem DNS comum tem um cabeçalho de 12 bytes de comprimento fixo e uma posição variável reservada para registros de perguntas, respostas, autoridade e recursos DNS adicionais. O formato comum da mensagem pode ser ilustrado do seguinte modo:
Formato de mensagem de consulta DNS padrão
- Cabeçalho DNS (comprimento fixo)
- Entradas de perguntas (comprimento variável)
- Registros de recursos de resposta (comprimento variável)
- Registos de recursos da autoridade (comprimento variável)
- Registos de recursos adicionais (comprimento variável)
Cabeçalho da mensagem de consulta DNS
O cabeçalho da mensagem DNS contém os seguintes campos, na seguinte ordem:
Campos de cabeçalho da mensagem de consulta DNS
ID da transação:
Um campo de 16 bits que identifica uma transação DNS específica. O ID da transação é criado pelo originador da mensagem e copiado pelo respondente em sua mensagem de resposta. Usando o ID da transação, o cliente DNS pode associar as respostas às suas solicitações.Flags:
Um campo de 16 bits contendo vários sinalizadores de serviço comunicados entre o cliente DNS e o servidor, incluindo:- Solicitação/resposta: campo de 1 bit definido como 0 para uma solicitação ou 1 para uma resposta.
-
Código de operação: campo de 4 bits que representa a operação de serviço de nome do pacote;
0x0é uma consulta. - Resposta autoritativa: campo de 1 bit indicando que o respondente é autoritativo para o nome de domínio consultado.
- Truncamento: campo de 1 bit definido como 1 se o número total de respostas exceder o tamanho do datagrama UDP. A menos que datagramas UDP maiores que 512 bytes ou EDNS0 estejam habilitados, somente os primeiros 512 bytes da resposta UDP serão retornados.
- Recursão desejada: campo de 1 bit definido como 1 para uma consulta recursiva e 0 para consultas iterativas. Se definido como 0, o servidor DNS retorna uma lista de outros servidores DNS de dados de cache local.
- Recursão disponível: campo de 1 bit definido por um servidor DNS como 1 se ele puder lidar com consultas recursivas. Se a recursão estiver desativada, o servidor define o campo adequadamente.
- Reservado: campo de 3 bits reservado e definido como 0.
-
Código de retorno: campo de 4 bits que contém o código de retorno:
-
0: Resposta bem-sucedida (a resposta da consulta está na resposta). -
0x3: Erro de nome, indicando que um servidor DNS autoritativo respondeu que o nome de domínio não existe. Para obter mais informações sobre códigos de retorno, consulte IANA DNS RCODEs.
-
Contagem de Registro de Recursos de Perguntas:
Um campo de 16 bits que representa o número de entradas na seção de perguntas da mensagem DNS.Contagem de Registros de Recursos de Resposta:
Um campo de 16 bits que representa o número de entradas na secção de resposta da mensagem DNS.Contagem de Registros de Recursos da Autoridade:
Um campo de 16 bits que representa o número de registros de recursos de autoridade na mensagem DNS.Contagem de Registros de Recursos Adicionais:
Um campo de 16 bits que representa o número de registos de recursos adicionais na mensagem DNS.
Entradas de consulta DNS
A seção de entradas de pergunta da mensagem DNS contém o nome de domínio que está sendo consultado e tem os três campos a seguir:
Nome da pergunta:
O nome de domínio que está sendo consultado. Os nomes de domínio DNS são expressos como uma série de rótulos (por exemplo,microsoft.com). No campo Nome da pergunta, o nome de domínio é codificado como uma série de pares comprimento-valor: um campo de 1 byte indicando o comprimento do rótulo, seguido pelo próprio rótulo. Por exemplo,microsoft.comé codificado como0x09microsoft0x03com0x00, onde os dígitos hexadecimais representam comprimentos de rótulo, os caracteres ASCII são os rótulos e o final0indica o final do nome.Tipo de pergunta:
Um inteiro de 16 bits que representa o tipo de registro de recurso a ser retornado. Os valores comuns incluem:-
0x01: Registo de Host (A) -
0x02: Registo do servidor de nomes (NS) -
0x05: Registo Alias (CNAME) -
0x0C(12): Registo de pesquisa inversa (PTR) -
0x0F(15): Registo de intercâmbio de correio (MX) -
0x21(33): Registo de serviço (SRV) -
0xFB(251): Registo de transferência incremental de zonas (IXFR) -
0xFC(252): Registo de transferência de zona normal (AXFR) -
0xFF(255): Todos os registos
-
Classe de perguntas:
Representa a classe de pergunta IN (Internet), normalmente definida como0x0001.
Mensagem de resposta da consulta DNS
As seções de resposta, autoridade e informações adicionais de uma mensagem de resposta DNS podem conter registros de recursos que respondem à seção de pergunta da mensagem de consulta. Os registos de recursos são formatados da seguinte forma:
- Nome do Registro do Recurso: O nome de domínio DNS registrado como um campo de comprimento variável seguindo a mesma formatação do campo Nome da Pergunta.
- Tipo de Registro de Recurso: O valor do tipo de registro de recurso.
- Classe de registro de recurso: O código da classe de registro de recurso, a classe Internet 0x0001.
- Time-to-Live: O TTL expresso em segundos como um campo não assinado de 32 bits.
- Comprimento dos Dados do Recurso: campo de 2 bytes que indica o comprimento dos dados do recurso.
- Dados do recurso: dados de comprimento variável correspondentes ao tipo de registro do recurso.
O campo Nome do Registro de Recurso é codificado da mesma forma que o campo Nome da Pergunta, a menos que o nome já esteja presente em outro lugar na mensagem DNS, caso em que um campo de 2 bytes é usado no lugar de um nome codificado de valor de comprimento e atua como um ponteiro para o nome que já está presente.
Formato de mensagem de Consulta de Nome
Um formato de mensagem de Consulta de Nome é o mesmo que o formato de mensagem DNS descrito acima. Em uma mensagem de consulta de nome típica, os campos de mensagem DNS são definidos da seguinte maneira:
Identificador de consulta (ID da transação):
Defina um número exclusivo para que o resolvedor do cliente DNS possa relacionar a resposta à consulta. O ID da transação de resposta da consulta sempre corresponde ao ID da transação da solicitação de consulta.Flags:
Defina para indicar uma consulta padrão com a recursão habilitada.Contagem de perguntas:
Defina como 1.Entrada da pergunta:
Defina o nome de domínio a consultar e o tipo de registo de recurso a ser retornado.
Formato de mensagem de Resposta à Consulta de Nome
Um formato de mensagem de Resposta de Consulta de Nome é o mesmo que o formato de mensagem DNS descrito acima. Em uma mensagem de consulta de nome típica, os campos de mensagem DNS seriam definidos da seguinte maneira:
Identificador de consulta (ID da transação):
Defina um número exclusivo para que o resolvedor do cliente DNS possa relacionar a resposta à consulta.Flags:
Defina para indicar uma consulta padrão com a recursão habilitada.Contagem de perguntas:
Defina como 1.Entrada da pergunta:
Defina o nome de domínio a consultar e o tipo de registo de recurso a ser retornado.
Formato de mensagem de consulta de nome inverso
As mensagens de consulta de nome reverso usam o formato de mensagem comum com as seguintes diferenças:
O resolvedor do cliente DNS constrói o nome de domínio no domínio in-addr.arpa com base no endereço IP consultado.
Um registro de recurso de ponteiro (PTR) é consultado em vez de um registro de recurso de host (A).
Atualizar formato de mensagem
O formato de mensagem de atualização DNS usa um cabeçalho que define a operação de atualização a ser executada e um conjunto de registros de recursos que contém a atualização. O formato da mensagem de atualização de DNS tem os seguintes campos:
Identification. Um identificador de 16 bits atribuído pelo solicitante do cliente DNS. Esse identificador é copiado na resposta correspondente e pode ser usado pelo solicitante para fazer corresponder as respostas às solicitações pendentes ou pelo servidor para detetar solicitações duplicadas de algum solicitante.
Flags. Um campo de sinalizadores de mensagem de atualização de DNS de 16 bits. Para obter uma descrição de cada sinalizador, consulte o campo de sinalizadores de atualização de mensagem DNS abaixo.
Número de entradas de zona. O número de registros de recursos na seção Entrada de zona.
Número de registos de recurso pré-requisito. O número de registros de recursos na seção Registros de recursos de pré-requisitos.
Número de registos de recursos de atualização O número de registros de recursos na seção Atualizar registros de recursos.
Número de registros de recursos adicionais. O número de registros de recursos na seção Registros de recursos adicionais.
Entrada de zona. Indica a zona dos registros que estão sendo atualizados. Todos os registros a serem atualizados devem estar na mesma zona e, portanto, a Seção de Zona pode conter exatamente um registro. Ele tem três valores: ZNAME é o nome da zona, o ZTYPE deve ser SOA e o ZCLASS é a classe da zona.
Registos de recursos de pré-requisitos. Contém um conjunto de pré-requisitos de registro de recursos que devem ser satisfeitos no momento em que a mensagem de atualização é recebida pelo servidor DNS mestre. Existem cinco conjuntos possíveis de valores que podem ser expressos:
O conjunto de registros de recursos existe (independente do valor). Pelo menos um registro de recurso com um nome e tipo especificados (na zona e classe especificadas pela Seção de Zona) deve existir.
O conjunto de registros de recursos existe (dependente do valor). Existe um conjunto de registros de recursos com um nome e tipo especificados e tem os mesmos membros com os mesmos dados que o conjunto de registros de recursos especificado nesta seção.
O conjunto de registros de recursos não existe. Não existem registos de recursos com um nome e um tipo especificados (na zona e na classe indicadas pela secção Zona).
O nome está em uso. Existe pelo menos um registro de recurso com um nome especificado (na zona e classe especificadas pela seção Zona). Este pré-requisito não é satisfeito por não-terminais vazios.
O nome não está a ser usado. Nenhum registro de recurso de qualquer tipo pertence a um nome especificado. Este pré-requisito é satisfeito por não-terminais vazios.
Atualize os registros de recursos. Contém os registros de recursos que devem ser adicionados ou excluídos da zona. Uma das quatro operações é realizada durante a atualização:
Adicione registros de recursos a um conjunto de registros de recursos.
Elimine um conjunto de registos de recursos.
Exclua todos os conjuntos de registros de recursos associados a um determinado nome.
Exclua um registro de recurso de um conjunto de registros de recursos.
Registos de recursos adicionais. Contém registros de recursos relacionados à atualização ou a novos registros de recursos que estão sendo adicionados pela atualização.
Campo de sinalizadores de mensagem de atualização de DNS
O campo Sinalizadores de mensagem de atualização de DNS usa os seguintes sinalizadores:
Request/response. Campo de 1 bit definido como 0 para representar uma solicitação de atualização e 1 para representar uma resposta de atualização.
Código de operação. Campo de 4 bits definido como 0x5 para atualizações de DNS.
Reserved. Campo reservado de 7 bits definido como 0.
Código de retorno. Campo de 4 bits contendo códigos para representar o resultado da consulta de atualização. Os códigos são os seguintes:
- 0 (NOERROR): Sem erro; atualização bem-sucedida.
- 1 (FORMERR): Erro de formato; O servidor DNS não entendeu a solicitação de atualização.
- 0x2 (SERVFAIL): O servidor DNS encontrou um erro interno, como um tempo limite de encaminhamento.
- 0x3 (NXDOMAIN): Um nome que deveria existir não existe.
- 0x4 (NOTIMP): O servidor DNS não suporta o código de operação especificado.
- 0x5 (RECUSADO): O servidor DNS se recusa a executar a atualização.
- 0x6 (YXDOMAIN): Existe um nome que não deveria existir.
- 0x7 (YXRRSET): Existe um conjunto de registros de recursos que não deveria existir.
- 0x8 (NXRRSET): Um conjunto de registros de recursos que deveria existir não existe.
- 0x9 (NOTAUTH): O servidor DNS não é autoritativo para a zona nomeada na seção Zona.
- 0xA (NOTZONE): Um nome usado nas seções Pré-requisito ou Atualização não está dentro da zona especificada pela seção Zona.
Formato de mensagem de resposta de atualização dinâmica
A mensagem de resposta de atualização dinâmica segue o mesmo formato que a mensagem de atualização de DNS, com exceção dos sinalizadores DNS. Os sinalizadores de cabeçalho da mensagem de resposta de atualização dinâmica indicam se a atualização foi bem-sucedida incluindo o código de resposta bem-sucedido ou um dos códigos de erro descritos nos sinalizadores de mensagem de atualização DNS.