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

 в раздел Оглавление

«DNS и BIND»

Руководство для системных администраторов

2. Как работает DNS

- Что толку в книжке, - подумала Алиса, - если в ней нет ни картинок, ни разговоров?

Система доменных имен - это, прежде всего, база данных, содержащая информацию об узлах сети. Да, вкупе с этим вы получаете целый набор всякой всячины: чудные имена с точками, серверы, которые подключаются к сети, загадочное «пространство имен». И все же следует помнить, что в конечном итоге услуга, предоставляемая DNS, сводится к получению информации об узлах сети.

Мы уже рассмотрели некоторые важные аспекты работы DNS, включая архитектуру «клиент-сервер» и структуру базы данных. Однако мы не особенно вдавались в детали и не объясняли работу основных механизмов DNS.

В этой главе мы объясним и проиллюстрируем процессы, на которых построена работа системы доменных имен. Будет представлена терминология, которая позволит прочесть и понять оставшуюся часть книги (а также вести интеллектуальные беседы с друзьями - администраторами DNS).

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

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

Распределенная база данных системы доменных имен индексируется по именам узлов. Каждое доменное имя является просто путем в огромном перевернутом дереве, которое носит название пространства доменных имен. Иерархическая структура дерева, отображенная на рис.2.1, похожа на структуру файловой системы UNIX. Единственный корень дерева расположен наверху.[1] В файловых системах UNIX эта точка называется корневым каталогом и представлена символом «слэш» ( / ). В DNS же это просто «корень» ( «root» ). Как и файловая система, дерево DNS может иметь любое количество ответвлений в любой точке пересечения, или узле. Глубина дерева ограничена и может достигать 127 уровней (предел, до которого вы вряд ли когда-нибудь доберетесь).

Структура пространства имен DNS
Рис.2.1 Структура пространства имен DNS

Доменные имена

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

Если метка корневого узла должна быть отображена в доменном имени, она записывается как символ точки, например так: «www.oreilly.com». (На самом деле имя заканчивается точкой-разделителем и пустой меткой корневого узла.) Сама по себе метка корневого узла записывается исключительно из соображений удобства как самостоятельная точка (.). В результате некоторые программы интерпретируют имена доменов, заканчивающиеся точкой, как абсолютные. Абсолютное доменное имя записывается относительно корня и однозначно определяет расположение узла в иерархии.

Абсолютное доменное имя известно также под названием полного доменного имени, обозначаемого аббревиатурой FQDN (fully qualified domain name). Имена без завершающей точки иногда интерпретируются относительно некоторого доменного имени (не обязательно корневого) точно так же, как имена каталогов, не начинающиеся с символа « / » (слэш), часто интерпретируются относительно текущего каталога.

В DNS «братские» узлы, то есть узлы, имеющие общего родителя, должны иметь разные метки. Такое ограничение гарантирует, что доменное имя единственно возможным образом идентифицирует отдельный узел дерева. Это ограничение на практике не является ограничением, поскольку метки должны быть уникальными только для братских узлов одного уровня, но не для всех узлов дерева. То же ограничение существует в файловых системах UNIX: двум «единоутробным» каталогам или двум файлам в одном каталоге не могут быть присвоены одинаковые имена. Невозможно создать два узла hobbes.pa.ca.us в пространстве доменных имен, и невозможно создать два каталога /usr/bin (рис.2.2). Тем не менее можно создать пару узлов с именами hobbes.pa.ca.us и hobbes.lg.ca.us - точно так же, как можно создать пару каталогов с именами /bin и /usr/bin.

Домены

Домен - это просто поддерево в пространстве доменных имен. Доменное имя домена идентично доменному имени узла на вершине домена. Так, к примеру, вершиной домена purdue.edu является узел с именем purdue.edu (рис.2.3).

Аналогичным образом в файловой системе в корне каталога /usr мы ожидаем увидеть узел с именем /usr (рис.2.4).

Каждое доменное имя в поддереве считается принадлежащим домену. Поскольку доменное имя может входить в несколько поддеревьев, оно также может входить в несколько доменов. К примеру, доменное имя pa.ca.us входит в домен ca.us и при этом является также частью домена us (рис.2.5).

Так что теоретически домен - это просто сегмент пространства домен ных имен. Но если домен состоит только из доменных имен и других доменов, то где все узлы? Ведь домены-то - это группы узлов, верно? Узлы сети, разумеется, присутствуют, и представлены они доменными именами. Следует помнить, что доменные имена являются просто указателями в базе данных DNS. «Узлы» - это доменные имена, которые указывают на информацию по каждому конкретному узлу. Домен содержит все узлы сети, доменные имена которых в него входят. Узлы сети связаны логически, зачастую по географическому или организационному признаку, и совсем необязательно - сетью, адресом или типом используемого оборудования. Десяток узлов, входящих в разные сети, возможно даже расположенных в разных странах, может принадлежать одному-единственному домену.

