O que significam os números entre parênteses no meu registro de depuração DNS do Windows?

5

Essa é uma daquelas pequenas coisas que eu sempre tive curiosidade, mas nunca perguntei.

Em um servidor DNS do Windows, você pode habilitar o registro de depuração do DNS e assistir os pacotes voarem.

Uma linha desse log pode ter esta aparência:

6/5/2013 10:00:32 AM 0E70 PACKET  00000000033397A0 UDP Rcv 10.161.60.71    5b47   Q [0001   D   NOERROR] A      (12)somecomputer(6)domain(3)com(0)

A parte em que estou interessado é o nome real consultado no final:

(12)somecomputer(6)domain(3)com(0)

O que significam esses números que substituíram os períodos?

    
por Ryan Ries 05.06.2013 / 21:21

1 resposta

7

Sua ofuscação confundiu um pouco o problema, mas seu domínio de nível superior definitivamente não é com ou teria sido (3)com .

Em uma consulta DNS, o nome que você está solicitando ( QNAME ) é representado no formato de string de estilo "pascal": um byte representando o comprimento da string seguido por muitos caracteres. Cada nível do nome é enviado como uma string separada sem o caractere . , com uma string vazia (comprimento 0) enviada no final, portanto, uma consulta para o endereço de twelveletter.domain.com. seria (12)twelveletter(6)domain(3)com(0) .

De 4.1.2 de o RFC :

QNAME          a domain name represented as a sequence of labels, where
               each label consists of a length octet followed by that
               number of octets.  The domain name terminates with the
               zero length octet for the null label of the root.  Note
               that this field may be an odd number of octets; no
               padding is used.
    
por 05.06.2013 / 23:02