2014-10-23 2 views
0

Я немного смущен о чем-то в 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-резольвер не представляет больше одного вопроса в датаграмме.

ответ

1

Это недостаток в ранних спецификациях DNS, да. На практике, если вы попытаетесь отправить запросы с несколькими вопросами на любое полномочное серверное программное обеспечение имен в текущем использовании, оно будет игнорировать все вопросы, кроме первого, или дать вам ответ об ошибке (обычно SERVFAIL или FORMERR, по моему опыту).

Если вам удастся найти сервер в дикой природе, который сделает что-то еще, мне очень хотелось бы услышать об этом.

1

Проблема, которую вы описываете, не очень хорошо охарактеризована как несогласованность - спецификация не конфликтует с самим собой - скорее, это скорее отверстие. Я быстро посмотрел и не нашел каких-либо определений, как сервер должен отвечать на запрос, содержащий несколько вопросов, в которых один или несколько запросов требуют ответа об ошибке.

Я могу думать о нескольких возможных поведениях сервера, не обязательно различимых для клиента, поэтому лучший подход для клиента - это, вероятно, избежать ситуации, не задавая несколько вопросов в одном сообщении. RFC утверждает, что это нормальный случай, и я думаю, что это правильно, даже если клиент хочет несколько видов информации, связанных с тем же именем.

Я не уверен, как какой-либо конкретный сервер имен обрабатывает ситуацию, но если бы я сам ее реализовал, я бы настоятельно рекомендовал отказаться от всех таких сообщений с несколькими ошибками с кодом ошибки 5 (запрос отклонен из-за политики сервера).

Смежные вопросы