Я видел раздел «формат заголовка» в rfc 1035, но в нем говорится только, что идентификатор может быть случайным значением. Теперь может ли это случайное значение быть 0 или нет, вот что я хочу знать.
Разрешено ли значение 0 в заголовке запроса DNS в качестве идентификатора запроса?
Ответы (1)
RFC1035 не накладывает ограничений на идентификатор транзакции, за исключением того, что он имеет длину 16 бит, поэтому 0 вполне подходит. Все, что вы отправите туда, будет скопировано в ответ.
Чтобы дополнительно убедиться в этом, я проверил исходный код распознавателей ниже, и все они, похоже, согласны с тем, что все 16 бит идентификатора принадлежат вам.
- Непривязанный: ID — это любое случайное значение в диапазоне 0–0xffff.
- ARSoft.Tools.Net: ID — любое случайное значение от 0 до 0xffff.
- Synapse (сетевая библиотека Delphi): ID — любое случайное значение в диапазоне от 0 до 0xffff.
person
PeterK
schedule
07.05.2015
Я с тобой согласен. Это то, о чем я думал. Я использую инструмент nsupdate для отправки DNS-запросов, и, по-видимому, в некоторых пакетах 0 также принимается в качестве идентификатора запроса. Я просто хотел убедиться, что это не какой-то искаженный пакет, который я получаю. Не могли бы вы также подтвердить информацию о nsupdate?
- person ibrar arshad; 08.05.2015
@ibrararshad: я пытался изучить исходный код bind9, который должен включать
nsupdate
, но было так много уровней абстракции, что я отказался, поэтому я не могу подтвердить это. Однако RFC совершенно ясен. Кроме того, хотя ни ARSoft.Tools.Net, ни Synapse я бы не назвал «эталонным» источником, на мой взгляд, Unbound так же хорош в этом отношении, как и сам bind.
- person PeterK; 08.05.2015