Служба доменных имен
Широковещательный способ установления соответствия между символьными именами и локальными адресами хорошо работает только в небольшой локальной сети, не разделенной на подсети. В стеке ТСР/ IP применяется доменная (выделенное множество объектов) система имен, которая имеет иерархическую древовидную структуру, допускающую использование в имени произвольного качества составных частей (рис. 39). Совокупность имен, у которых несколько старших составных частей совпадает, образует домен имен. Соответствие между доменными именами и IP-адресами может устанавливаться как средствами локального хоста, так и средствами централизованной службы. По мере роста Интернета файлы hosts также росли, и создание масштабируемого разрешения имен нашло свое решение в создании социальной службы – системы доменных имен (Domain Name System – DNS). DNS – это централизованная служба, основанная на распределенной базе отображений «доменное имя – IP-адрес». Служба DNS использует в своей работе протокол типа «клиент-сервер». В нем определены DNS-серверы и DNS-клиенты. DNS-серверы поддерживают распределенную базу отображений, а DNS-клиенты обращаются к серверам с запросами о разрешении доменного имени в IP-адрес. В доменной системе адресации DNS каждый корреспондент получает сетевой адрес, включающий две составляющие: идентификатор пользователя (userid) и идентификатор узла (nodeid). Идентификатор «userid» является уникальным для узла сети. Идентификатор «nodeid» представляет собой текстовую строку, состоящую из доменов, разделяемых точками. В системе DNS ключевым является понятие «полностью определенное имя домена» – это имя домена, которое включает все домены более высокого уровня и образует полное, целое имя. Структуру DNS (Domain Name System – служба доменных имен) можно представить в виде дерева, каждый узел которого имеет свое название (метку) (рис. 39). Рис. 39. Пространство доменных имен Для каждого конкретного узла «полностью определенное имя домена» будет состоять из его имени и имени всех узлов, связывающих его с корнем дерева, причем корневой домен всегда нулевой. Существуют две основные схемы разрешения DNS-имен. В первом варианте работу по поиску IP-адреса координирует DNS-клиент. 1. DNS-клиент обращается к корневому DNS-серверу с указанием полного доменного имени. 2. DNS-сервер отвечает, указывая адрес следующего DNS-сервера, обслуживающего домен верхнего уровня, заданный в старшей части запрошенного имени. 3. DNS-клиент делает запрос следующего DNS-сервера, который отсылает его к DNS-серверу нужного поддомена, и т. д., пока не будет найдет DNS-сервер, в котором хранится соответствие запрошенного имени IP-адресу. Этот сервер дает окончательный ответ клиенту. Такая схема взаимодействия называется нерекурсивной, когда клиент сам итеративно выполняет последовательность запросов к разным серверам имен. Но эта схема загружает клиента достаточно сложной работой, и применяется она редко. Во втором варианте реализуется рекурсивная процедура. 1. DNS-клиент запрашивает локальный DNS-сервер, то есть тот сервер, обслуживающий поддомен, к которому принадлежит имя клиента. 2. Если локальный DNS-сервер знает ответ, то он сразу же возвращает его клиенту; это может соответствовать случаю, когда запрошенное имя входит в тот же поддомен, что и имя клиента, а также случаю, когда сервер уже узнавал данное соответствие для другого клиента и сохранил его в своем кэше. 3. Если локальный сервер не знает ответа, то он выполняет итеративные запросы к корневому серверу и т. д. точно так же, как это делает клиент в первом варианте. Получив ответ, он передает его клиенту, который все это время просто ожидает его от своего локального DNS-сервера. Итерация – процесс повторения последовательности действий. В этой схеме клиент перепоручает работу своему серверу, поэтому схема называется косвенной, или рекурсивной. Практически все DNS-клиенты используют рекурсивную процедуру.
|