Разница между рекурсивным и итеративным поиском DNS - PullRequest
9 голосов
/ 01 апреля 2012

Я делаю распознаватель и программу сервера имен без использования библиотек DNS (таких как netdb.h), напрямую отправляя сообщение DNS. но у меня мало проблем. Насколько я узнаю, когда мы отправляем рекурсивный запрос, запрашиваемый сервер имен находит записи для нас. Являются ли запросы, используемые сервером имен для запросов других серверов, похожи на итеративные запросы? по крайней мере, эти изображения предполагают это.

Я также сбит с толку, если клиент может выполнять итеративный запрос или только сервер имен может выполнять итеративные запросы?

Рекурсивный поиск DNS:

Recursive dns lookup

Итеративный поиск DNS: Iterative dns lookup

Ответы [ 3 ]

6 голосов
/ 11 апреля 2012

Любой DNS-клиент (или «распознаватель») может выполнять итеративные запросы.

По определению, однако, распознаватель, выполняющий итеративные запросы, является рекурсивным распознаватель, а не заглушка распознаватель.

преобразователи заглушки обычно реализуются как библиотеки , связанные непосредственно с исполняемым файлом.

Однако это такжеМожно создать полный рекурсивный распознаватель в качестве отдельной библиотеки.libunbound является особенно хорошим примером.

5 голосов
/ 01 апреля 2012

Клиент, безусловно, может выполнять итеративные запросы самостоятельно, без необходимости обращаться к рекурсивному преобразователю, но есть много причин, чтобы этого не делать:

  • упрощает сложность программного обеспечения, которое должно существовать в библиотеках-заглушках (например, libresolv или встроенных в libc) на каждом хосте
  • делегировать итеративный запрос на сервер в сети интернет-провайдера или ближе к "магистральной сети", которая будет иметь лучшее интернет-соединение (самое главное, меньшую задержку) и сможет быстрее выполнять итеративный запрос.
  • агрегирует запросы DNS многих конечных пользователей на небольшое количество распознавателей кэширования. Большую часть времени распознаватели не должны будут выполнять полный итеративный запрос: они будут иметь некоторые или все результаты уже кэшированы.
  • уменьшить количество мест, где должен быть развернут файл "подсказок" (список корневых серверов имен и их IP-адресов), который необходим для начальной загрузки рекурсивного преобразователя.

DNSSEC добавляет ключ: в DNSSEC конечный пользователь должен выполнить полный итеративный запрос, если он хочет подтвердить результат. Еще неизвестно, как будет происходить крупномасштабное развертывание распознавателей с поддержкой DNSSEC.

1 голос
/ 22 декабря 2014

рекурсивный запрос: - DNS-сервер может отправлять запрос другого DNS-сервера в Интернете от вашего имени для ответа. Как прокси-сервер отправляет запрос на главный сервер для ответа.

В итеративном запросе сервер имен не пойдет и не получит полный ответ на ваш запрос, но вернет ссылку на другой DNS-сервер, который может иметь ответ. это прокси-сервер дает вам ответ, если он не дает искать на других серверах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...