Понимание трех методов запроса DNS

DNS
Понимание трех методов запроса DNS

Сначала краткое введение вDNS (Domain Name System), DNS — это протокол, если быть точным, протокол прикладного уровня, основанный на UDP. Основная цель — преобразовать доменное имя в IP-адрес. Этот процесс называетсяРазрешение имени.

В этой статье в основном кратко представлены три метода запросов DNS:

  • рекурсивный запрос
  • итеративный запрос
  • нерекурсивный запрос

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

Роль

Client

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

DNS Server

За исключением Клиента, который инициирует запрос, другие узлы, через которые проходят DNS-запросы, в основном являются DNS-серверами.

DNS Resolver

По сути, Resolver — это тоже DNS-сервер, но он особенный.Мы называем DNS-сервер, который принимает Recursive Query Resolver. Из соображений производительности многие DNS-серверы не будут принимать рекурсивные запросы, только итерационные запросы и не могут быть резольверами.

ISP (Internet Service Provider)

Поставщики сетевых услуг, такие как China Telecom, China Netcom и т. д.

Корневой сервер имен

В общей сложности 13 по всему миру, отвечающих за возврат адреса полномочного сервера имен домена верхнего уровня (.com и т. д.)

Сервер доменных имен верхнего уровня

Отвечает за возврат официальных адресов серверов имен для доменов первого уровня (например, example.com).

Авторитетный сервер имен

Отвечает за возврат записи адреса (записи A) под своим доменным именем.

мероприятие

Рекурсивный запрос

Рекурсивный запрос — это такой метод запроса, который обычно возникает, когда Клиент запрашивает DNS-сервер. Когда клиент отправляет запрос на разрешение доменного имени, DNS-сервер должен вернуть соответствующий IP-адрес или вернуть ошибку, не найденную.

Итеративный запрос

Итеративный запрос обычно выполняется между DNS-серверами. Когда клиент отправляет запрос на разрешение доменного имени, DNS-сервер должен дать лучший ответ. Лучшим ответом может быть «ближайший» сервер доменных имен верхнего уровня или авторитетный сервер доменных имен. . В любом случае Клиенту необходимо снова инициировать запрос на возвращаемый результат, пока не будет получен окончательный результат.

Нерекурсивный запрос

Нерекурсивный запрос происходит между клиентом и DNS-сервером, что означает, что запрошенный DNS-сервер уже знает ответ и возвращает его напрямую. Здесь может быть две ситуации: одна из них заключается в том, что DNS-сервер локально кэширует соответствующий IP-адрес, либо уполномоченный сервер кэширует соответствующее доменное имя. Во втором случае достаточно повторно отправить запрос, чтобы получить результат обратно.

история

image-20190727151903026
Сяо Мин набрал в браузере ноутбукаexample.com, при отсутствии какого либо кеша ноут выдает DNS Роутеру как Клиентурекурсивный запросЗапрос требует, чтобы маршрутизатор возвращал IP-адрес этого доменного имени. Маршрутизатор продолжает инициировать одноранговые вызовы провайдеру, ничего не зная.example.comизрекурсивный запрос, после получения запроса DNS-сервер провайдера инициирует корневой сервер имен, сервер имен TLD, полномочный сервер имен и т. д.итеративный запроси, наконец, возвращает желаемый результат.

Сервер корневых доменных имен вернет IP-адрес сервера доменных имен верхнего уровня (.com), TLD вернет IP-адрес авторитетного сервера доменных имен example.com и, наконец, запрос запроса к полномочному домену. сервер имен example.com получит окончательный результат, а именно адрес сервера для example.com

Можно видеть, что все запросы DNS-запросов между клиентом и провайдером являются рекурсивными запросами, а запросы от провайдера от корневого сервера имен доменов являются итеративными запросами. Этот метод запроса предназначен для обеспечения производительности, поскольку рекурсивные запросы создают большую нагрузку на сервер, чем итерационные запросы.

Вот краткое введение в роль маршрутизатора.Вообще говоря, мы будем использовать протокол DHCP, а провайдер назначит нам DNS-сервер в качестве резолвера. Но поскольку мы используем маршрутизатор, маршрутизатор перехватит этот DNS-сервер и назначит собственный IP-адрес маршрутизатора в качестве DNS-сервера нашего компьютера. Конечным результатом является то, что, как упоминалось выше, все DNS-запросы проходят через маршрутизатор. Конечно, мы можем сами указать DNS-сервер компьютера, например, Google 8.8.8.8, чтобы наш Resolver стал указанным DNS-сервером, минуя маршрутизатор. Конечно, лучше использовать роутер, потому что роутер будет делать кеш за нас.

Ref