Как мы видели, существуют два принципиально разных способа идентификации хостов: с помощью имен и с помощью IP-адресов. Имя хоста удобно для людей в силу своей мнемоничности, а IP-адрес, являющийся компактной числовой величиной фиксированного размера, проще обрабатывать маршрутизаторами. Для того чтобы установить связь между этими двумя идентификаторами, используется система доменных имен (Domain Name System, DNS).
DNS представляет собой, с одной стороны, базу данных, распределенную между иерархически структурированными серверами имей, и, с другой стороны, протокол прикладного уровня, организующий взаимодействие между хостами и серверами имен для выполнения операций преобразования. Зачастую серверы имен являются UNIX-машинами, использующими программное обеспечение BIND (Berkeley Internet Name Domain — домен имен Интернета Беркли). Протоколу DNS назначен порт с номером 53, и работает DNS поверх протокола UDP транспортного уровня.
Обычно DNS используется другими протоколами прикладного уровня: HTTP, SMTP и FTP для получения IP-адресов вместо вводимых пользователями имен хостов. Рассмотрим, к примеру, ситуацию, когда пользователь вводит в адресной строке браузера адрес web-страницы www. someschool. edu/index. html. Для того чтобы сформировать запрос, пользовательский хост должен сначала получить IP-адрес удаленного хоста, на котором находится ресурс, то есть www. someschool. edu.
При работе протокола DNS пользовательский хост играет роль клиента. Браузер выделяет из URL-адреса страницы имя хоста и передает его клиентской стороне DNS-приложения, которая формирует и отправляет запрос DNS-серверу. DNS-сервер обрабатывает запрос и отсылает клиенту ответ, содержащий IP-адрес хоста. Затем браузер открывает TCP-соединение с HTTP-сервером, выполняющимся на хосте с полученным IP-адресом. Очевидно, что процесс получения IP-адреса не является мгновенным и вносит дополнительную задержку в суммарное время установления соединения с HTTP-сервером, которая иногда может быть весьма значительной. Как мы увидим позже, среднее время получения IP-адреса (а также объем DNS-трафика) может быть уменьшено путем кэширования IP-адреса на «ближайшем» DNS-сервере.
Помимо преобразования имен хостов в IP-адреса, DNS выполняет еще несколько важных функций, перечисленных ниже.
□ Поддержка псевдонимов серверов. Хосты с длинными именами могут иметь один или несколько псевдонимов; например, хосту relayl. west-coast. можно присвоить два псевдонима — и www. . В этом случае говорят, что relayl. west-coast. является каноническим именем хоста. Обычно введение псевдонимов вызывается недостаточной мнемо-ничностью канонического имени. Получение канонического имени хоста по заданному псевдониму, как и IP-адреса, выполняется с помощью протокола DNS.
□ Поддержка псевдонимов почтовых серверов. Очевидно, что мнемоничность особенно важна для адресов электронных почтовых ящиков. Например, если Боб использует почтовый ящик компании Hotmail, то его адрес будет иметь вид *****@***com, что нетрудно запомнить. На самом деле является лишь псевдонимом почтового сервера Боба, в то время как каноническое имя имеет гораздо более сложную структуру, например relayl. west-coast. . Приложение электронной почты с помощью протокола DNS по заданному псевдониму получает каноническое имя и IP-адрес сервера. Фактически запись типа MX (см. ниже) позволяет почтовому серверу компании и ее web-серверу иметь одинаковые псевдонимы, например .
□ Распределение загрузки. В последнее время DNS все больше используется для распределения загрузки между дублирующими серверами. Популярные сайты, например , зачастую имеют несколько копий (или реплик, или зеркал), расположенных на различных серверах с различными IP-адресами. Таким образом, в случае дублирующих серверов с одним именем хоста связывается множество IP-адресов, которые хранятся в базе данных DNS. Когда производится DNS-запрос для имени, которому сопоставлено несколько IP-адресов, в ответ включаются все IP-адреса, однако сервер может изменять порядок их перечисления. Поскольку обычно HTTP-клиент сначала формирует запрос с использованием IP-адреса, который был указан в списке первым, это позволяет распределять загрузку между дублирующими серверами. Подобный механизм применим как для web-серверов, так и для почтовых серверов, то есть несколько почтовых серверов могут иметь один и тот же псевдоним
2. Общие принципы функционирования DNS
Ниже мы опишем основную схему функционирования DNS. Основным предметом рассмотрения для нас будет являться преобразование имени хоста в соответствующий IP-адрес.
Предположим, что некоторому приложению (web-браузеру или программе чтения электронной почты), выполняющемуся на хосте пользователя, необходимо получить IP-адрес удаленного хоста. Приложение вызывает клиентскую сторону DNS и передает ей имя нужного хоста. (Многие UNIX-машины поддерживают функцию gethostbyname(), вызываемую приложениями для получения IP-адреса. В разделе «Программирование UDP-сокетов» этой главы мы покажем, каким образом Java-приложение может обратиться к службе DNS.) Клиентская сторона, в свою очередь, создает запрос, отсылает его DNS-серверу и ждет ответа. Как правило, время ответа DNS-сервера составляет от нескольких миллисекунд до десятков секунд. Ответ представляет собой сообщение, содержащее группу из одного или нескольких IP-адресов, которые передаются DNS-клиентом вызвавшему его приложению. Таким образом, с точки зрения приложения служба DNS является «черным ящиком», на входе которого находится имя удаленного хоста, а на выходе — его IP-адрес. На самом деле этот «черный ящик» представляет собой сложную систему, состоящую из множества серверов имен, распределенных по всему земному шару, и протокола, определяющего взаимодействие между серверами имен и пользовательскими хостами.
Как устроена служба DNS? Ее можно представить себе в виде единственного центрального сервера имен, который содержит всю информацию об именах хостов и их IP-адресах. Этот сервер принимает все запросы и отсылает ответы «без посредников» напрямую каждому DNS-клиенту. К сожалению, огромное (и постоянно растущее) число Интернет-хостов не позволяет применить эту простую схему на практике. Централизованной системе присущи некоторые «врожденные» недостатки.
□ Единственная точка возможного отказа. Сервер имен является «узким местом» с точки зрения надежности — его отказ парализует работу всего Интернета.
□ Объем трафика. Сервер имен является «узким местом» с точки зрения загрузки, поскольку вынужден обрабатывать все запросы, поступающие с сотен миллионов хостов всего мира.
□ Удаленность централизованной базы данных. Единственный сервер невозможно расположить на приемлемом расстоянии от всех клиентов. Например, разместив сервер в Нью-Йорке, мы обеспечим хосты Австралии гарантированными задержками, связанными с передачей сигнала по линиям связи, далеко не всегда высокоскоростным.
□ Обслуживание. База данных сервера должна не только хранить адреса всех существующих хостов, но и постоянно обновляться с появлением новых хостов. Это влечет за собой проблемы, связанные с авторизацией и идентификацией каждого пользователя сети, пытающегося внести данные о своем хосте в центральную базу данных. Таким образом, создание единственного сервера имен с централизованной базой данных оказывается невозможным, что обусловливает распределенную структуру DNS. DNS является замечательным примером того, как в Интернете может быть организована распределенная база данных.
Для того чтобы решить проблему хранения больших объемов информации, система DNS была спроектирована в виде совокупности многочисленных серверов имен, рассредоточенных по всему миру и организованных в виде иерархической структуры. Ни один сервер имен не содержит информации обо всех IP-адресах хостов; эта информация распределена между множеством серверов. Можно ввести следующую укрупненную классификацию серверов имен: локальные, корневые и полномочные. Ниже описаны механизмы взаимодействия этих серверов друг с другом и с пользовательскими хостами.
□ Локальные серверы имен имеются у каждого Интернет-провайдера (локальные серверы имен также называют серверами имен по умолчанию). Когда пользовательский хост посылает DNS-запрос, этот запрос сначала попадает на локальный сервер имен. Обычно IP-адрес локального сервера имен конфигурируется пользователем вручную, например, в операционной системе Windows для этого необходимо открыть Панель управления (Control Panel), щелкнуть на значке Сеть (Network), в списке установленных компонентов открывшегося окна выделить пункт TCP/IP и, щелкнув на кнопке Свойства (Properties), в появившемся диалоговом окне перейти на вкладку Конфигурация DNS (DNS Configuration). Обычно локальный сервер имен расположен на относительно небольшом расстоянии от пользовательского хоста. В случае, если Интернет-провайдером является государственное или коммерческое учреждение, сервер имен принадлежит локальной сети организации; для резидентных Интернет-провайдеров сервер имен обычно отделен от пользователя не более чем несколькими маршрутизаторами. Если окажется, что удаленный хост принадлежит тому же Интернет-провайдеру, локальный сервер самостоятельно проведет преобразование, и требуемый IP-адрес будет отослан пользовательскому хосту. Подобная ситуация, например, будет иметь место, когда хост surf. eurecom. fr затребует IP-адрес baie. eurecom. fr. В этом случае IP-адрес выдается локальным сервером имен института Eurecom.

Рис. 5.1 Корневые серверы DNSв начале 2002 года (имя, орагнизация, расположение)
□ Корневые серверы имен являются следующей ступенью в иерархии серверов DNS. Их число в Интернете составляет немногим более десятка, и большинство из них находится в Северной Америке. Рисунок 5.1 иллюстрирует положение корневых серверов имен на географической карте мира в феврале 2002 года. В случае, если локальный сервер имен не может самостоятельно удовлетворить запрос пользовательского хоста, он берет на себя роль клиента и передает запрос одному из корневых серверов имен. Корневой сервер обрабатывает запрос и при наличии соответствующей записи в базе данных отсылает локальному серверу ответ, содержащий IP-адрес, который, в свою очередь, передается локальным сервером пользовательскому хосту. Тем не менее корневой сервер имен не всегда может выполнить запрос из-за ограниченности своей базы данных. В случае, если хост не найден в базе данных, локальному серверу отсылается IP-адрес полномочного сервера имен, который располагает искомым IP-адресом.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |


