#матчасть



DNS. Часть 3. Иерархия DNS-серверов.



В продолжение первой и второй части.



Мой DNS-сервер знает все доменные имена в Интернете?

Нет, все он не знает. Это была бы слишком большая база данных. К тому же, имена и адреса различных ресурсов в Интернете могут меняться и добавляться новые. Для эффективной работы со всем этим обилием информации требуется распределённая система: в Интернете существует множество DNS-серверов, которые при необходимости обмениваются информацией друг с другом.



За каждый домен имён отвечает свой DNS-сервер (на сленге — сервер держит доменную зону). Это значит, что на этом сервере прописаны все имена доменов на уровень ниже (т.е. более длинные имена) и соответствующие им IP-адреса. Также на этом сервере прописаны адреса DNS-серверов, которые отвечают, в свою очередь, за эти домены нижнего уровня. Благодаря этому выстраивается структура, когда каждый DNS-сервер знает IP-адреса для всех "своих" имён, а для "чужих" — знает, куда перенаправить запрос. Корневую зону обслуживают т.н. корневые DNS-серверы. Для надёжности их 13 штук (плюс более 100 копий по всему миру), и их адреса по стандарту протокола DNS известны каждому DNS-серверу. Таким образом, даже если наш DNS-сервер не знает какого-то имени сам, он всегда может "добраться" до того сервера, который это имя знает, опрашивая по цепочке другие DNS-сервера, начав в корневых.



Для наглядности разберём пример.

Предположим, DNS-сервер получил запрос на разрешение имени www.vasya.pupkin.ru. Это имя ему неизвестно, и наш сервер поступает следующим образом:



1️⃣ Справшивает у Корневого сервера: знаешь, где это имя?

Получает ответ: не знаю, но Сервер 1 (IP-адрес такой-то), отвечает за домен "ru".

2️⃣ Справшивает у Сервера 1: знаешь, где это имя?

Получает ответ: не знаю, но Сервер 2, отвечает за домен "pupkin".

3️⃣ Справшивает у Сервера 2: знаешь, где это имя?

Получает ответ: не знаю, но Сервер 3, отвечает за домен "vasya".

4️⃣ Справшивает у Сервера 3: знаешь, где это имя?

Получает ответ: знаю, вот его IP-адрес.



На практике после получения адреса для искомого имени наш DNS-сервер будет хранить эту информацию у себя определённое время. И если кто-то вновь спросит его об этом имени, он не будет заново раскручивать всю цепочку, начиная с корня, а сразу даст ответ. Это называется кэширование, и благодаря ему снижается нагрузка на DNS-серверы и соединяющие их сети.



Но навсегда кэшированную информацию сервер у себя не сохраняет, как можно было бы подумать. Во-первых, это лишняя нагрузка на его ресурсы, а во-вторых, через некоторое время сохранённая пара "имя-адрес" может стать неактуальной (адрес изменится, или имя удалят), и узнать об этом можно будет, только пройдя всю цепочку запросов заново. А пока адрес закэширован, наш сервер новых запросов по этому имени делать не будет. И для сохранения актуальности данных, периодически сервер "забывает" накопленную информацию о "чужих" именах (имён своего домена это не касается).



Мой домен — мои имена

Вся система DNS-серверов имеет распределённую структуру. Т.е. нет какого-то одного центра, управляющего всеми серверами. Наоборот, когда вы хотите создать свой домен, вы регистрируете новое имя в домене верхнего уровня (за денюжку, как правило) и создаёте свой DNS-сервер, который и будет обслуживать этот новый домен (или покупаете эту услугу в специальном сервисе, но суть не меняется, этот сервис создаёт новый DNS-сервер у себя).

Таким образом достигается гибкость в управлении системой доменных имён — каждый участник системы волен создавать или изменять имена (и соответствующие им IP-адреса) внутри своего домена, независимо от других. Но при этом существует механизм, с помощью которого любой участник может получить актуальную информацию об именах из любого другого домена.

Это позволяет не использовать какую-то централизованную базу данных для доменных имён (она была бы слишком большой, неповоротливой и уязвимой).



На этом мы заканчиваем цикл публикаций о DNS. Надеюсь, каждый из читателей смог получить о системе доменных имён информацию той глубины, какая ему комфортна.



@digitaltea | про IT доступно