DNS
Last updated
Лучший пример из жизни - контакты на твоем смартфоне. Так, например, за контактом "Инна Тиндер НЕ БРАТЬ" скрываются вполне реальные цифры номер телефона, не так ли? Однако, когда мы ищем контакт, в поиск мы вводим не номер телефона, а имя абонента.
Примерно это же делает DNS сервер - он упрощает нашу жизнь. В альтернативной реальности где роботы захватили мир он не нужен, у них обычно нет проблем с запоминанием чисел.
Набрав адрес нашей IT базы знаний wiki.merionet.ru в браузере и нажав enter, вы не сразу попадаете на ДНС сервер.
Сначала ваш девайс проверит кэш браузера или операционной системы. Ведь если вы до этого посещали сайт, то запись о нем останется локально в кэше, чтобы в последующие разы не тратить время на поиск, гоняя туда-сюда пакеты. Если ты частый гость в нашей IT базе знаний, то так оно и работает.
А вот если сайт оказался новым, тогда мы шлем запрос так называемому resolver (распознающему) DNS серверу. Обычно этот сервер находится у нашего интернет провайдера, но мы можем поменять его на другой, например, использовать, известные сервера четыре восьмерки (8.8.8.8) и четыре единицы (1.1.1.1).
Он также делает сопоставление пришедшего имени сайта и его адреса в своем кэше. Если находит, то отвечает нам, а если не находит, то мы начинаем наш поход в поисках адреса и резолвер шлет запрос к корневому root серверу.
Это сервер, который находится на самом верху 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"
Подуставший резолвер теперь идет к ccTLD и спрашивает: "Ну что там дальше то?" А дальше его отправляют на уровень ниже - к серверу авторитативных имен (Authoritative nameserver), который уже скажет нам нужный IP - адрес. Успех! Ну или нет. Он так же может ничего не найти и ответить, что - то в формате "извините, ваш сайт поглотила черная дыра."
Теперь резолвер ответит твоему девайсу, что у сайта wiki.merionet.ru такой-то IP - адрес. А еще резолвер запишет адрес в кэш, чтобы снова не проходить по той же цепочке.
В терминологии DNS существует три типа запросов:
Recursive (рекурсивный) - это запрос формата: "Пришли мне IP-адрес сайта wiki.merionet.ru"
Iterative (итеративный) - это запрос формата: "Пришли мне IP-адрес сайта wiki.merionet.ru либо авторитативный DNS сервер"
Inverse (обратный) - спрашивает все наоборот: "Какое доменное имя у такого-то IP - адреса?"