Книга: Linux глазами хакера

11.1. Введение в DNS

11.1. Введение в DNS

В первое время преобразование IP-адресов в имена происходило с помощью простого текстового файла, по которому и проводилось сопоставление параметров. В Linux за это отвечает файл /etc/hosts. Несмотря на его слабости и неудобства в сопровождении, в малых сетях возможностей такого файла достаточно.

С расширением сети понадобился новый способ хранения соответствий. На смену файлам пришла доменная система имен (DNS, Domain Name System), предназначенная для преобразования символьного имени в IP-адрес и наоборот. Ее преимущества могут проявляться не только в Интернете, но и в локальных сетях с достаточно большим количеством компьютеров.

Внедрение 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. Результат: 77.15.1.190.in-addr.arpa.

Оглавление книги


Генерация: 1.350. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз