Мысли

Волшебный интернет: Что такое DNS протокол?

DNS протокол простыми словами

Эту заметку о DNS протоколе я долго не могла начать. Несколько раз я погружалась в материал о том, как же всё-таки работает система DNS. После первого прочтения материала меня будто захлопнуло в вакуум. Натурально. Мне пришлось непросто. Понять всё с первого раза не получилось. Вернее то, что я поняла, меня сильно удивило.  Признаюсь, до 30 с чем то лет я, автор этого блога rezedaphoto.com, Резеда, мало интересовалась Интернетом. Ну, нет, я им ещё как пользовалась, но только как типичный юзер. В далёкие первым моим интернет провайдером стал Коминтел в 2000-е годы. Никогда «инет» не казался мне таким хитроумным и невероятно элегантно сконструированным изобретением. Вернее, я об этом не задумывалась. Я понятия не имела как оно вообще работает. И хотя мне немного стыдно признаваться в своем невежестве, это все же довольно нишевая тема. И не такой уж высокий процент людей имеет представление о том, что такое на самом деле DNS. Если, конечно, речь не о гипермаркете техники. Но нет, я вообще не об этом DNS собираюсь поразмышлять.

Привет! Я Резеда Мурзаханова и этой мой Блог о фотографии Rezedaphoto.com

Во-первых, есть служба (система) именования доменов, она же DNS. А Во-вторых, есть интернет-протокол DNS. Протокол DNS отвечает за то, чтобы устанавливать связь между доменным именем, например, этого блога Rezedaphoto.com и его ip адреса. Из моей статьи про пакеты интернета и протокол tcp вы уже знаете, что без ip адреса «в этих ваших интернетах» никуда.

Служба доменных имён DNS

Название, кстати, прямо описывает всю суть. Вы скоро поймёте почему. Для начала мне придётся отправить нас всех в виртуальную реальность. Просто представьте как вы вводите название сайта в браузере, чтобы зайти, например, на какой-нибудь ваш любимый ресурс. Магическим образом он загружается в браузере. Да, я сказала магическим. Это происходит непринуждённо и не требует от пользователя никаких усилий. И именно поэтому я так сильно была удивлена, ведь пользователи, в том числе и я, вообще не пытаются понять что происходит на той стороне. И если этого технического понимания нет, то непонятно как оно вообще работает. Ведь каждый сайт имеет некий ip адрес, и только обращаясь к нему браузер сможет получить драгоценные пакеты интернета. И теперь главный вопрос. А как браузер узнает ip адрес нужного нам ресурса? Магия. Причём я действительно восхищаюсь этой системой. Настолько она элегантна, незаметна и изощренна. И это говорю я, человек получивший «стереотипно-гуманитарное» образование.

ip пакет с указанным адресом отправки и назначения
Как браузер узнает ip адрес нужного нам ресурса?

DNS преобразователь

Для того, чтобы браузер или другой клиент получил ip адрес ресурса, в систему пользователя добавлен dns-преобразователь. Он запускает функцию получения ip адреса домена или наоборот, домена по ip адресу. Всё выглядит нормально. Если не учитывать, что в таком случае в преобразователь должны были бы впихнуть информацию о всех существующих в мире ресурсах и постоянно добавлять новые… И тут становится понятно, что оно так работать не может. Снова полная магия.

веб клиент отправляет запрос преобразователю, схема DNS
DNS преобразователь

Локальный DNS сервер

Когда вы заключаете договор с вашим интернет провайдером, к вам приходит техник, чтобы всё установить и настроить. И это не только про «воткнуть кабель» или настроить роутер. На стороне провайдера есть незаметный, но важный элемент в системе функционирования интернета. А именно локальный DNS сервер. Адрес этого локального сервера (или нескольких) «вшивают» в вашу систему. Вы их не видите, вы даже понятия о них не имеете. И именно к локальному серверу, уже заранее известному преобразователю, он и обращается. Ух, тут уже целый детектив. Чего мы ещё не знаем? Припрятаны ещё несколько сюрпризов. Уж поверьте.

Локальный DNS сервер получает запрос от преобразователя
Локальный DNS сервер

Корневой DNS сервер

И после этой операции локальный dns сервер посылает запрос на корневой сервер, чтобы узнать ip адрес dns сервера зоны первого (верхнего) уровня. Для этого блога rezedaphoto.com домен верхнего уровня — Com (. Com,. Ru и тд). На что корневой DNS сервер отвечает отправлением ip адреса DNS сервера верхнего уровня.

Локальный DNS сервер отправляет запрос корневому серверу
Корневой DNS сервер

DNS сервер первого уровня

На этом приключения не заканчиваются. Локальный dns сервер отправляет запрос к серверу домена верхнего уровня, чтобы узнать адрес сервера, который отвечает за зону rezedaphoto.Com.  И только после этого локальный DNS сервер отдаёт адрес преобразователю. И да, наконец-то после этого сайт загружается в браузере. Урра!

схема работы dns интернет протокола, корневой сервер
Волшебный интернет: Что такое DNS протокол?

А вот если бы пользователь запросил адрес, содержащий домен второго уровня, например ftp.rezedaphoto.com, то цепочка запросов увеличилась бы поиском сервера, отвечающего и за дополнительный уровень.

Почему всё так сложно? Во-первых, подкаталоги сайтов могут жить на разных ip адресах. Более того,  даже полные копии одного и того же сайта могут быть на разных ip адресах. Во-вторых вряд-ли можно представить коллосальный массив существующих веб ресурсов. И если до интернета, в сети arpanet, о которой я уже писала, это ещё решалась ведением общего каталога всех ресурсов, то после создания сети сетей, т.е. нашего любимого интернета, требовалось изящное и эффективное решение. Именно поэтому меня так восхитило как была решена эта техническая задача.

Кроме прочего в этих процессах помогает кэширование. DNS Серверы хранят информацию о запрашиваемых адресах какое-то время. Чтобы связаться с сервером зоны Com, локальный  dns сервер может «достать» его адрес из собственного кэша. И вообще любой адрес, если он всё ещё хранится в кэше. Так сокращается время ожидания и снижается нагрузка на сеть.

DNS серверы — как они общаются? DNS протокол как система

Самое любопытное это то, как отправляются пакеты между DNS серверами. Они «общаются» не с помощью привычного нам Tcp, для которого сначала требуется установить подключение и использовать сокеты. Ведь это было бы слишком сложно и долго. Dns серверы обмениваются короткими однопакетными сообщениями с помощью протокола UDP. Вся эта операция поиска нужного ip адреса длится максимум несколько секунд. Всего-то.

Изящно, не правда ли? Удивительное и красивое спрятано в чём-то обыденном. И даже это обыденное нам как правило не очень-то и понятно. Как говорил Сократ «Я знаю, что ничего не знаю». И чем больше живёшь, тем больше понимаешь, что ничего не знаешь об окружающем мире. Ну, хотя бы теперь мы в курсе что такое протокол DNS. И это меня очень радует.