Qual é o formato do campo NAME na seção de resposta do DNS?

1

O campo NAME não está detalhado completamente na seção 4.1.3 da RFC 1035.

Eu quero entender este campo (programaticamente) para o tipo de mensagem ANSWER e eu procurei por esses recursos (folha de dados).

Eu segui:

  • IETF RFC 2181
  • www.ccs.neu.edu

Eu perdi alguma coisa?

pseudo código:

PERGUNTA:

byte[]{
    0x00,0x00,
    0x01,0x00,
    0x00,0x02,
    0x00,0x00,
    0x00,0x00,
    0x00,0x00,
    0x03,0x77,0x77,0x77,
    0x12,0x74,0x68,0x65,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x67,0x65,0x65,0x6b,
    0x03,0x63,0x6f,0x6d,
    0x00,
    0x00,0x01,
    0x00,0x01,
    0x13,0x74,0x74,0x68,0x65,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x67,0x65,0x65,0x6b,
    0x03,0x63,0x6f,0x6d,
    0x00,
    0x00,0x01,
    0x00,0x01
}

RESPOSTA:

byte[]{
    0x00,0x00,
    0x81,0x80,
    0x00,0x02,
    0x00,0x01,
    0x00,0x00,
    0x00,0x00,
    0x03,0x77,0x77,0x77,
    0x12,0x74,0x68,0x65,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x67,0x65,0x65,0x6b,
    0x03,0x63,0x6f,0x6d,
    0x00,
    0x00,0x01,
    0x00,0x01,
    0x13,0x74,0x74,0x68,0x65,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x67,0x65,0x65,0x6b,
    0x03,0x63,0x6f,0x6d,
    0x00,
    0x00,0x01,
    0x00,0x01,
    0xC0,0x0C, <----- answer start here , i want to understand this value
    0x00,0x00,
    0x00,0x00,0x06,0xcf,
    0x00,0x04,
    0x07,0x00,0x00,0x01
    
por J-barnaby 06.08.2016 / 23:18

1 resposta

5

A parte NAME em uma seção de resposta do DNS é formatada exatamente da mesma forma que a parte QNAME da seção de perguntas do DNS.

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.

Ele também está sujeito ao esquema de compactação na seção 4.1.4, portanto, em uma resposta típica de DNS, é mais provável que você veja o nome completo na seção de perguntas e um ponteiro para ele na seção de respostas.

A parte que você aponta explicitamente em sua pergunta é um desses valores compactados da seção 4.1.4. Os dois bits altos são ambos definidos como 1 e o restante do valor aponta para o byte na resposta a que se refere. Neste caso, o byte 12 (0x00c), que parece ser "www.the_nacketgeek.com" (que era o QNAME na seção de perguntas).

    
por 06.08.2016 / 23:50