В рекурсивном DNS-запросе клиент отправляет запрос только первому DNS-серверу. Сервер, если он не может ответить, отправит запрос следующему серверу и так далее, пока запрос не будет решен. Здесь DNS-клиент требует, чтобы DNS-сервер отвечал на запрос, поэтому на сервере лежит бремя разрешения запроса.
В итеративном DNS-запросе клиент отвечает за отправку запроса на последовательные серверы до тех пор, пока запрос не будет решен путем нажатия на сервер, который авторизован для доменного имени (или до ошибки или тайм-аута). Здесь бремя лежит на клиенте, чтобы решить запрос.
Я не думаю, что между ними существует большая разница в скорости, за исключением того, что DNS-сервер, который достаточно высок в иерархии, вероятно, будет иметь более быстрое подключение к Интернету, чем клиент.
Для итеративного DNS-запроса клиент в конечном итоге будет иметь в своем кэше последовательные промежуточные DNS-серверы, но я не понимаю, как он может использовать это для получения преимущества.
Более подробно, это четыре наиболее распространенных ответа, которые может дать DNS-сервер:
- Авторитетный - положительный ответ, возвращаемый клиенту с установленным битом Авторитетный ответ (AA).
- Положительный - ответ, содержащий запись ресурса (RR) или список RR, соответствующих запросу.
- Направление - ответ, содержащий список альтернативных серверов, которые клиент может использовать для определения имени. Этот тип ответа дается, если рекурсия не поддерживается.
- Отрицательный - этот ответ означает, что уполномоченный сервер сообщил, что имя (или тип записи) не существует в пространстве имен DNS.
В итеративном запросе клиент отправляет запрос на сервер. Если рекурсия отключена и сервер не может ответить на запрос, сервер ответит ответом Реферала. Затем клиент будет использовать эту информацию для запроса другого DNS-сервера. Этот процесс будет продолжаться до тех пор, пока сервер не ответит официальным или отрицательным ответом или пока у клиента не закончится время.