Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье приведены общие сведения о процессе запроса системы доменных имен (DNS) и о том, как DNS-серверы разрешают запросы. В нем также объясняется, как DNS-серверы используют рекурсию и итерацию для разрешения запросов.
Как работают запросы DNS
Когда DNS-клиент должен выполнить поиск имени, он обращается к DNS-серверам для его разрешения. Каждое сообщение запроса, отправляемое клиентом, содержит три фрагмента информации, указывая вопрос для ответа сервера:
- Указанное доменное имя DNS, указанное в качестве полного доменного имени (FQDN).
- Тип запроса, который может указывать запись ресурса (RR) по определенному типу или представлять собой специализированную операцию запроса.
- Указанный класс для доменного имени DNS. Для DNS-серверов под управлением операционной системы Windows этот класс всегда должен быть указан в качестве класса Internet (IN).
Например, указанное имя может быть полное доменное имя для компьютера, например host-a.example.contoso.com., и тип запроса, указанный для поиска адреса (A) RR по указанному имени. Подумайте о DNS-запросе как о клиенте, задающем серверу двухчастный вопрос, например, "У вас есть какие-либо A-записи ресурсов для компьютера с именем hostname.example.contoso.com.?" Когда клиент получает ответ от сервера, он считывает и интерпретирует ответную A-запись ресурсов, узнавая IP-адрес компьютера, который он запросил по имени.
В следующей таблице описаны распространенные типы ЗАПРОСОВ DNS и соответствующие идентификаторы.
| Type | ID |
|---|---|
| A | 1 |
| AAAA | 28 |
| SOA | 6 |
| SRV | 33 |
Запросы DNS разрешаются различными способами. Иногда клиент может отвечать на запрос локально с помощью кэшированных данных, полученных из предыдущего запроса. DNS-сервер может использовать собственный кэш сведений о записи ресурсов для ответа на запрос. DNS-сервер также может запрашивать другие DNS-серверы от имени клиента. Этот процесс называется рекурсией. Сервер определяет имя, а затем отправляет ответ обратно клиенту.
Кроме того, сам клиент может попытаться связаться с другими DNS-серверами для разрешения имени. Когда клиент делает это, он использует отдельные запросы, основанные на реферальных ответах серверов. Этот процесс называется итерацией.
Как правило, процесс запроса DNS выполняется в двух частях:
- Запрос имени начинается на клиентском компьютере и передается в сопоставитель. Для разрешения используется служба DNS-клиента.
- Если запрос не может быть разрешен локально, DNS-серверы можно запрашивать по мере необходимости для разрешения имени.
Каждый процесс подробно описан в этой статье.
Как работает итерация
Итерация — это тип разрешения имен, используемый между клиентами DNS и серверами, когда применяются следующие условия:
- Клиент запрашивает использование рекурсии, но рекурсия отключена на DNS-сервере.
- Клиент не запрашивает использование рекурсии при запросе DNS-сервера.
Итеративный запрос от клиента сообщает DNS-серверу, что клиент ожидает наиболее подходящий ответ DNS-сервера немедленно, не связываясь с другими DNS-серверами.
При использовании итерации DNS-сервер отвечает клиенту на основе собственных знаний о пространстве имен относительно запрашиваемых данных имен. Например, если DNS-сервер в интрасети получает запрос от локального клиента www.contoso.com, он может вернуть ответ из кэша имен. Если запрашиваемое имя в настоящее время не хранится в кэше имен сервера, сервер может ответить, предоставив ссылку. Реферал — это список NS и RR для других DNS-серверов, которые ближе к имени, запрашиваемого клиентом.
При использовании итерации DNS-сервер может помочь в разрешении запросов имен, помимо предоставления собственного лучшего ответа клиенту. Для большинства итеративных запросов клиент использует свой локально настроенный список DNS-серверов для связи с другими серверами имен в пространстве имен DNS, если его основной DNS-сервер не может разрешить запрос.
Служба клиента Windows DNS не выполняет рекурсию.
Как выполняется кэширование
Так как DNS-серверы обрабатывают запросы клиентов с помощью рекурсии или итерации, они обнаруживают и получают значительное хранилище сведений о пространстве имен DNS. Затем сервер кэширует эти сведения.
Кэширование позволяет ускорить производительность разрешения DNS для последующих запросов популярных имен, что значительно снижает трафик запросов, связанных с DNS, в сети.
Так как DNS-серверы выполняют рекурсивные запросы от имени клиентов, они временно кэшируют записи ресурсов. Кэшированные записи ресурсов содержат сведения, полученные от DNS-серверов. Эти серверы являются доверенными для доменных имен DNS. Эта информация изучается при выполнении итеративных запросов. Эти запросы помогают полностью ответить на рекурсивный запрос, выполняемый от имени клиента. Позже, когда другие клиенты размещают новые запросы, запрашивающие сведения о записи ресурсов, соответствующие кэшируемым записям, DNS-сервер может использовать кэшированные сведения для ответа на них.
Если данные кэшируются, значение time-To-Live (TTL) применяется ко всем кэшируемым записям ресурсов. Пока срок жизни кэшированной записи ресурса не истечет, DNS-сервер может продолжать кэширование. Он может снова использовать кэшированную запись ресурсов при ответе на запросы от своих клиентов, которые соответствуют этим записям. Кэширование значений TTL, используемых в записях ресурсов в большинстве конфигураций зон, происходит с заданием минимального (по умолчанию) значения TTL, которое установлено в записи начала авторитетности (SOA) зоны. По умолчанию минимальное значение TTL составляет 3600 секунд (один час), но можно его настроить или установить индивидуальные значения TTL для каждой записи ресурса.
Note
По умолчанию служба DNS-сервера использует файл корневых подсказок, cache.dnsкоторый хранится в папке <systemroot>\System32\Dns на серверном компьютере. Этот файл содержит записи ресурсов NS и A для корневых серверов пространства имен DNS (корневых серверов Интернета или корневых серверов интрасети). При запуске службы DNS-сервера корневой список серверов запрашивается для текущего списка всех корневых серверов. Результаты запроса используются для обновления файла корневых подсказок. Эта операция также выполняется периодически во время выполнения службы. При внесении изменений в корневые подсказки администратором эти изменения записываются обратно в файл корневых подсказок.
Резольвер службы DNS-клиента
Если доменное имя DNS используется в программе на локальном компьютере, запрос передается службе DNS-клиента для разрешения, которое сначала проверяет локально кэшированные сведения. Если запрашиваемое имя может быть разрешено, запрос будет ответен и процесс завершен.
На следующей диаграмме показан простой пример запроса DNS-клиента к службе DNS для разрешения имени.
Локальный кэш сопоставителя может включать сведения о имени, полученные из двух возможных источников:
Если файл Hosts настроен локально, все сопоставления имен узлов с адресом из этого файла загружаются в кэш при запуске службы КЛИЕНТА DNS.
Записи ресурсов, полученные в ответах на предыдущие запросы DNS, добавляются в кэш и хранятся в течение времени, определяемого временем жизни (TTL).
Если запрос не соответствует записи в кэше, процесс разрешения продолжается с помощью клиента, запрашивающего DNS-сервер для разрешения имени.
На следующей схеме показана служба DNS-клиента, проверяя кэш для DNS-запроса.
Настройка DNS-клиентов с несколькими IP-адресами DNS-сервера добавляет отказоустойчивость в инфраструктуру DNS. Добавление нескольких IP-адресов DNS-сервера гарантирует, что разрешение DNS-имен возможно, если основной DNS-сервер, сетевой канал или поддержка инфраструктуры выходит из строя.
Сбои имен могут привести к зависанию приложения или компонента, а также перебоям в работе ресурсов, которые ожидают истечения срока ожидания зависимых процессов и напрямую или косвенно вызывают операционные сбои. Дополнительные сведения о всех возможных сценариях см. в статье о времени ожидания разрешения клиентов DNS .
По этим причинам рекомендуется настроить любой клиент Windows с несколькими DNS-серверами. Однако процесс разрешения клиента Windows зависит от количества настроенных DNS-серверов.
Процесс запроса DNS-сервера
Когда DNS-сервер получает запрос, сначала проверяет, может ли он ответить на запрос авторитетно. DNS-сервер проверяет данные записи ресурсов, содержащиеся в локально настроенной зоне на сервере.
Если запрашиваемое имя соответствует соответствующему RR в сведениях о локальной зоне, сервер отвечает достоверно, используя эти сведения для разрешения запрашиваемого имени.
Если сведения о зоне отсутствуют для запрашиваемого имени, сервер проверяет, может ли он разрешить имя с помощью локально кэшированных данных из предыдущих запросов. Если совпадение найдено здесь, сервер отвечает с этой информацией. Снова, если предпочтительный сервер может ответить положительным совпадающим ответом из своего кэша на запрос клиента, запрос завершён.
Если запрашиваемое имя не находит соответствующий ответ на предпочтительном сервере либо из кэша, либо из сведений о зоне, процесс запроса может продолжаться, используя рекурсию для полного разрешения имени. Этот процесс включает помощь от других DNS-серверов для разрешения имени. По умолчанию служба DNS-клиента запрашивает сервер использовать процесс рекурсии для полного разрешения имен от имени клиента перед возвратом ответа.
Чтобы DNS-сервер правильно выполнял рекурсию, сначала требуется некоторая полезная контактная информация о других DNS-серверах в пространстве доменных имен DNS. Эти сведения предоставляются в качестве корневых подсказок. Корневые подсказки — это список предварительных записей ресурсов. Служба DNS использует эти записи для поиска других DNS-серверов, которые являются доверенными для корневого каталога дерева пространства имен DNS. Корневые серверы являются доверенными для корневых доменов и доменов верхнего уровня в дереве пространства имен DNS.
Используя корневые подсказки для поиска корневых серверов, DNS-сервер может завершить использование рекурсии. В теории этот процесс позволяет любому DNS-серверу находить серверы, которые являются доверенными для любого другого доменного имени DNS, используемого на любом уровне в дереве пространства имен.
Ниже описан процесс запроса DNS-сервера:
Если запрос является полным доменным именем (FQDN), то есть заканчивается точкой окончания (
.), то запрос отправляется на DNS-сервер. Например:www.contoso.com.Если запрос является неквалифицированным запросом с несколькими метками, то есть он не заканчивается конечной точкой (
.), DNS-клиент отправляет его на DNS-сервер с конечной точкой (.). Например:www.contoso.com.Если неквалифицированный запрос на одну метку, например
www. Затем поведение отличается на основе параметров DNS в сетевом адаптере.Если есть список поиска DNS-суффикса, служба DNS-клиента добавляет их от первого до последнего к запросу одной метки и отправляет запрос с завершаемой точкой (
.) на DNS-сервер. Этот процесс является повторяющийся процессом до тех пор, пока не будет использован список всех суффиксов DNS.Если список поиска DNS-суффикса не настроен, служба DNS-клиента добавляет первичный DNS-суффикс к запросу одной метки с завершаемой точкой (
.) и отправляется на DNS-сервер.Если DNS-клиент настроен для деволюции имени, он деволвирует основной DNS-суффикс и отправляет другой запрос с завершающей точкой (
.), если основной DNS-суффикс не удается. Например, если разрешениеwww.test.contoso.comзавершается сбоем, клиент переходит наwww.contoso.comЕсли на адаптерах настроен суффикс DNS для определенных подключений, он добавляет запрос с завершаемой точкой (
.) и отправляется на DNS-сервер.
Во всех случаях ответ хранится в кэше КЛИЕНТА DNS независимо от того, является ли ответ положительным или отрицательным.
В следующей блок-схеме показан описанный процесс запроса DNS-сервера.
Рекурсия DNS
Рассмотрите возможность использования процесса рекурсии, чтобы найти имя host-b.example.contoso.com. , когда клиент запрашивает один DNS-сервер. Процесс происходит при первом запуске DNS-сервера и клиента, когда не имеется локально кэшированных сведений, которые помогут разрешить запрос имени. Предполагается, что имя, запрашиваемое клиентом, предназначено для доменного имени, в котором сервер не имеет локальных знаний на основе настроенных зон.
Во-первых, предпочтительный сервер анализирует полное имя и определяет, что он нуждается в расположении сервера, который является доверенным для домена верхнего уровня. com Затем он использует итеративный запрос com к DNS-серверу для получения ссылки на contoso.com сервер. Затем ответ на перенаправление поступает с contoso.com сервера на DNS-сервер для example.contoso.com.
Наконец, устанавливается связь с example.contoso.com. сервером. Поскольку этот сервер содержит запрашиваемое имя в составе настроенных зон, он отвечает авторитетно первоначальному серверу, инициировавшему рекурсию. Когда исходный сервер получает ответ, он проверяет, является ли ответ достоверным. Если это так, сервер перенаправит этот ответ обратно в запрашивающий клиент, завершив процесс рекурсивного запроса.
Хотя рекурсивный процесс запроса может быть ресурсоемким при выполнении, как описано, он имеет некоторые преимущества производительности для DNS-сервера. Например, во время рекурсии DNS-сервер, выполняющий рекурсивный поиск, получает сведения о пространстве доменных имен DNS. Сервер кэширует сведения, которые можно использовать еще раз, чтобы ускорить ответы на последующие запросы, которые используют или соответствуют ему. С течением времени эти кэшированные сведения могут расти, чтобы занять значительную часть ресурсов памяти сервера. Кэш очищается всякий раз, когда служба DNS перезапускается.
Адаптивное время ожидания запроса DNS
Функция адаптивного времени ожидания DNS-запроса позволяет время ожидания для DNS-запросов адаптироваться в зависимости от времени, необходимого для предыдущих запросов, уменьшая время ожидания для большинства запросов. Время ожидания также может быть увеличено для каналов с высокой задержкой, таких как спутниковые каналы. Приложения в Магазине Windows могут оптимизировать конфигурацию времени ожидания DNS для каждого сетевого интерфейса.
Вместо того чтобы ждать 1000 мс до тайм-аута DNS-запроса, первая задержка настраивается в диапазоне от 25 мс до 1000 мс, на основе предшествующей производительности сети.
Кэш неотзывчивого DNS-сервера
Не отвечающие DNS-серверы кэшируются и периодически повторно проверяются. Это отключение позволяет DNS-клиенту постоянно использовать лучший доступный сервер и тратить меньше времени на ожидание неответственных DNS-серверов.
На следующем рисунке показан пример запросов DNS-клиента к каждому серверу на каждом адаптере с использованием процесса, описанного в этом разделе.
Служба DNS-клиента запрашивает DNS-серверы в следующей последовательности:
Служба DNS-клиента отправляет запрос имени на первый DNS-сервер в списке DNS-серверов предпочтительного адаптера и ожидает один секунду ответа.
Если служба DNS-клиента не получает ответ от первого DNS-сервера в течение одной секунды, он отправляет запрос имени на первые DNS-серверы на всех адаптерах, которые по-прежнему рассматриваются, и ожидает два секунды ответа.
Если служба DNS-клиента не получает ответ от любого DNS-сервера в течение двух секунд, он отправляет запрос на все DNS-серверы на всех адаптерах, которые по-прежнему рассматриваются. Затем служба DNS-клиента ожидает еще два секунды ответа.
Если служба DNS-клиента по-прежнему не получает ответ от любого DNS-сервера, он отправляет запрос имени всем DNS-серверам на всех адаптерах, которые по-прежнему рассматриваются, и ожидает четыре секунды ответа.
Если служба DNS-клиента не получает ответ от dns-сервера, DNS-клиент отправляет запрос всем DNS-серверам на всех адаптерах, которые по-прежнему рассматриваются, и ожидает восемь секунд ответа.
Если служба DNS-клиента не получает ответ от любого сервера в течение восьми секунд, служба DNS-клиента отвечает с истечением времени ожидания. Если служба DNS-клиента не получает ответ от какого-либо DNS-сервера на определенном адаптере, время ожидания всех запросов к этим серверам истекает в течение следующих 30 секунд на этом адаптере.
Если в любой момент служба DNS-клиента получает отрицательный ответ от сервера, он удаляет каждый сервер на этом адаптере из рассмотрения во время этого поиска. Например, если первый сервер на альтернативном адаптере A дает отрицательный ответ на шаге 2, служба DNS-клиента не запрашивает другой сервер в списке для альтернативного адаптера A.
Если служба DNS-клиента получает положительный ответ, он перестает запрашивать имя, добавляет ответ в кэш и возвращает ответ клиенту.
Служба DNS-клиента отслеживает, какие серверы отвечают на запросы имени, и он перемещает серверы вверх или вниз по списку на основе того, как быстро они отвечают на запросы имен.
Альтернативные ответы на запросы
Предыдущее описание запросов DNS предполагает, что процесс заканчивается положительным ответом, возвращенным клиенту. Однако запросы также могут возвращать другие ответы. Ниже приведены наиболее распространенные ответы на запросы:
- Авторитетный ответ
- Положительный ответ
- Ответ на рекомендации
- Отрицательный ответ
Авторитетный ответ — это положительный ответ от DNS-сервера, который имеет прямое полномочие на запрашиваемое имя. Этот ответ включает бит авторитета, установленный в сообщении DNS, чтобы указать его подлинность.
Положительный ответ может состоять из запрашиваемого RR или списка RR (также известного как набор RR), который соответствует запрашиваемого dns-имени домена и типа записи, указанного в сообщении запроса.
Ответ на ссылку содержит другие RR, которые не указаны ни по имени, ни по типу в запросе. Этот тип ответа возвращается клиенту, если процесс рекурсии не поддерживается. Записи должны выступать в качестве полезных справочных ответов, которые клиент может использовать для продолжения запроса с помощью итерации. Ответ на перенаправление содержит больше данных, таких как RR, отличные от запрашиваемых типов. Например, если DNS-сервер не находит ни одной A RR для запрашиваемого имени узла www в этой зоне, но вместо этого находит CNAME RR для www, он может включить эту информацию в ответ клиенту. Если клиент может использовать итерацию, он может сделать больше запросов, используя информацию о перенаправлении в попытке полностью разрешить имя самостоятельно.
Отрицательный ответ сервера может указать один из двух возможных результатов:
- Доверенный сервер не мог найти запрашиваемое имя в пространстве имен DNS.
- Доверенный сервер нашел запрашиваемое имя, но для этого имени отсутствуют записи указанного типа.
Резолвер обрабатывает запрос и возвращает результаты запрашивающей программе. Ответ может быть положительным или отрицательным. Кроме того, сопоставитель кэширует ответ для дальнейшего использования.
Если ответ на запрос слишком велик, чтобы его можно было отправить и обработать в одном пакете сообщений UDP, сервер DNS может инициировать ответ через TCP-порт 53, чтобы полностью ответить клиенту в TCP-сеансе.
Отключение использования рекурсии на DNS-сервере выполняется, когда DNS-клиенты ограничены разрешением имен на определенный DNS-сервер, например один, расположенный в интрасети. Рекурсия также может быть отключена, если DNS-сервер не может выполнять разрешение внешних DNS-имен. В этом случае клиенты должны переключиться на другой DNS-сервер для разрешения имен. Если вы отключите рекурсию на DNS-сервере, вы не можете использовать переадресации на том же сервере.
По умолчанию DNS-серверы используют несколько времени по умолчанию при выполнении рекурсивного запроса и обращении к другим DNS-серверам. К этим значениям по умолчанию относятся:
- Интервал повторных попыток рекурсии — 3 секунды. Этот интервал — это время ожидания службы DNS перед повтором запроса, сделанного во время рекурсивного поиска.
- Интервал таймаута рекурсии, равный 8 секундам. Этот интервал — это время ожидания службы DNS перед тем, как неудачно завершить повторный рекурсивный поиск.
В большинстве случаев эти параметры не нуждаются в корректировке. Тем не менее, если вы используете рекурсивные запросы по медленной сети WAN, вы можете улучшить производительность сервера и выполнение запросов, внося небольшие изменения в настройки.
Связанный контент
Дополнительные сведения о процессе обратного поиска см. в разделе "Обратный поиск".