Обеспечение уникальности доменных имен и путевых имен в файловых системах UNIX
Рис.2.2 Обеспечение уникальности доменных имен и путевых имен в файловых системах UNIX

Домен purdue.edu
Рис.2.3 Домен purdue.edu

Каталог /usr
Рис.2.4 Каталог /usr

Предостережение: не стоит путать домены DNS с доменами в службе NIS, Network Information Service от Sun. Несмотря на то, что домен NIS - это тоже группа узлов, а доменные имена в обеих службах имеют сходную организацию, концептуальные различия достаточно велики. В NIS используется иерархическая организация имен, но иерархия на этом и заканчивается: узлы сети, входящие в один домен NIS, разделяют определенную информацию об узлах и пользователях, но не могут опрашивать пространство имен NIS с целью поиска информации в других доменах NIS. Домены NT, обеспечивающие управление доступом и службами безопасности, также не имеют никакого отношения к доменам DNS. Однако домены Active Directory близко связаны с доменами DNS. Мы обсудим эту связь в главе 17 «Обо всем понемногу».

Узел, входящий в несколько доменов
Рис.2.5 Узел, входящий в несколько доменов

Доменные имена, соответствующие листьям дерева, как правило, относятся к отдельным узлам сети и могут указывать на сетевые адреса, информацию об оборудовании и о маршрутизации почты. Доменные имена внутри дерева могут идентифицировать отдельные узлы, а также могут указывать на информацию об этом домене. Имена доменов внутри дерева не привязаны жестко к тому или другому варианту. Они могут представлять как домен (имени которого соответствуют), так и отдельный узел в сети. Так, hp.com является именем домена компании Hewlett-Packard и доменным именем, указывающим на узлы, на которых расположен главный веб-сервер Hewlett-Packard.

Тип информации, получаемой при использовании доменного имени, зависит от контекста применения имени. Посылка почтовых сообщений кому-то в домен hp.com приводит к получению информации о маршрутизации почты, открытие сеанса ssh-связи с этим доменом приводит к поиску информации об узле (на рис.2.6, например, это IP-адрес узла hp.com).

Домен может содержать несколько поддеревьев, которые носят название поддоменов.[2]

Самый простой способ выяснить, является ли домен поддоменом другого домена, - сравнить их доменные имена. Доменное имя поддомена заканчивается доменным именем родительского домена. К примеру, домен la.tyrell.com должен являться поддоменом домена tyrell.com, поскольку имя la.tyrell.com заканчивается именем tyrell.com. Этот домен является также поддоменом домена com, как и домен tyrell.com.

Внутренний узел дерева, связанный как с информацией  о конкретном узле сети
Рис.2.6 Внутренний узел дерева, связанный как с информацией о конкретном узле сети, так и с иерархической

Помимо относительных степеней в идентификации доменов в качестве входящих в другие домены, используется также уровневая классификация доменов. В списках рассылки и конференциях Usenet можно встретить термины домен высшего уровня и домен второго уровня. Эти термины просто определяют положение домена в пространстве доменных имен:

  • Домен высшего уровня в качестве непосредственного родителя имеет корневой домен.
  • Домен первого уровня в качестве непосредственного родителя также имеет корневой домен (то есть он является доменом высшего уровня).
  • Домен второго уровня в качестве непосредственного родителя имеет домен первого уровня и т.д.

Записи ресурсов

Информация, связанная с доменными именами содержится в записях ресурсов (RRs, resource records).[3] Записи разделяются на классы, каждый из которых определяет тип сети или программного обеспечения. В настоящее время существуют классы для интернет-сетей (на основе семейства протоколов TCP/IP), сетей на основе протоколов Chaosnet, а также сетей, которые построены на основе программного обеспечения Hesiod. (Chaosnet - старая сеть, имеющая преимущественно историческое значение).

Популярность класса интернет-сетей значительно превосходит популярность остальных классов. (Мы не уверены, что где-то до сих пор используется класс Chaosnet, а использование класса Hesiod в основном ограничивается пределами Массачусетского технологического института - MIT). В этой книге мы сосредоточимся на классе интернет-сетей.

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

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


[1]Понятно, что это дерево компьютерщика, а не ботаника
[2]Термины домен и поддомен в документации по DNS часто взаимозаменяемы. В этой книге термин «поддомен» используется как относительный: домен является поддоменом другого домена, если корень поддомена принадлежит включающему домену.
[3]В дальнейшем употребляется выражение RR-запись, или просто RR. - Примеч. ред.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.