В итеративной архитектуре DNS локальные DNS-серверы имеют кеши и в большинстве случаев могут не связываться с корневыми серверами и серверами TLD.
В рекурсивной схеме локальный DNS-сервер связывается с одним DNS-сервером, который рекурсивно получает результат и отвечает запрошенным ресурсом.
В чем разница между итеративным и рекурсивным DNS с точки зрения кеширования?
Может ли локальный DNS-сервер использовать ярлык в рекурсивной архитектуре?
Теперь существует канонический документ по терминологии DNS:
Вот его соответствующие определения, слегка сокращенные и переупорядоченные:
«Рекурсивный преобразователь: преобразователь, который действует в рекурсивном режиме. [..] [RFC4697] попытался различить рекурсивный преобразователь и итеративный преобразователь».
«Рекурсивный режим: режим разрешения сервера, который получает запросы DNS и либо отвечает на эти запросы из локального кеша, либо отправляет запросы на другие серверы, чтобы получить окончательные ответы на исходные запросы».
Итеративное решение: серверу имен может быть представлен запрос, на который может ответить только какой-то другой сервер. Два общих подхода к решению этой проблемы - «рекурсивный», при котором первый сервер выполняет запрос от имени клиента. на другом сервере и «итеративным», при котором сервер перенаправляет клиента на другой сервер и позволяет клиенту выполнять там запрос (см. раздел 2.3 [RFC1034]).
При итеративном разрешении клиент неоднократно выполняет нерекурсивные запросы и следует по ссылкам и / или псевдонимам. Алгоритм итеративного разрешения описан в разделе 5.3.3 [RFC1034] ".
В приведенном выше RFC 4697 говорится следующее:
Этот документ в основном касается поведения итеративного
преобразователи, которые обычно встречаются как часть рекурсивного имени
сервер. В этой заметке используется более точный термин «итеративный преобразователь»,
потому что обычно основное внимание уделяется этому компоненту. В случаях, когда
роль сервера имен этого объекта требует упоминания, эта памятка
использует термин «рекурсивный сервер имен». В качестве примера
разница, компонент сервера имен рекурсивного сервера имен
получает DNS-запросы, а компонент итеративного преобразователя отправляет
запросы.
RFC 1034 мне кажется еще более непонятным по этому поводу, точнее даже более устаревшим:
- В любой системе с распределенной базой данных конкретному серверу имен может быть представлен запрос, на который может ответить только какой-либо другой сервер. Двумя общими подходами к решению этой проблемы являются «рекурсивный», при котором первый сервер выполняет запрос клиента на другом сервере, и «итеративный», при котором сервер перенаправляет клиента на другой сервер и позволяет клиенту выполнять запрос запрос. У обоих подходов есть свои преимущества и недостатки, но итеративный подход предпочтительнее для стиля доступа дейтаграмм. Система предметной области требует реализации итеративного подхода, но допускает рекурсивный подход в качестве опции.
Вернемся к вашему вопросу:
В чем разница между итеративным и рекурсивным DNS с точки зрения кеширования?
В моем понимании того, как все работает в дикой природе (что не совсем соответствует приведенным выше определениям), нет никаких различий, поскольку рекурсивный сервер имен выполняет итеративные запросы для разрешения любых имен, которые запросил клиент.
и для
Может ли локальный DNS-сервер использовать ярлык в рекурсивной архитектуре?
По сути, все, что не является авторитетным, может иметь кеш, и до тех пор, пока оно подчиняется TTL, полученным из предыдущих полученных ответов, оно работает в рамках протокола.
Обратите внимание, что в будущем ситуация может стать более запутанной: некоторые предложения вроде ANAME
и для конкретных реализаций может потребоваться, чтобы авторитетный сервер имен также стал рекурсивным / итеративным в момент поступления данного запроса, чтобы иметь возможность разрешить цель.
В чем разница между итеративным и рекурсивным DNS с точки зрения кеширования?
Нет никакой разницы. Время жизни (TTL) от полномочного сервера вместе с локальными политиками укажет, как долго записи будут храниться в кэше и обслуживаться из кэша.
Может ли локальный DNS-сервер использовать ярлык в рекурсивной архитектуре?
Если локальный DNS не является DNS только для пересылки, тогда да, и это происходит постоянно. Как только вы узнаете, как получить ответ для определенного домена, вы больше не будете идти до корня, пока информация находится в кеше. Данные могут быть удалены из кеша из-за истечения исходного TTL или из-за того, что локальная конфигурация установила ограничение на размер кеша или TTL. Для bind
например, это было бы max-cache-ttl
.