Лабиринт InternetПавел Храмцов, Электронинформ, 1996. |
Любой сервер имен имеет зону своей ответственности. Для того чтобы получить адреса или имена машин, которые не входят в зону его ответственности, сервер обращается к другим серверам имен. В принципе в поисках адреса или имени запрос может пропутешествовать до корня системы доменов, а затем снова спуститься до локального сервера имен. При поиске имени resolver формирует запрос и посылает его своему серверу имен. Сервер имен пытается найти имя в своей базе данных. Если ему это удается, то ответ возвращается resolverу, в противном случае он запрашивает сервер, стоящий выше него в иерархии доменов. Этот сервер обычно называют корневым. Корневой сервер находит сервер, в чей домен попадает указанное в запросе имя, и указывает адрес этого сервера серверу, с которого поступил запрос. Сервер, найденный корневым сервером, называют удаленным сервером. Локальный сервер устанавливает взаимодействие с удаленным сервером и получает от последнего необходимую информацию.
Кроме алгоритма взаимодействия самих серверов, интерес представляет и алгоритм формирования запроса программой, запрашивающей адрес. Обычно рассматривают три случая: однословное имя, имя с точкой на конце и составное имя.
При указании однословного имени
/usr/paul>telnet polyn
происходит обращение к файлу синонимов (aliases), который указывается в переменной окружения, например, HOSTALIASES в HP-UX, или каким-либо другим способом. Файл синонимов обычно имеет структуру типа:
polyn polyn.net.kiae.su
Если в качестве имени указано имя с точкой на конце, то его и используют для поиска адреса и никакой дополнительной информации к нему не добавляют.
Если указано составное имя, то сначала его проверяют в местном домене, если адрес не найден, то к имени добавляют имя местного домена. Если снова адрес не будет найден, то добавляют имя вышестоящего домена. Если имя вышестоящего домена состоит из одного слова, то его не добавляют к указанному в запросе адресу, например:
/usr/paul/telnet apollo.polyn
При этом на машине указано имя текущего домена polyn.kiae.su. Проверены будут следующие имена: apollo.polyn; apollo.polyn.polyn.kiae.su; apollo.polyn.kiae.su. Последнее имя будет найдено в базе данных локального сервера и будет возвращен IP-адрес этой машины.
При организации своего сервера имен следует принять во внимание, что для этого его следует зарегистрировать в организации, которая предоставляет IP-услуги. Во многих книгах по Internet написано, что следует обращаться в INTERNIC или в NOC EUnet и приводятся их адреса. Вообще говоря, это не совсем правильно. В материалах RIPN (некоммерческий европейский Internet) указано, что обращаться следует в RELARN. При регистрации коммерческой сети следует обращаться к представителю этой сети в регионе. Представителем EUnet является Relcom, сети Sprint -- RuSprint, GLASNET -- российский GLASNET, Telecom -- Sovam Teleport. В общем случае свои доменные адреса следует регистрировать там же, где получают IP-адреса.
Различают четыре вида серверов: primary master сервер; secondary master сервер; caching сервер; удаленный (remote) сервер.
Primary или secondary master серверы устанавливаются обычно на машинах, которые являются шлюзами для локальных сетей. Вообще говоря, сервер имен может быть установлен на любой компьютер локальной сети. Но он будет только один на зону. При выборе машины для установки сервера имен следует принимать в расчет то обстоятельство, что многие реализации серверов держат базы данных имен в оперативной памяти. При этом часто подгружается информация и с других серверов. Все это может вызвать задержки при разрешении запроса на адрес по имени машины, если для сервера имен будет использоваться маломощный компьютер.
Если нужно получить преимущества работы со своим собственным сервером имен реально не управляя доменом, то можно установить только кэширующий сервер, который будет погружать информацию с master серверов и использовать ее для поиска IP-адресов.
При работе на рабочих станциях или персональных компьютерах, которые не являются шлюзами и не используются для публичного сервиса, имеет смысл использовать удаленные сервера, что облегчает проблемы с администрированием сервера имен.
Любой сервер имен настраивается своими служебными файлами. Программа, которая выполняет функции BIND, называется named. При запуске этой программы считывается файл /etc/named.boot. В этом файле указаны: тип сервера, какой зоне он принадлежит и где расположены файлы его базы данных. Файлы базы данных не имеют жесткого разделения, но обычно администраторы их разделяют на: файлы описания хостов и зоны; файл адресов удаленных серверов этой же зоны; файл адресов корневых серверов имен.