Серверы имен

В одноуровневой сети без сервера имен имена всех хостов хранятся в файле /etc/hosts каждого хоста сети. В больших сетях хранение и обновление таких файлов требует слишком большого объема ресурсов. В иерархической сети задача преобразования имен всех хостов в IP-адреса возложена на определенные хосты, называемые серверами имен.

Такая структура имеет ряд преимуществ. На преобразование имен не затрачиваются ресурсы хостов сети, а администратор освобождается от обязанности создавать и обновлять в каждой системе файлы с таблицами преобразования имен. Набор имен, которым управляет какой-либо сервер, называется его областью ответственности.

Прим.: Хост, выполняющий преобразование имен в области ответственности, обычно называют сервером имен, но на самом деле преобразование осуществляется процессом сервера с именем named.

Для снижения нагрузки на сеть все серверы имен в течение определенного времени хранят адреса, полученные с других серверов, в кэше. Когда клиент обращается к серверу с запросом на преобразование имени, сервер сначала просматривает свою кэш-память и определяет, не преобразовывал ли он уже это имя. Так как имена доменов и хостов могут изменяться, то каждый элемент остается в кэш-памяти в течение ограниченного времени, которое определяется параметром времени хранения в кэше (TTL). Таким образом, в пределах области ответственности можно задать период времени, на протяжении которого выполняется точное преобразование имен.

В автономных системах может применяться несколько серверов имен. Обычно серверы имен образуют иерархию, совпадающую со структурой сети. Например, в каждом домене, указанном на рисунке "Структура имен доменов в Internet", может быть свой сервер имен, ответственный за все субдомены. Сервер имен каждого субдомена обменивается информацией с сервером имен домена более высокого уровня (с родительским сервером имен), а также с серверами имен других субдоменов.

Рис. 1. Структура имен доменов в Internet
Структура имен доменов в Internet
На рисунке показана иерархическая структура сети Internet. В вершине дерева находится корневой домен, который разделяется на домены mil, com и edu. На один уровень ниже домена com находятся домены Charlotte, Austin и Hopkins. Домен Austin делится на субдомены Dev и Graphics.

Например, на рисунке "Структура имен доменов в Internet" субдомены Austin, Hopkins и Charlotte входят в состав домена Century. Если следовать иерархии организации сети, то сервер имен Austin должен взаимодействовать с серверами имен Charlotte и Hopkins, а также с родительским сервером имен Century. Кроме того, сервер имен Austin будет взаимодействовать с серверами имен, ответственными за его субдомены.

Существует несколько типов серверов имен:

Флаг Описание
Главный сервер имен Загружает свои данные из файла или с диска и может передавать полномочия другим серверам в своем домене.
Подчиненный сервер имен Во время загрузки системы получает с главного сервера информацию о выделенной ему области ответственности, а затем периодически обращается к главному серверу для обновления этой информации. По истечении периода обновления, указанного в записи ресурса начала области ответственности (SOA) на подчиненном сервере имен, а также при получении уведомляющего сообщения от главного сервера, подчиненный сервер заново загружает базу данных с главного сервера, если порядковый номер базы данных на главном сервере больше, чем ее порядковый номер на подчиненном сервере. Если необходимо принудительно передать с главного сервера новую информацию об области ответственности, достаточно просто удалить существующие базы данных с подчиненного сервера и обновить на нем программу-демон named.
Ограниченный сервер имен Данный сервер имен применяет такой же способ копирования базы данных, что и подчиненный сервер, однако он копирует из базы данных главного сервера только записи о серверах имен.
Сервер подсказок Это сервер имен, который отвечает на запросы только на основании данных, полученных им в результате предыдущих обращений к другим сервером имен. Если в кэш-памяти сервера нет записей преобразования имен в адреса, то для ответа на запросы он обращается к другим серверам.
Клиент или сервер пересылки Этот сервер пересылает перечисленным серверам те запросы, которые он не может обработать самостоятельно. Серверы, предназначенные только для пересылки, занимаются только получением информации и ее передачей другим клиентам. Они не взаимодействуют с главными серверами имен корневого и других доменов. Для обращения к серверам пересылки используются рекурсивные запросы. Может быть определено несколько серверов пересылки, к которым клиент обращается по очереди до тех пор, пока не исчерпается список. Серверы пересылки обычно применяются в том случае, когда вы не хотите, чтобы все серверы данной сети взаимодействовали с остальными серверами Internet, или когда необходимо создать на серверах имен кэш-память большого объема.
Удаленный сервер Выполняет все сетевые программы, использующие сервер имен; при этом процесс сервера имен на локальном хосте не запускается. Все запросы обслуживаются сервером имен, работающим в другой системе.

Один и тот же хост может выполнять функции нескольких серверов имен с различными областями ответственности. Например, он может быть главным сервером имен для одной области и подчиненным сервером имен - для другой.