Вот задали вопрос....
Отвечаю статьёй, с
Если посмотреть большинство более-менее популярных статей об устройстве Интернета, то про DNS там чаще всего будет сказано что-то типа "DNS-сервер обеспечивает трансляцию имен сайтов в IP адреса". В принципе, это действительно является его основной задачей, и для большинства пользователей (и даже компьютерщиков) этих знаний вполне достаточно. Но если вдруг вам придется отлаживать сеть, которой провайдер выделил какой-то блок «честных» адресов, или поднимать в локальной сети свой DNS-сервер, то очень быстро всплывут всякие страшные слова: «зона», «трансфер», «форвардер», "in-addr.arpa" и другие... Поэтому в этой заметке мы попробуем чуть более подробно поговорить о работе DNS.
Очень приблизительно можно сказать, что у каждого компьютера в Интернете есть два основных идентификатора: доменное имя (например, wwwlistsoft.ru) и IP-адрес (например, 127.0.0.1). Приблизительность заключается в том, что, во-первых, IP-адресов у компьютера может быть несколько (мало того, что у каждого интерфейса свой адрес, так еще и несколько адресов могут «висеть» на одном интерфейсе); во-вторых, имен тоже может быть несколько, причем они могут связываться как с одним, так и с несколькими IP-адресами; в-третьих, у компьютера может и не быть доменного имени... Словом, ясно, что картина уже начинает запутываться.
Основной задачей DNS-сервера является трансляция доменных имен в IP-адреса и обратноКак было сказано выше, основной задачей DNS-сервера является трансляция доменных имен в IP адреса и обратно. На заре становления Интернета (когда он еще был ARPANET'ом) это решалось ведением длинных списков, включающих все компьютеры сети, причем копия такого списка должна была присутствовать на каждом компьютере. Понятно, что с ростом сети эта технология перестала удовлетворять кого бы то ни было — ведь эти файлы надо было еще и синхронизировать, не говоря уж об их размере... Некоторые «пережитки» этого метода можно обнаружить и сейчас: существует файл HOSTS (и в UNIX, и в Windows), в котором можно прописывать адреса серверов, с которыми вы регулярно работаете (кстати, именно его использование лежит в основе многих «ускорителей Интернета» — такие программы просто записывают адреса серверов, к которым вы обращаетесь, в файл HOSTS и при следующем обращении берут данные из него, не тратя время на запрос к DNS-серверу).
На смену «однофайловой» схеме пришел DNS — иерархическая структура имен. Существует «корень дерева» с именем "." (точка). Так как корень един для всех доменов, то точка в конце имени обычно не ставится (но она используется в описаниях DNS — тут надо быть очень внимательным!). Ниже корня лежат домены первого уровня. Их немного — com, net, edu, org, mil, int, biz, info, gov (есть еще несколько) и домены государств, например, ru. Еще ниже находятся домены второго уровня, например, listsoft.ru. Еще ниже — третьего и т.д.
DNS-сервер работает как хороший компьютерщик: он всегда либо знает ответ, либо знает у кого спросить...Иерархичность DNS-серверов — штука довольно интересная, если проследить прохождение запроса. При установке (точнее, при настройке) клиенту указывается как минимум один DNS-сервер (как правило, их два) — его адрес выдается провайдером. Клиент посылает запрос этому серверу. Сервер, получив запрос, либо отвечает (если ответ ему известен), либо пересылает запрос на «вышестоящий» сервер (если он известен) или на корневой (каждому DNS-серверу известны адреса корневых DNS-серверов). Так выглядит «восходящая иерархия». Затем запрос начинает спускаться вниз — корневой сервер пересылает запрос серверу первого уровня, тот — серверу второго уровня и т.д. Таким образом, каждый DNS-сервер работает как хороший компьютерщик: он всегда либо знает ответ, либо знает, у кого спросить...
Помимо «вертикальных связей», у серверов есть еще и «горизонтальные» отношения — "первичный — вторичный". Действительно, если предположить, что сервер, обслуживающий какой-то домен и работающий «без страховки» вдруг перестанет быть доступным, то все машины, расположенные в этом домене, окажутся недоступны! Именно поэтому при регистрации домена второго уровня выдвигается требование указать минимум два сервера DNS, которые будут этот домен обслуживать.
Рекурсивные сервера удобно использовать в локальных сетяхDNS-сервера бывают рекурсивные и нерекурсивные. Первые всегда возвращают клиенту ответ — они самостоятельно отслеживают отсылки к другим DNS-серверам и опрашивают их. Нерекурсивные сервера возвращают клиенту эти отсылки, так что клиент должен самостоятельно опрашивать указанный сервер. Рекурсивные сервера удобно использовать на низких уровнях, в частности, в локальных сетях. Дело в том, что они кэшируют все промежуточные ответы, и при последующих запросах ответы будут возвращаться намного быстрее. Нерекурсивные сервера обычно стоят на верхних ступенях иерархии — поскольку они получают очень много запросов, то для кэширования ответов никаких ресурсов не хватит.
Использование «пересыльщиков» ускоряет разрешение именПолезным свойством DNS является умение использовать «пересыльщиков» (forwarders). «Честный» DNS-сервер самостоятельно опрашивает другие сервера и находит нужный ответ, но если ваша сеть подключена к Интернету по медленной (например, dial-up) линии, то этот процесс может занимать довольно много времени. Вместо этого можно перенаправлять все запросы, скажем, на сервер провайдера, а затем принимать его ответ. Использование «пересыльщиков» может оказаться интересным и для больших компаний с несколькими сетями: в каждой сети можно поставить относительно слабый DNS-сервер, указав в качестве «пересыльщика» более мощную машину, подключенную по быстрой линии. При этом все ответы будут кэшироваться на этом мощном сервере, что ускорит разрешение имен для целой сети.
Для каждого домена администратор ведет базу данных DNS. Эта база данных представляет собой набор простых текстовых файлов, расположенных на основном (первичном) сервере DNS (вторичные сервера периодически копируют к себе эти файлы). В файлах конфигурации сервера указывается, в каком именно файле содержатся описания каких зон, и является ли сервер первичным или вторичным для этой зоны.
Элементы базы DNS часто называют RR (сокращение от Resource Record). Базовый формат записи выглядит так: