> For the complete documentation index, see [llms.txt](https://folko.gitbook.io/podgotovka-k-sobesedovaniyu/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://folko.gitbook.io/podgotovka-k-sobesedovaniyu/kommunikaciya/dns.md).

# DNS

Лучший пример из жизни - контакты на твоем смартфоне. Так, например, за контактом "**Инна Тиндер НЕ БРАТЬ**" скрываются вполне реальные цифры номер телефона, не так ли? Однако, когда мы ищем контакт, в поиск мы вводим не номер телефона, а имя абонента.

Примерно это же делает DNS сервер - он упрощает нашу жизнь. В альтернативной реальности где роботы захватили мир он не нужен, у них обычно нет проблем с запоминанием чисел.

#### Рассмотрим процесс полностью

Набрав адрес нашей IT базы знаний wiki.merionet.ru в браузере и нажав enter, вы не сразу попадаете на ДНС сервер.

Сначала ваш девайс проверит кэш браузера или операционной системы. Ведь если вы до этого посещали сайт, то запись о нем останется локально в кэше, чтобы в последующие разы не тратить время на поиск, гоняя туда-сюда пакеты. Если ты частый гость в нашей IT базе знаний, то так оно и работает.

А вот если сайт оказался новым, тогда мы шлем запрос так называемому resolver (распознающему) DNS серверу. Обычно этот сервер находится у нашего интернет провайдера, но мы можем поменять его на другой, например, использовать, известные сервера четыре восьмерки (8.8.8.8) и четыре единицы (1.1.1.1).

Он также делает сопоставление пришедшего имени сайта и его адреса в своем кэше. Если находит, то отвечает нам, а если не находит, то мы начинаем наш поход в поисках адреса и резолвер шлет запрос к корневому root серверу.

&#x20;[![Иерархия DNS](https://wiki.merionet.ru/images/dns-server-chto-eto-i-kak-rabotaet/1.jpg)](https://wiki.merionet.ru/images/dns-server-chto-eto-i-kak-rabotaet/1.jpg)

Это сервер, который находится на самом верху DNS иерархии. Можно сказать, Шао Кан во вселенной DNS. Важно сказать, что рут сервер не один, их множество.

Но этот сервер нам IP - адреса не скажет. Он лишь скажет нам к какому серверу обратиться дальше. Как регистратура, в поликлинике

Это нужно для разветвления поиска, чтобы не искать IP в общей куче, а уйти в нужную ветку. Находясь в книжном магазине, чтобы найти новый роман стивена кинга, явно нужно искать не в отделе детской литературы или кулинарии, так ведь?

А дальше нам нужно обратиться к нужному серверу верхнего уровня или TLD (top level domain) серверу. Домены верхнего уровня - это то что идет после последней точки **.com, .org, .ru, .net**. Кстати, существуют Generic Top Level Domain (gTLD), которые не привязаны к стране, например, .edu (образование), .**com** (коммерческие веб сайты), и ai (организации, связанные с искусственным интеллектом), а также есть Country Code Top Level Domain (ccTLD), которые привязаны к стране: .**ru** (Россия), .**us** (США) и .**uk** (Британия)

Получается: к root приходит запрос "Что скажешь про wiki.merionet.ru, бро?", на что он отвечает: "Спроси у **ccTLD** сервера, так как домен верхнего уровня это .ru" [![DNS root сервер отправляет на ccTLD](https://wiki.merionet.ru/images/dns-server-chto-eto-i-kak-rabotaet/2.jpg)](https://wiki.merionet.ru/images/dns-server-chto-eto-i-kak-rabotaet/2.jpg)

Подуставший резолвер теперь идет к ccTLD и спрашивает: "Ну что там дальше то?" А дальше его отправляют на уровень ниже - к серверу **авторитативных имен (Authoritative nameserver)**, который уже скажет нам нужный IP - адрес. Успех! Ну или нет. Он так же может ничего не найти и ответить, что - то в формате "извините, ваш сайт поглотила черная дыра."

Теперь резолвер ответит твоему девайсу, что у сайта wiki.merionet.ru такой-то IP - адрес. А еще резолвер запишет адрес в кэш, чтобы снова не проходить по той же цепочке.

В терминологии DNS существует три типа запросов:

* **Recursive (рекурсивный)** - это запрос формата: "Пришли мне IP-адрес сайта wiki.merionet.ru"
* **Iterative (итеративный)** - это запрос формата: "Пришли мне IP-адрес сайта wiki.merionet.ru либо авторитативный DNS сервер"
* **Inverse (обратный) -** спрашивает все наоборот: "Какое доменное имя у такого-то IP - адреса?"
