Это одна из тех мелочей, которые меня всегда интересовали, но никогда не спрашивали.
На DNS-сервере Windows вы можете включить ведение журнала отладки DNS и наблюдать за прохождением пакетов.
Строка из этого журнала может выглядеть так:
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)
То, что меня интересует, - это фактическое запрошенное имя в конце:
(12)somecomputer(6)domain(3)com(0)
Что означают цифры, заменившие точки?
Ваша обфускация немного запутала проблему, но ваш домен верхнего уровня определенно не com, иначе он был бы (3)com
.
В DNS-запросе имя, которое вы запрашиваете (QNAME
) представлен в строковом формате в стиле «паскаль»: байт, представляющий длину строки, за которой следует такое количество символов. Каждый уровень имени отправляется отдельной строкой без символа .
символ, с пустой строкой (длина 0), отправленной в конце, поэтому запрос адреса twelveletter.domain.com.
было бы (12)twelveletter(6)domain(3)com(0)
.
Начиная с 4.1.2 из 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.