Найти тему
Олег Тимашевский

ЧТО ТАКОЕ DNS (НЕ МАГАЗИН)

Оглавление

..

Всем привет. Вчера в своей библиотеке на СИ для разрешений dns-имён "ldns.c" пытался разобраться почему мне на dns-запросы dns-сервера яндекса и гугла отвечают что у меня неверный формат запроса (Format Error). Так я ничего и не исправил. Зато появилась идея написать публикацию про DNS. Думаю будет полезно сделать публикацию что же такое DNS, не магазин техники и электроники, просто совпали названия.

Эта публикация хоть и относится к ИТ, но будет добавлена в подборку про связь и телефонию, т.к. на мой взгляд интернет это прежде всего связь, а телефония давно мигрировала в интернет настолько насколько это возможно.

СИСТЕМА ДОМЕННЫХ ИМЁН

..

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

Иерархия доменных имён на примере "sipnet.ru"
Иерархия доменных имён на примере "sipnet.ru"

Переходим от теории к практике. Теперь рассмотрим доменную систему на примере домена "sipnet.ru", который входит в национальный домен РФ. Об этом говорит хвостик ".ru". Как изображено на рисунке выше, пусть у вышеуказанного "sipnet.ru"'а есть подразделения в Москве и в Краснодаре, соответственно у каждого подразделения есть свой дочерний домен. Для Москвы "msk.sipnet.ru", для Краснодара "krd.sipnet.ru". Дочерние домены имеют приставку слева а не справа, такая форма записи используется для того чтобы полное доменное имя было более монолитным.

Идём дальше. Краснодарский домен имеет два дочерних домена, общедоступный и приватный, это будет "public.krd.sipnet.ru" и "private.krd.sipnet.ru" соответственно. Пусть приватный домен имеет два узла, полная их запись будет выглядеть следующим образом "host1.private.krd.sipnet.ru" и "host2.private.krd.sipnet.ru". Таким образом, из полного имени узла видно какому домену он принадлежит, а также все домены более высокого уровня.

ОПРЕДЕЛЕНИЕ СЕТЕВЫХ АДРЕСОВ

..

Как известно для маршрутизации в ip-сетях используются сетевые адреса, а не доменные имена. Поэтому чтобы запросы были достигли адресата, например, чтобы открыть страницу того или иного сайта, скажем "dzen.ru", нужно знать его сетевой адрес. За связь между именами и сетевыми адресами отвечают dns-сервера, которые хранят эту информацию.

Это аналогично тому как если бы в вашем телефоне в адресной книге был контакт "Людмила", в котором сохранён телефон сотового оператора. Но его запоминать ненужно, телефон хранится в адресной книге мобилки. Завтра Людмила сменила номер и вы адресной книге поменяли старый тел. номер на новый, но звоните по прежнему ч\з адресную книгу и вызываете контакт "Людмила". Так и здесь, dns-сервера аналогичны адресной книге, для имён узлов хранят их сетевые адреса.

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

Рассмотрим это на примере проверки доступности узла "sipnet.ru" командой "ping" как изображено на скриншоте ниже.

-3

Сразу после набора в командной строке команды "ping sipnet.ru" отправляется dns-запрос на сконфигурированный dns-сервер.

В пакете dns-запроса есть много служебных полей, но напишу только про наиболее важные из них. Первое поле это тип запроса, t="A", т.е. запрашивается адрес, второе поле это код класса, c="IN", т.е. интернет. В 99% случаев используются именно эти значения. Третье поле это доменное имя (в данном случае "sipnet.ru"), адрес которого запрашивается. В ответном сообщении всё тоже самое, только добавляется сетевой адрес, в данном случае это "212.53.40.40"

После определения сетевого адреса ч\з уже другие механизмы на него отправляется тестовый пакет, описание которых выходит за рамки данной публикации.

RFC 1035

..

Механизм определения сетевых адресов был задокументирован рабочей группой интернета (IETF) в далёком 1987 году спустя всего год после её основания и используется до сих пор. Соответствующий документ стандарта RFC 1035 "Реализация доменов и спецификация" общедоступен и ознакомится с ним можно по ссылке https://www.ietf.org/rfc/rfc1035.txt. Эта реализация RFC 1035 "зашита" во всех операционных системах Android/Windows/Linux/Mac и используется браузерами ч\з системные вызовы или используются их свои реализации.

Такой вот фундаментальный стандарт интернета разрешений dns-имён. Некоторые стандарты появляются и через время теряют свою актуальность или меняются но более новые, а этот ипользуется до сих пор.