Назад | Перейти на главную страницу

Каков формат поля NAME в разделе ответов DNS?

Поле NAME не полностью подробно описано в разделе 4.1.3 RFC 1035.

Я хочу понять это поле (программно) для типа сообщения ANSWER, и я искал эти ресурсы (таблицу) для этого.

Я следил:

Я что-то упустил?

псевдокод:

ВОПРОС:

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
}

ОТВЕТ:

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

Часть NAME в разделе ответов DNS имеет тот же формат, что и часть QNAME в разделе вопросов DNS.

имя домена, представленное в виде последовательности меток, где каждая метка состоит из октета длины, за которым следует это количество октетов. Доменное имя заканчивается октетом нулевой длины для нулевой метки корня. Обратите внимание, что в этом поле может быть нечетное количество октетов; отступы не используются.

Он также подчиняется схеме сжатия, описанной в разделе 4.1.4, поэтому в типичном ответе DNS вы, скорее всего, увидите полное имя в разделе вопросов и указатель на него в разделе ответов.

Часть, которую вы явно указываете в своем вопросе, является одним из сжатых значений из раздела 4.1.4. Оба старших бита установлены в 1, а оставшаяся часть значения указывает на байт в ответе, на который делается ссылка. В данном случае байт 12 (0x00c), который выглядит как «www.the_nacketgeek.com» (который был QNAME в разделе вопросов).