Я немного смущен о чем-то в DNS Specification.Есть ли несоответствие спецификации DNS?
Итак, я думаю, что я очень хорошо разбираюсь в спецификации, но я смущен тем фактом, что в одной дейтаграмме ответа DNS есть заголовок сообщения SINGLE, но, видимо, может быть ответом на вопросы MULTIPLE.
Так, например, DNS Заголовок сообщения содержит много информации и флагов, которые указывают информацию о реакции. Например, заголовок сообщения DNS включает в себя флаг кода ответа, который указывает различные коды ошибок, такие как код ошибки «Не реализованный», что означает, что опросчик попросил тип записи, который сервер не поддерживает.
Но проблема заключается в том, что DNS spec позволяет несколько вопросов, присланных в одном Datagram (я имею в виду, что еще бы QDCOUNT
поле было для?) Я никогда не видел клиент DNS задать больше одного вопроса в то время, , но, видимо, это разрешено.
Итак, скажите, что клиент задает два вопроса - так, что QDCOUNT
установлено в 2. Как тогда точно DNS-клиент знает, какие ответы относятся к какому вопросу? (Может быть любое количество ответов.) Или, если на то пошло, как DNS-клиент знает, на какие вопросы ссылаются коды ошибок в заголовке?
Пример:
Предположим, что клиент DNS запрашивает A
(IPv4), а также записи с AAAA
(IPv6) записи в одном запросе. И, допустим, сервер поддерживает A
записей - но не реализовать AAAA
записей.
Что должен делать сервер? Возвратите ответ, который включает только ответы A
, или ответьте, что не включает ЛЮБЫЕ ответы и устанавливает флаг ошибки "Not Implemented"?
Это не ясно из спецификации. В целом проблема заключается в том, что, несмотря на то, что спецификация допускает несколько вопросов в одной дейтаграмме запроса, похоже, нет никакого способа сопоставить конкретные вопросы с конкретными ответами в дейтаграмме ответа. Это проблема со спецификацией? Или я что-то неправильно истолковываю? Возможно, именно поэтому на практике никакой фактический DNS-резольвер не представляет больше одного вопроса в датаграмме.