December 13, 2020

Как работает DNS?

О путешествии DNS запроса в глобальной сети. Шаги которые преодолевает каждый DNS запрос когда мы набираем доменное имя в строке браузера:

  1. Проверка ip в локальном кэше
  2. Запрос к resolver серверу
  3. Запрос к корневому root серверу
  4. Сервер верхнего уровня TLD
  5. Авторитативный сервер

Существует 3 типа запросов:

  • Recursive (Рекурсивный) - найти ip адрес домена domain.com
  • Iterative (Итеративный) - найти ip адрес домена domain.com или авторитативный dns сервер
  • Inverse (Обратный) - найти имя домена по известному IP адресу

Резолвер сервер находится у провайдера или указывается в настройках коннекта (8.8.8.8/1.1.1.1). Делает сопоставление имени пришедшего адреса в своем кэше.

Если не находит, отправляет запрос к корневому рут серверу. Это сервер который находится на самом верху DNS иерархии. Важно сказать что рут сервер не один, их множество. Но и рут сервер не скажет нам ip адрес.

Root сервер подскажет к какому серверу обратиться дальше, как в регистратуре поликлиники.

Это некая оптимизация поиска ip в общей куче, разделив задачу поиска по ветвлениям наподобие поиска по BTREE дереву. К примеру при поиске комплектующих ПК, когда нам нужно купить ОЗУ, мы просто выберем категорию товара, а не будем листать весь ассортимент в магазине.

И нас направляют к серверу верхнего уровня (TLD - top level domain)

Домены верхнего уровня это то что идет после последней точки (.org, .ru)

Где можно выделить подгруппы:

  • Generic Top Level Domain (gTLD), они не привязаны к географии страны (.edu образовательные, .ai искусственный интеллект)
  • Country Code Top Level Domain (ccTLD) - обозначающие географическую привязку (.ru, .kz)

Путь выглядит следующим образом, резолвер приходим к рут серверу, спрашиваем у него "Какой адрес IP у domain.ru", рут отправит к ccTLD серверу так как домен верхнего уровня .ru. Резолвер отправляет запрос к ccTLD серверу, а дальше ccTLD отправляет на уровень ниже - к серверу авторитативных имен который выдаст нужный нас IP адрес ну или он может также ничего не найти в своих записях в таком случае домен может находится в стадии обновления DNS записей (как при парковки домена) или в принципе его может не существовать.

Узнав IP адрес искомого домена, резовлер запишет его в локальный кэш чтобы снова не повторять цепочку всех действий.