Система доменных имен (Domain name system, DNS)
Система доменных имен (Domain name system, DNS) – это распределенная база данных, которая по запросу, содержащему доменное имя, может сообщить IP-адрес хоста (компьютера или иного сетевого устройства). Возможно и обратное, когда по IP-адресу определяется доменное имя.
Система DNS является иерархической и распределенной. Не существует единой базы данных, хранящей информацию о всех именах и соответствующих им IP-адресах. Напротив, DNS – это миллионы баз данных, каждая из которых содержит информацию о конкретном доменном имени. Для обеспечения надежности и избыточности корневые серверы распределены по сети Интернет (в основном по географическому принципу).
Каждое доменное имя (например, cctld.ru), строится в обратном порядке, начиная с корневой зоны, причем суффикс доменного имени – .RU, .COM, .ORG, .NET и т.д. – определяет верхний уровень иерархии, непосредственно после точки (.), обозначающей корневую зону. После каждого из суффиксов (которые обычно называют доменами верхнего уровня – top-level domains или TLD) следуют доменные имена, определяемые не корневыми серверами, а отдельными хостами DNS в сети Интернет.
При запросе трансляция доменного имени cctld.ru и соответствующего ему IP-адреса будет происходить в несколько этапов. Сначала будут запрошены серверы, обслуживающие корневую зону. Эти серверы ничего не знают о существовании доменного имени cctld.ru, но они сообщат, как можно связаться с серверами, обслуживающими доменное имя верхнего уровня - .ru. От них мы узнаем адреса серверов доменного имени cctld.ru, которые и ответят на запрос о IP-адресе сервера cctld.ru. Такая архитектура DNS позволяет распределить нагрузку и ответственность за работу системы между администраторами отдельных доменов.
Аббревиатура DNS обозначает сопряжённые понятия: доменную систему имён (Domain Name System) и сервис доменных имён (Domain Name Service). Первое из этих понятий, - система имён, - относится к области хранения информации в глобальной распределённой базе данных. Второе, - сервис, - это технологии, позволяющие находить в этой безе данных нужную информацию. Система хранения - бесполезна без механизма извлечения данных, а механизм извлечения, в свою очередь, не пригоден для практического применения, если данные извлекать неоткуда.
Рассмотрим, прежде всего, систему доменных имён. DNS - это база данных, в которой хранятся пары "ключ - значение". Это означает, что каждой "единице хранения" в базе данных сопоставлено некоторое имя (или индекс, не так важно), это имя называется ключом. Чтобы извлечь "единицу хранения" - необходимо знать ключ, база данных принимает только запросы вида "вот ключ - найдите соответствующую запись". Наиболее часто используется пара "доменное имя - IP-адрес", в которой ключом служит доменное имя - текстовая строка, обычно представляющая собой понятное для человека сочетание символов. Например, пара "test.ru - 192.168.11.17" означает, что ключу test.ru соответствует адрес 192.168.11.17, и если отправить в DNS правильно подготовленный запрос с ключом test.ru, то можно узнать IP-адрес для этого имени. Несмотря на то, что работа с парами "доменное имя - IP-адрес" является чрезвычайно распространённым, классическим применением DNS, необходимо помнить, что сама эта система сейчас значительно шире: она позволяет хранить данные других типов.
Так как DNS - сложная, распределённая система, для извлечения данных необходим специальный сервис поиска. Этот сервис, получив на вход ключ, осуществляет просмотр базы данных DNS и пытается найти соответствующее ключу значение: данный процесс называется (рекурсивным) опросом DNS. Если значение удалось обнаружить, то сервис вернёт его запросившему. Другими словами, сервис доменных имён предоставляет простой интерфейс "запрос-ответ", позволяющий находить нужные значения.
Представьте себе огромную библиотеку, где каждой книге соответствует индекс - уникальное обозначение. Тогда этот индекс будет ключом, а книга - значением, которое можно быстро найти по индексу. Библиотека роботизирована. Вы называете роботу-библиотекарю индекс, он разыскивает и приносит вам соответствующую книгу. Эта воображаемая библиотека занимает множество зданий, а книги распределены между ними в соответствии с некоторыми правилами записи индекса. Всё это вместе - неплохая аналогия для DNS, и как системы, и как сервиса.
Система доменных имён - одна из древнейших систем в интернете. Она появилась в 80-х годах прошлого века как инструмент удобной записи адресов электронной почты: ни веба, ни разнообразных "мобильных приложений" и "мессенджеров" тогда ещё не существовало. DNS остаётся фундаментальной технологией, без неё глобальная Сеть, в нынешнем виде, невозможна, так как эта система не только позволяет пользователям находить сайты по символьным именам, и, как несколько десятков лет назад, принимать сообщения электронной почты, но и реализует массу сервисных функций, обеспечивающих глобальный обмен информацией.