Представим, вы хотите показать знакомому новый полезный сайт, о котором пока мало кто знает. Давайте проследим, что происходит между вводом URL сайта и моментом, когда страница начинает загружаться.
Чтобы открыть сайт, браузер должен знать, где тот находится. Это не тривиальная задача: сопоставить домену из URL-адреса IP-адрес сервера. Например, google.com соответствует IP 142.250.189.206. На заре интернета такое преобразование осуществлялось с помощью регулярной синхронизации файла hosts. Однако сегодня никакой компьютерной памяти не хватит для хранения всех интернет-адресов. Поэтому за такое сопоставление отвечает распределенная система — Domain Name System, сокращенно DNS.
Поиски на устройстве. Значительная часть информации о записях DNS уже хранится в памяти устройств. Так, сначала браузер ищет, не посещал ли пользователь уже сайт. Если такой информации в истории нет, браузер запросит DNS-запись у операционной системы — возможно, к сайту подключалось другое приложение. Либо запись может оказаться в кэш-памяти роутера. Там для ускорения подключения хранятся данные о последних запросах.
За пределами дома. Если информации нет на «родных» устройствах, браузер делает запрос к DNS-серверу локальной сети. По своему устройству DNS-сервер похож на пухлый телефонный справочник, в которой каждому адресу сайта сопоставлен IP-адрес сервера или группы серверов, где работает сайт с заданным доменным именем. Если DNS-сервер сети не находит точный ответ, он обращается дальше к серверу более высокого уровня, пока в итоге один из серверов не вернет IP-адрес. То есть это иерархическая система, по своей структуре напоминающая дерево.
Дерево доменных имен. С помощью дерева описывается структура имени самого домена. Корневой объект находится на нулевом уровне и обозначения не имеет, но для конкретики иногда используют символ разделителя — точки. Далее поддомены записываются через разделитель справа налево:
- Сначала в иерархии идут домены первого уровня ru, org, com.
- Затем добавляются домены второго уровня. Например, из имени хоста ispmanager.ru следует, что у домена ru есть поддомен ispmanager.
- Далее добавляются домены третьего уровня. Например, для русскоязычной части Википедии ru.wikipedia.org домену третьего уровня соответствует ru, а франкоязычной части fr — fr.wikipedia.org.
Целиком эта часть в URL называется хостом (о структуре URL мы рассказывали в недавней статье). В теории такое членение может достигать 127 уровней, а каждая метка может содержать до 63 символов. Но обычно хватает поддоменов третьего уровня с разными именами.
Каждый DNS-сервер хранит часть дерева доменных имен. Самые верхние связанные записи дерева хранятся на корневых серверах, распределенных по всему миру. Сама система иерархии DNS-серверов соответствует иерархии зон. Зоной называется часть дерева доменных имен, размещаемых как единое целое на одном или нескольких серверах. Такой подход позволяет разграничить ответственность между отдельными организациями. Для устойчивости системы многие DNS-серверы дублируют и синхронизируют информацию друг с другом.
DNS-запрос может быть итеративным или рекурсивным. В случае итеративных запросов DNS-сервер возвращает данные только о той зоне, за которую он ответственен. При рекурсивном запросе DNS-сервер опрашивает серверы в порядке убывания уровня зон в имени, пока не найдет соответствие. Рекурсивные запросы приводят к большим тратам ресурсов, поэтому результаты их обработки сохраняют в памяти.
Как браузер действует, когда узнает DNS-запись. Узнав IP-адрес, браузер сохранит DNS-запись и попытается подключиться к серверу с помощью протокола TCP — набора правил для соединения устройств посредством обмена несколькими сообщениями. Когда обе системы представились друг другу, браузер отправляет HTTP-запрос, сервер обрабатывает запрос и отправляет гипертекст. По полученному ответу браузер отрисовывает веб-страницу.
Достаточно ли знать только IP. Если бы одному домену всегда строго соответствовал один IP, было бы трудно масштабировать крупные информационные системы. Но не всё так просто: строго говоря, хост и IP-адрес не взаимозаменяемы. Так, в случае виртуального хостинга к одному IP-адресу часто привязано несколько URL различных сайтов. Справедливо и обратное: у одного имени может быть несколько IP-адресов, чтобы распределять нагрузку между серверами. Поэтому одного IP недостаточно, при обращении к сайту в запросе также используется хост.
Зачем нужны частные DNS-серверы. Как мы описали выше, за разные зоны DNS и сами DNS-серверы отвечают разные организации. Частные DNS-серверы в последнее время стали важной альтернативой сетевых DNS-серверов, которые предоставляет провайдер. Ведь чем ближе расположен сервер к устройству, которое обращается в интернет, и чем больше у сервера физическая память (возможности кэширования), тем быстрее пользователь получает информацию.
Безопасность. DNS-сервера могут брать на себя заботу о безопасности пользователей: например блокировать мошеннические домены и исправлять характерные опечатки в доменных именах, которые могут использоваться для фишинговых схем. Веб-разработчики прописывают в настройках DNS-сервера информацию, которая необходима для корректной работы с поддоменами, электронной почтой и другими сетевыми технологиями, в том числе методов защиты от хакерских атак.
Как настроить DNS. Если хотите попрактиковаться в настройке DNS, попробуйте нашу панель для управление веб-сервером ispmanager. Она ставится на VPS/VDS или свои серверы на базе Linux. Ispmanager — платная панель, но есть бесплатный двухнедельный период. В одной из следующих статей мы расскажем о том, какие настройки можно сделать на DNS-сервере.