TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Шрифт:
Глава 12
DNS
12.1 Введение
Часто конечный пользователь знает имя хоста, но не имеет понятия о его адресе. Но адрес нужно знать для взаимодействия с хостом, поэтому конечному пользователю или запущенному им приложению необходим способ получения адреса по имени хоста.
В небольшой изолированной сети такое преобразование выполняется через единую таблицу, а отдельные системы могут получать самые свежие сведения, копируя содержимое таблицы на свои жесткие диски.
В первые дни существования Интернета использовалась также централизованная
12.2 Назначение DNS
Система имен доменов (Domain Name System — DNS) обеспечивает более эффективный способ согласования имен и адресов Интернета. База данных DNS обеспечивает автоматизированную службу преобразования имен в адреса. Эта система успешно работает, и многие организации, даже не подключенные к Интернету, применяют DNS для обслуживания собственных внутренних имен компьютеров.
DNS является распределенной базой данных. Имена и адреса Интернета хранятся на множестве серверов по всему миру (ниже мы узнаем о хранении на этих же серверах важных сведений о маршрутизации электронной почты). Организация, владеющая именем домена (например, yale.edu), несет ответственность за обслуживание и работу с сервером имен, который выполняет трансляцию имен этого домена в адреса. Локальный обслуживающий персонал быстро отслеживает изменения, добавление или удаление сетевых узлов и согласует эти операции с первичным сервером (primary server) домена. Поскольку данные для трансляции имен в адреса очень важны, данная информация реплицируется на один или несколько вторичных серверов (secondary server).
12.3 Программное обеспечение BIND
Многие разработчики компьютеров предоставляют бесплатное программное обеспечение для сервера имен. Обычно оно является адаптацией пакета Berkeley Internet Domain (BIND) для конкретных условий. Периодически в Интернете появляются новые бесплатные версии пакета BIND.
Организации могут пользоваться бесплатным программным обеспечением для собственных служб трансляции имен в адреса. Но, если предполагается соединение с Интернетом, необходимо обеспечить не менее двух общедоступных серверов имен, которые станут частью единой системы имен доменов Интернета.
12.4 Определители
Клиентская программа для просмотра информации DNS является стандартной частью любого продукта TCP/IP и называется определителем (resolver). Обычно определитель работает в фоновом режиме, и пользователь даже не замечает его присутствия. В приведенном ниже примере пользователь запрашивает соединение по telnet с системой minnie.jvhc.net. Пользовательское приложение telnet запрашивает локальную программу-определитель об IP-адресе для указанного сайта:
При установке TCP/IP на хосте, используемом для просмотра базы данных имен доменов, в конфигурационную информацию этого хоста нужно включить сведения об IP-адресах одной или нескольких систем DNS. Программа-определитель должна знать адреса DNS, к которым она будет обращаться.
Примером может служить система tigger, используемая провайдером Global Enterprise System в качестве сервера электронной почты, сетевых новостей и сервера telnet. Как и большинство систем Unix, tigger имеет конфигурационный файл /etc/resolv.conf, в котором указаны локальные имена доменов и IP-адреса двух серверов имен доменов для данного домена.
Настольным системам TCP/IP также требуется информация DNS. Как показано на рис. 12.1, программный пакет Chameleon для Microsoft Windows предоставляет раскрывающееся меню, в которое вводят сведения об IP-адресах серверов имен доменов.
Рис. 12.1. Конфигурирование DNS
12.5 Просмотр адресов хостов
Как мы уже знаем, многие системы предоставляют интерактивные программы-определители, дающие возможность пользователям напрямую обращаться к серверам DNS, посылая к ним запросы и получая ответы. Приведем пример работы с программой-определителем nslookup для Unix:
1. Сразу после ввода пользователем имени программы локальный сервер по умолчанию идентифицирует себя, выводя собственное имя и адрес. В нашем примере именем будет r2d2.jvnc.net, а адресом — 128.121.50.2.
2. Пользователь вводит имя хоста, адрес которого нужно узнать.
3. Запрос отправляется на сервер.
4. После каждого запроса сервер (r2d2) идентифицирует себя и выводит ответ.
5. Если пользователь запрашивает локальную информацию, то сервер извлекает ответ из собственной базы данных.
6. Если пользователю требуются сведения о внешнем хосте, сервер сначала проверяет их наличие в собственном кеше (хранящем данные о последних запросах пользователей) и извлекает их (если они есть) либо (если их нет) взаимодействует с удаленным авторитетным сервером для получения ответа из его базы данных.
7. Ответ от удаленного авторитетного сервера сохраняется в дисковом кеше локального сервера для будущего использования и пересылается пользователю, запросившему этот ответ.
Каждый этап диалога с программой разъясняется комментариями в правой части страницы. Отметим, что ответ, извлеченный из кеша сервера, маркируется как неавторитетный.