Схемы запросов
Для пояснения рассмотрим пример (рис. 13.3). Допустим, сервер должен выполнить разрешение доменного имени www.ayan.ru. Первоначально DNS-сервер пытается обнаружить в собственной базе данных сведения о домене ауаn .ru. В случае если сведения о данном домене отсутствуют, DNS-сервер пытается обнаружить серверы имен для данного домена (при этом поиск осуществляется как в собственной базе данных, так и в кэше имен). Если соответствующие серверы имен не могут быть обнаружены, предпринимается аналогичная попытка для домена ru. В определенный момент DNS-сервер обратится к серверам корневого домена. Серверы имен корневого домена не располагают информацией о запрашиваемом домене. Но поскольку запрашиваемый домен располагается внутри домена ru, будет возвращена ссылка на серверы имен домена ru. Обращение к DNS-серверам домена ru даст информацию о серверах имен домена ayan.ru. Обратившись к серверу имен домена ayan.ru, DNS-сервер получит информацию об IP-адресе хоста www.ауаn.ru.
Рис. 13.3. Рекурсивный метод разрешения запросов
В случае получения итерационного запроса (iterative query) DNS-сервер просматривает собственную базу данных и кэш, пытаясь обнаружить в них сведения о запрашиваемом доменном имени. Если доменное имя не может быть разрешено DNS-сервером самостоятельно, клиенту будет возвращена ссылка на вышестоящий DNS-сервер. Клиент должен повторно отправить запрос указанному серверу имен. Тот, в свою очередь, просматривает собственную базу данных и возвращает либо адрес требуемого хоста, либо ссылается на другой сервер имен. На определенном этапе клиент свяжется с сервером имен, который располагает сведениями о запрашиваемом доменном имени. В этом сценарии основная нагрузка по разрешению имени возлагается на DNS-клиента.
Итерационные запросы могут использоваться в ситуации, когда или DNS-сервер, или DNS-клиент не поддерживают рекурсивные запросы (например, администратор может запретить на уровне DNS-сервера применение рекурсивных запросов).
На рис. 13.4 показан пример итерационного разрешения доменного имени. Допустим хост store.khsu.ru должен установить соединение с хостом movies.yahoo.com.
Рис. 13.4.Итерационный метод разрешения запросов
Для разрешения указанного доменного имени клиент предпринимает следующие шаги:
- Клиент обращается к серверу имен, обслуживающему домен khsu.ru. Этот сервер имен не обладает информацией о запрашиваемом имени и возвращает клиенту ссылку на вышестоящий сервер имен (обслуживающий домен ru).
- Клиент обращается к серверу имен, обслуживающему домен ru. Этот сервер имен не обладает информацией о запрашиваемом имени и возвращает клиенту ссылку на корневой сервер имен (домен ".").
- Клиент обращается к корневому серверу имен. Корневой сервер имен обнаруживает, что запрашиваемое доменное имя принадлежит к домену com. Клиенту возвращается ссылка на сервер имен, обслуживающий домен com.
- Клиент обращается к серверу имен, обслуживающему домен com. Данный сервер имен находит в своей базе данных записи о сервере имен, обслуживающем домен yahoo.com. Ссылка на этот сервер имен возвращается клиенту.
- Клиент обращается к серверу имен, обслуживающему домен yahoo.com. Сервер имен находит в своей базе данных запись о хосте movies.yahoo.com. Соответствующий этому имени IP-адрес возвращается клиенту.