Месяц назад на собеседовании мне задали вопрос “как работает DNS?”
Хоть я и представляю в целом как работает DNS, но внятно объяснить не смог 😅
Поэтому после собеседования в очередной раз пошёл и перечитал этот замечательный комикс:
И нарисовал для себя схему, чтобы получше закрепить в памяти и в следующий раз ответить чётко.
Вот моя схема для запоминания.
Кратко про DNS
Так как интернет работает на сетевых соединениях по IP адресам, каждый раз когда мы открываем сайт в браузере, браузер должен определить IP сервера чтобы отправить на этот IP запрос и загрузить страницу сайта.
У браузера есть только доменное имя сайта и URL страницы, IP он не знает.
Чтобы браузер мог узнать IP конкретного сервера на котором находится сайт, и создана система DNS (Domain Name System).
То есть базовый принцип такой. Браузеру нужен IP сервера с сайтом, браузер передаёт в DNS имя домена, в ответ получает IP сервера.
Шаги на схеме
- Пользователь вводит адрес сайта.
- Браузер ищет IP адрес сервера по доменному имени в своём кеше. Если находит, загружает страницу с этого IP.
- Если браузер не нашёл IP по домену в своём кеше, он обращается к операционной системе (OS).
- Операционная система проверяет свой кеш, если есть то отдаёт IP из кеша.
- Если у операционной системы в кеше нет IP для этого домена, операционная система обращается к провайдеру интернета.
- Провайдер интернета предоставляет нашей операционной системе DNS-сервер, называемый “резолвером”.
- Резолвер получает запрос и ищет в своём кеше. Если находит, то сразу возвращает IP.
- Если резолвер не находит IP в кеше, то опрашивает DNS-серверы.
- Сначала резолвер обращается к ROOT-серверу, получает адрес сервера TLD.
- У сервера TLD резолвер получает адрес NS сервера конкретного домена.
- Обратившись к NS серверу домена, резолвер получает IP адрес, сохраняет его в свой кеш и отдаёт операционной системе клиента.
- Операционная система пишет IP адрес в свой кеш и отдаёт браузеру.
- Браузер пишет IP адрес в свой кеш и делает запрос к серверу по этому IP.
Вся эта цепочка запросов обычно занимает миллисекунды и поэтому незаметна для пользователя.
Подробнее про DNS
Схема позволяет быстро сориентироваться по последовательности шагов, но ничего не объясняет. Поэтому схема полезна только тем кто уже разобрался и понимает работу DNS.
Для лучшего понимания предлагаю прочесть комикс https://howdns.works/ (он на английском).