DNS (Domain Name System)

Система доменных имён.

DNS HOWTO

RFC 1034 (DOMAIN NAMES - CONCEPTS AND FACILITIES)
RFC 1035 (DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION)
основные термины

Книги:
DNS и BIND (4-е издание, 2002 год, PDF)

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

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


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

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

Если метка корневого узла должна быть отображена в доменном имени, она записывается как символ точки, например, так: «www.oreilly.com.». (На самом деле имя заканчивается точкой-разделителем и пустой меткой корневого узла.) Сама по себе метка корневого узла записывается исключительно из соображений удобства, как самостоятельная точка (.)• Как следствие, некоторые программы интерпретируют имена доменов, заканчивающиеся точкой, как абсолютные. Абсолютное доменное имя записывается относительно корня и однозначно определяет расположение узла в иерархии. Абсолютное доменное имя известно также под названием полного доменного имени, обозначаемого аббревиатурой FQDN (fully qualified domain name). Имена без завершающей точки иногда интерпретируются относительно некоторого доменного имени (не обязательно корневого) точно так же, как имена каталогов, не начинающиеся с символа «/» (слэш), часто интерпретируются относительно текущего каталога.

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


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

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

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


Делегирование

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

Аналогичным образом организация, сопровождающая домен, может разделить его на несколько поддоменов, каждый из которых может быть делегирован какой-либо другой организации. Организация, получившая домен таким путем, несет ответственность за работу с данными этого поддомена. Она может свободно изменять эти данные, разделять поддомен на несколько более мелких поддоменов, а те, в свою очередь, снова делегировать. Родительский домен сохраняет только указатели на источники данных для поддоменов, в целях перенаправления запросов по соответствующим адресам. К примеру, домен stanford.edu, делегирован тем ребятам в Стэнфорде, которые управляют ниверситетскими сетями.



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


Разновидности DNS-серверов

Спецификация DNS определяет два типа DNS-серверов: первичный мастер-сервер (primary master) и дополнительный, или вторичный мастер-сервер (secondary master). Первичный мастер-сервер производит загрузку данных для зоны из файла на машине-сервере. Вторичный мастер-сервер получает данные зоны от другого DNS-сервера, который является авторитативным для этой зоны и называется его мастером (master server). Довольно часто мастер-сервер является первичным мастером для зоны, но не обязательно: вторичный мастер-сервер может получать зональные данные и от другого вторичного. Когда запускается вторичный сервер, он устанавливает связь с мастером и, в случае необходимости, получает зональные данные. Этот процесс называется передачей, или трансфером зоны (zone transfer). В наше время предпочтительным термином для вторичного мастер-сервера имен является slave (подчиненный, ведомый), хотя многие люди (и многие программы, в частности, Microsoft DNS Manager) все еще пользуются прежним термином.


рекурсия
время жизни
syslog