Каждый день мы десятки раз вводим названия сайтов в адресную строку: yandex.ru, youtube.com, vk.com. И для нас это настолько привычно, что мы даже не задумываемся — а как же браузер понимает, куда именно нужно обратиться? Ведь компьютеры не понимают слов, они оперируют числами.
Так давайте разберемся, что же такое DNS?
Что такое DNS?
Автор, как и всегда, заглянул в Википедию для формального старта. И вот что она говорит:
DNS (англ. Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах.
Звучит сложно и сухо, не правда ли? Давайте переведем на человеческий язык.
DNS — это «телефонная книга» интернета.
Когда вы хотите позвонить другу, вы не вспоминаете номер его телефона (например, +7-123-456-78-90), а просто находите его имя в контактах. Ваш телефон делает за вас всю работу по преобразованию имени «Ваня» в номер телефона.
Точно так же работает и DNS. Вы вводите «yandex.ru» (имя), а DNS-система находит для вашего браузера соответствующий «номер телефона» — IP-адрес, например, 77.88.55.60. Без DNS нам пришлось бы запоминать и вводить в браузер именно эти цифры.
Но как же работает эта «телефонная книга»?
Отлично, коллега-читатель! Мы уже выяснили, что DNS — это волшебная телефонная книга, которая избавляет нас от необходимости запоминать цифры. Но давайте копнем глубже. Как эта книга устроена? Она что, одна на весь мир, лежит где-то в подвале у главного инженера интернета?
Как бы не так! Это не книга, а целая вселенная.
DNS-сервер — ваш личный библиотекарь в бесконечной библиотеке
Представьте, что вы пришли в гигантскую, вселенскую библиотеку (это и есть Интернет). Вы подходите к главному библиотекарю (это ваш DNS-резолвер, часто предоставляемый провайдером) и говорите: «Мне нужна книга под названием yandex.ru».
- Ваша записная книжка (кеш). Первым делом вежливый библиотекарь проверяет свою собственную записную книжку — кеш. Возможно, вы уже спрашивали про Яндекс пять минут назад, и он помнит ответ. Если помнит — он мгновенно выдает вам точный адрес стеллажа (IP-адрес). Все быстро, трафик сэкономлен.
- Справочник отдела (Рут-серверы). Если в записной книжке ничего нет, библиотекарь не бегает по всем залам. Он обращается к главному указателю — рут-серверам (корневым серверам). Их в мире всего 13 «кластеров», и они знают всё... но только о верхнем уровне. Рут-сервер не знает, где yandex.ru, но он говорит: «А, домен .ru? Иди к смотрителю русской секции, вот его адрес».
- Смотритель секции (TLD-серверы). Библиотекарь идет к смотрителю секции доменов верхнего уровня (TLD) — в нашем случае .ru. Тот говорит: «Домен yandex.ru? Конечно, знаю. Вот адрес ответственного за этот конкретный домен сервера».
- Ответственный хранитель (Авторитативный сервер). Наконец, библиотекарь приходит к тому самому серверу, на котором прописана искомая запись. Этот сервер — окончательный источник истины. Он смотрит в свою базу и authoritatively (властно) заявляет: «yandex.ru? Его IP-адрес — 77.88.55.60. Запомни!»
Библиотекарь записывает ответ в свою записную книжку (кеширует его, чтобы в следующий раз не бегать), возвращается к вам и вручает заветный адрес. Ваш браузер получает цифры и может, наконец, отправиться в путь.
Подключение к Пандору, или Почему DNS — это как Нейросеть
Помните фильм «Аватар»? Джейк Салли — это вы, сидящий за компьютером. Его аватар где-то далеко, на Пандоре. Чтобы им управлять, Джейк не помнит сложнейший биологический идентификатор своего синего тела. Он просто ложится в капсулу и говорит системе: «Подключи меня к моему аватару в лесу Халли».
Система — это и есть DNS.
Она принимает простую, понятную команду («аватар в лесу Халли»), находит в гигантской сети Пандоры точное местоположение нужного «тела» (IP-адрес) и устанавливает связь. Без этой системы бедному Джейку пришлось бы вручную перебирать тысячи капсул, пытаясь угадать, какая из них связана с его телом. Примерно то же самое вы делали бы без DNS, пытаясь угадать IP-адрес любимого сайта.
Здорово, правда? Но, как и в любой крутой системе, здесь есть свои подводные камни. Давайте заглянем в мое любимое меню — рубрику проблем.
Проблемы «телефонной книги интернета»
Заблудившийся почтальон
Что, если злоумышленники подкупили библиотекаря? Или подменили страницу в его записной книжке? DNS-спуффинг — это именно это. Вам говорят, что IP-адрес вашего банка — 194.54.21.111, а на самом деле это IP-адрес хакеров, который выглядит в точности как сайт банка, но крадет ваши логины и пароли.
Как это возможно? Иногда — через уязвимости в серверах, иногда — через вирусы на вашем же компьютере, которые портят вашу «личную телефонную книгу». Решение? Использовать DNSSEC — это как поставить на каждую запись в телефонной книге голографическую печать, которую почти невозможно подделать.
Большой Брат следит
Ваш интернет-провайдер — это тот самый главный библиотекарь. Он ведет детальный журнал всех ваших запросов. «Ютуб... ВК... Инстаграм... Поиск симптомов болезни...». Вся ваша цифровая жизнь — как на ладони. Это как если бы сотрудник телефонной станции записывал все номера, которые вы набираете, и кому вы звоните.
Что делать? Сменить библиотекаря! В мире есть публичные DNS-серверы, такие как Cloudflare (1.1.1.1) или Google (8.8.8.8). Они часто быстрее и, что важнее, обещают не продавать ваши данные рекламодателям. Это не панацея от слежки, но уже большой шаг.
Заторы на дорогах
Представьте, что ваш библиотекарь — старенький, медлительный дедушка. Или что в час пик к нему выстроилась огромная очередь. Вы стоите и ждете, пока он найдет адрес, а сайт в это время мог бы грузиться мгновенно.
Если DNS-сервер перегружен или «упал», ваш браузер будет долго-долго «тупить», прежде чем сказать «сайт не найден». Это одна из самых частых причин «медленного интернета» при быстром канале. Решение, опять же, — использовать быстрые и надежные публичные DNS.
Невидимая карта мира
DNS — это не волшебство. Это гениальная, распределенная, иерархическая система, которая работает как нервная система интернета. Это карта, которую мы не видим, но используем каждый раз, отправляясь в цифровое путешествие. Она переводит наш человеческий язык в машинный и делает Сеть по-настоящему удобной.
Без DNS интернет превратился бы в скучную базу цифр, доступную лишь гикам с феноменальной памятью. А так — мы просто говорим «Аватар, подключись!», и система делает все за нас.
UPD
Да, я сознательно упростил многие вещи. Я не стал углубляться в типы DNS-записей (A, AAAA, CNAME, MX — это тема для отдельного разговора), в тонкости кеширования и TTL. Моя цель была — дать вам интуитивное понимание и картинку в голове. Надеюсь, получилось.
Если после этой статьи вы, вводя в браузере название сайта, на секунду задумаетесь о том, какой сложный и красивый путь проделывает ваш запрос — значит, я свою работу выполнил.
А если хотите понять, что такое те самые IP-адреса, почитайте мою прошлую статью. Там тоже всё объяснено на пальцах и аватарах.
Удачи в изучении невидимого мира!