Разрешено ли значение 0 в заголовке запроса DNS в качестве идентификатора запроса?

Я видел раздел «формат заголовка» в rfc 1035, но в нем говорится только, что идентификатор может быть случайным значением. Теперь может ли это случайное значение быть 0 или нет, вот что я хочу знать.


person ibrar arshad    schedule 07.05.2015    source источник


Ответы (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
comment
Я с тобой согласен. Это то, о чем я думал. Я использую инструмент nsupdate для отправки DNS-запросов, и, по-видимому, в некоторых пакетах 0 также принимается в качестве идентификатора запроса. Я просто хотел убедиться, что это не какой-то искаженный пакет, который я получаю. Не могли бы вы также подтвердить информацию о nsupdate? - person ibrar arshad; 08.05.2015
comment
@ibrararshad: я пытался изучить исходный код bind9, который должен включать nsupdate, но было так много уровней абстракции, что я отказался, поэтому я не могу подтвердить это. Однако RFC совершенно ясен. Кроме того, хотя ни ARSoft.Tools.Net, ни Synapse я бы не назвал «эталонным» источником, на мой взгляд, Unbound так же хорош в этом отношении, как и сам bind. - person PeterK; 08.05.2015