Именованные элементы и синтаксис имен

Система доменных имен является универсальной, поскольку допускает вложенность нескольких иерархий присваивания имен в одной системе. Чтобы клиенты могли легко ориентироваться во множестве элементов, каждому поименованному элементу, хранящемуся в системе, присваивается тип. Он определяет, чем является данный элемент: адресом машины, именем почтового ящика, пользователя и т.д. Посылая серверу доменных имен запрос на преобразование имени в адрес, клиент должен определить тип предполагаемого ответа. Например, когда программа работы с электронной почтой использует систему доменных имен для преобразования строковых адресов электронной почты в IP-адреса машин, она должна указать в запросе, что в ответе ожидается адрес почтового сервера, выполняющего пересылку сообщений адресату (mail exchanger). Программа для регистрации на удаленной машине указывает в запросе, что ее интересует IP-адрес этой машины. Важно понять следующее.

Имя может соответствовать нескольким элементам системы доменных имен. Отправляя запрос, клиент должен указать предполагаемый тип объекта, имя которого нужно преобразовать, а сервер возвращает объекты указанного типа.

Кроме определения типа возвращаемого объекта, доменная система имен позволяет клиенту определить семейство протоколов, которое будет использоваться. В доменной системе полное пространство имен разделено на классы. Это позволяет хранить в одной базе данных информацию о привязках имен к сетевым адресам, относящимся к разным семействам протоколов.

Проанализировав синтаксис имени нельзя определить, к какому типу объекта или классу семейства протоколов оно относится. В частности, количество меток в имени не определяет, относится ли оно к индивидуальному объекту (машине) или домену. Например, имя определяет физический компьютер в Internet. И это при том, что имя cs.purdue.edu относится к поддомену. Можно подытожить этот важный момент следующим образом.

Невозможно отличить имена поддоменов от имен индивидуальных объектов или их типов, проанализировав только синтаксис доменных имен.

Преобразование доменных имен в адреса

Кроме синтаксиса имен и правил делегирования полномочий, в систему доменных имен включен эффективный, надежный, распределенный и универсальный механизм, выполняющий преобразование имен в адреса. Его реализация является распределенной в техническом смысле этого слова. Это означает, что для решения проблемы преобразования имен в адреса во всех сетевых центрах запускают несколько серверов, которые тесно взаимодействуют друг с другом. Система эффективна в том смысле, что большинство имен может быть преобразовано локально. Поэтому общий трафик службы доменных имен в Internet небольшой. Она может считаться универсальной системой, поскольку ее элементы не обязательно должны соответствовать именам машин (хотя ниже будет использоваться именно этот пример). И наконец, система доменных имен надежна в том смысле, что она будет корректно функционировать, даже если произойдет сбой в работе одного или нескольких удаленных серверов.

Механизм преобразования доменных имен состоит из ряда независимых, но взаимодействующих между собой компьютерных систем, называемых серверами имен (name servers). Сервер имен — это программа, запущенная на компьютере, выполняющем роль сервера, которая преобразует имена доменов в IP-адреса. Очень часто эта программа запускается на специализированном компьютере. В этом случае сама машина также называется сервером имен. Клиентская часть программы называется распознавателем имен (name resolver). В процессе преобразования имени она обращается к одному или нескольким серверам имен.

Для того чтобы понять, как работают серверы доменных имен, нужно расставить их в виде древовидной структуры, которая соответствует иерархии присвоения имен, показанной на рис. 24.2. Корень дерева соответствует серверу, который распознает домены верхнего уровня и "знает", какой сервер распознает каждый из доменов. Корневой сервер управляет процессом преобразования каждого имени и назначает для этого соответствующий сервер. На следующем уровне находятся серверы имен, каждый из которых отсылает ответ на запрос, относящийся к домену верхнего уровня (например, . edu). Сервер на этом уровне "знает", какой сервер может распознать каждый из поддоменов в его домене. На третьем уровне дерева находятся серверы имен, которые отвечают на запросы, относящиеся к поддоме-нам (например, purdue в домене . edu). Можно сказать, что дерево домена начинается на самом верхнем уровне и продолжается вниз по уровням, на которых находятся серверы имен, относящиеся ко всем поддоменам этого домена.

Связи на этой принципиальной древовидной схеме не соответствуют физическим связям в сети. Они просто показывают серверы имен, которые известны данному серверу, и с какими серверами он напрямую взаимодействует. Серверы сами по себе могут располагаться в произвольных местах объединенной сети. Таким образом, дерево серверов имен — это абстракция, в которой для взаимодействия серверов между собой используется объединенная сеть.

Если бы серверы в доменной системе имен работали так, как в описанной только что упрощенной модели, то организовать взаимодействие серверов, принадлежащих разным административным единицам, было бы очень легко. В самом деле, если организации переданы права на управление некоторым поддоменом, то она должна запустить у себя сервер доменных имен и связать его с описанным выше деревом.

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

На корневом сервере хранится информация, необходимая для поддержки системы доменных имен верхнего уровня. Каждая организация использует один сервер для управления своим пространством имен. Поскольку дерево серверов неглубокое, для распознавания имен типа xinu.cs.purdue.edu нужно, чтобы два сервера (корневой и сервер домена purdue.edu) связались между собой. Другими словами корневой сервер "знает", какой из серверов имен управляет доменом pur-due . edu, а вся информация об этом домене находится на одном сервере.

Похожие статьи Меню Опрос Фото Популярное