Почему не QNAME для этого DNS q. заканчивается символом NULL?
Я отслеживал порт 5353 (mDNS) с помощью WireShark и наткнулся на следующий вопрос DNS:
В соответствии с разделом 4.1.2 RFC 1035 QNAME является:
доменное имя, представленное в виде последовательности меток, где каждая метка состоит из октета длины, за которым следует это количество октетов. Доменное имя оканчивается октетом нулевой длины для нулевой метки корня...
Это, кажется, противоречит тому, что я вижу по проводу в захвате выше. Последний ярлык заканчивается c0 12
вместо 00
, Почему и почему это не задокументировано в RFC?
1 ответ
Очевидно, когда последовательность меток заканчивается c0 12
это указывает на косвенный указатель. Это примерно эквивалентно указанию "перейти к этому смещению в запросе DNS и продолжить чтение оттуда".
Первые два бита являются константой (c0
), а оставшиеся 14 битов являются смещением от начала запроса. В моем вопросе, например, c0 12
указывает, что следующая часть QNAME должна поступить из 47 байтов в запросе.
05 6c 6f 63 61 6c 00 .local.