Флёнов Михаил Евгеньевич
Шрифт:
Внедрение DNS выявило еще одно преимущество этой системы — под одним и тем же IP-адресом может скрываться несколько узлов. Например, хостинговые компании на одном сервере могут содержать несколько сайтов.
Сервер DNS — это большая база данных, в которой хранятся сведения о соответствии имен узлов и IP-адресов. Самое главное, что эта информация децентрализована, и в Интернете существуют тысячи таких серверов.
База данных имеет иерархическую структуру, вершиной которой является точка ".". Это наподобие знака "/" в файловой системе Linux, обозначающего корневую директорию. На первом уровне идут домены типа COM, ORG, NET, GOV, RU, DE и т.д. Ниже находятся имена доменов второго уровня. Пример описанной структуры приведен на рис. 11.1.
Рис. 11.1. Иерархия доменов
Допустим, что нужно найти IP-адрес сервера www.cydsoft.com. Имя разбирается справа налево. Сначала направляется запрос к корневому DNS-серверу, который должен указать, кто обслуживает домен com. Затем на найденном сервере по запросу осуществляется поиск домена с именем cydsoft. Если такой найден, то мы получим адрес DNS-сервера, который обслуживает cydsoft.com. И уже ему направляется запрос на получение адреса домена www.cydsoft.com. Результатом будет IP-адрес сервера/компьютера, которому присвоено имя www.cydsoft.com.
Все эти действия происходят прозрачно для конечного пользователя, и когда вы набираете в браузере адрес, то никогда не увидите всех этих тонкостей. О том, что идет поиск IP-адреса по имени, можно узнать только по подсказке, которая высвечивается в строке состояния обозревателя.
В сети есть достаточно много кэширующих серверов, в принципе, выполняющих свои функции автоматически. Достаточно только его установить, сделать основные настройки и запустить. Кэширующие серверы обмениваются между собой информацией и позволяют найти любой адрес на ближайшем узле, не обращаясь к основной базе данных. Например, у вашего интернет-провайдера может быть свой DNS-сервер. Когда вы обращаетесь на какой-нибудь символьный адрес, то запрос сначала идет на сервер провайдера, затем по цепочке передается другому серверу, и так до тех пор, пока нужная запись с IP-адресом не будет найдена, если, конечно же, имя указано верно. Таким образом, адрес запрашиваемого имени может быть получен от ближайшего DNS-сервера, в кэше которого сохранилась необходимая информация.
Серверы DNS могут и, наоборот, по IP-адресу сказать нам его символьный адрес. В этом случае IP тоже переворачивается. Например, если нужно узнать имя сервера 190.1.15.77, то в запросе к DNS будет виден адрес 77.15.1.190 и добавлен суффикс in-addr.arpa. Результат:
11.2. Локальный hosts
Мы уже знаем, что изначально для сопоставления имен и адресов использовался файл /etc/hosts. Это текстовый файл с записями типа:
Каждая строка — это соответствие IP-адреса его имени. По умолчанию в файле будет всего две строки. Первая — это петля. Напоминаю, что во всех компьютерах имя
Во второй записи устанавливается соответствие между заданным для вашего сетевого интерфейса IP-адреса и символьным именем. В данном случае моей сетевой карте присвоен адрес 192.168.77.1, а ему соответствует имя FlenovM. Это значит, что при выполнении команды ping можно указывать или IP- адрес, или имя компьютера. Следующие две команды идентичны:
При выполнении второй команды сначала происходит обращение к файлу /etc/hosts, который вернет программе адрес 192.168.77.1, и уже на него направится эхо-запрос.
А что будет использоваться для поиска адреса первым: файл /etc/hosts или DNS-база данных? Это зависит от настроек ОС.
Посмотрим на файл /etc/host.conf. В нем находится строка:
Директива
Адрес 209.132.177.50 действительно соответствует сайту www.redhat.com на момент написания книги, но может измениться.
Если сайт по каким-либо причинам перестал загружаться, то необходимо удалить соответствующую запись из файла hosts, и с помощью команды