Насколько вероятно, что вы порекомендуете FirstVDS своим друзьям?
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
×
ВЫ ПОСТАВИЛИ НАМ 8 ИЗ 10
×

Что такое DNS и как это работает

DNS, или Domain Name System — система доменных имён. Она играет огромную роль в работе современного интернета. Смотрите ли вы новости на любимом сайте, слушаете музыку онлайн, листаете соцсети — незримо она присутствует повсюду.

Что такое DNS?

Система доменных имён появилась на заре становления интернета. Тогда для сопоставления IP-адреса и связанного с ним имени использовался простой текстовый файл — HOSTS.TXT. Чтобы с его помощью узнать имя хоста и его адрес для подключения либо занести свои данные, нужно было позвонить в сетевой информационный центр. Когда стало понятно, что это слегка неудобно, появились первые DNS-серверы.

Чтобы понять, зачем нужна система доменных имён, вспомним, что такое Интернет. Формально это просто бесчисленное количество устройств (девайсов, компьютеров, серверов — или, одним словом, хостов), объединённых между собой общим каналом связи — под землёй, под водой, по воздуху. И чтобы эти устройства могли взаимодействовать друг с другом, каждому нужен какой-то уникальный опознавательный знак. Для этого используется Internet Protocol, или, как мы привыкли его называть, IP-адрес.

IPv4: 82.202.175.68

IPv6: 2a00:1450:4010:c08::66

Каждый компьютер или сервер, доступный из Интернета, имеет свой IP. Чтобы подключиться к устройству в сети, вы должны знать его точный адрес.

Дальше — лучше. Перечислите сайты, которые посещаете ежедневно. В каком формате вы помните их? Наверняка это буквенные названия — доменные имена, а не IP-адреса: 

yandex.ru

vk.com

habr.com

...

Если для подключения к устройству в сети нужен его IP, почему домены тоже работают? Тут как раз вступает в работу Domain Name System, главная задача которой (со стороны обычного пользователя интернета) — разрешение символьных доменных имён в цифровые IP-адреса. И иногда наоборот, в зависимости от типа DNS-запроса. DNS можно назвать телефонным справочником Интернета — эта система помогает по имени домена узнать точный адрес сервера, где он размещён.

Современная структура DNS похожа на дерево: 

  • У неё есть корень (root DNS-сервер), где хранится информация о всех серверах следующего уровня. Корень, на самом деле, состоит из нескольких серверов. Корневым сервером DNS заведует IANA — объединение, отвечающее за организацию работы Интернета. При этом отдельные root-серверы могут администрироваться разными компаниями (например, один такой обслуживается Cloudflare).
  • Есть ответвления — тот самый следующий уровень, TLD DNS-серверы (top level domain). Они также отвечают за хранение информации о серверах следующего уровня, но уже для отдельных доменных зон: .RU, .РФ, .SU, .COM, .NET и так далее. 

    Такие серверы могут обслуживаться разными организациями. Например, за обслуживание DNS-серверов зоны .SU отвечает RIPN — Российский НИИ развития общественных сетей, а за обслуживание серверов зон .RU и .РФ — Координационный центр национального домена сети Интернет. Все такие организации регистрируются в IANA, и увидеть их можно тут.
  • Далее идут так называемые авторитативные DNS-серверы. И они уже хранят непосредственно информацию о том, какой адрес какому доменному имени соответствует, а также их DNS-записи (ресурсные записи: A, AAAA, CNAME, TXT, MX и пр.). И такой может развернуть кто угодно — регистратор доменных имён, хостинг-провайдер, даже вы — например, с помощью ISPmanager.

Отдельно можно выделить кэширующие DNS-серверы, или DNS-резолверы. Они выполняют две основных функции:

  • выполняют запросы к вышестоящим DNS-серверам;
  • сохраняют в своей памяти (кэше) результаты таких запросов.

Это позволяет им играть роль посредника между вами и основными элементами Domain Name System. Благодаря DNS-резолверам сокращается время, за которое выполняется разрешение имени: вместо того, чтобы каждый раз ждать ответа с другого конца света, DNS-резолвер запрашивает информацию один раз и сохраняет её в своей памяти. При повторных запросах он не выполняет новый полный DNS-запрос, а смотрит в кэш и выдаёт адрес запрошенного домена оттуда.

Как работает DNS?

Вся магия начинается, когда вы набираете адрес сайта в адресной строке браузера и нажимаете Enter. Например, введём адрес firstvds.ru

  1. Первым делом браузер проверяет свой кэш — не сохранился ли IP-адрес запрашиваемого ресурса с прошлого подключения. Если адрес найден, браузер выполняет прямой запрос по нему. 
  2. Если адрес не найден, браузер отправляет запрос к встроенному в операционную систему DNS-резолверу. Тот также проверяет свой кэш и кэш ОС. Если адрес найден, он возвращается браузеру.
  3. Когда адрес в памяти отсутствует, ваш DNS-резолвер отправляет запрос DNS-резолверу интернет-провайдера. Его адрес автоматически прописывается в вашей системе. Также широко распространены резолверы Google — 8.8.8.8 и 4.4.4.4. Резолвер провайдера тоже проверяет свой кэш — не записан ли там адрес запрашиваемого ресурса. Если адрес найден, он возвращается нашему резолверу. 
  4. В ином случае DNS-резолвер провайдера зрит в корень — опрашивает корневые DNS-серверы. Они неявно указаны в любом домене — в виде точки в конце имени, которую мы для упрощения запоминания и работы обычно опускаем: firstvds.ru[.] Корневые серверы проверяют у себя наличие информации о введёном имени — точнее, о домене верхнего уровня .RU. Если информация найдена, корневой сервер возвращает адрес DNS-сервера доменной зоны (TLD DNS-сервера). Если нет — возвращает ошибку: значит, запрошенной зоны не существует.
  5. Получив адрес сервера зоны, резолвер отправляет запрос к нему. Сервер зоны проверяет у себя наличие информации о домене второго уровня — FIRSTVDS.RU. Если такой домен существует, TLD-сервер вернёт адрес авторитативного сервера, где хранится информация об этом домене — его ресурсные записи. Если домен не существует — сервер вернёт ошибку: значит, домен не зарегистрирован, ещё не внесён регистратором в реестр либо не делегирован на серверы имён.
  6. Определив адрес авторитативного сервера, резолвер опрашивает его — всё о том же домене второго уровня. Авторитативный сервер проверяет свою базу данных, и, если домен там присутствует, возвращает его IP-адрес — он записан в ресурсной А-записи домена (или AAAA для IPv6). В некоторых случаях она может отсутствовать — например, удалена вручную по каким-то причинам. Тогда, как и при отсутствии домена в базе, будет возвращена ошибка — резолвер вернётся ни с чем.
  7. Когда адрес нашего домена наконец найден, резолвер провайдера записывает его в свой кэш и передаёт нашему встроенному резолверу. Тот записывает его в свою внутреннюю память и возвращает адрес браузеру. Браузер выполняет прямой запрос к полученному IP-адресу, и начинается загрузка данных сайта — открывается запрошенная страница.

Все эти чудеса занимают несколько мгновений.

На Linux и MacOS путь DNS-запроса до нужного домена можно посмотреть с помощью следующей команды:

dig +trace firstvds.ru

На Linux для работы с dig в некоторых случаях нужно выполнить установку соответствующего пакета:

  • Ubuntu и Debian:

    apt -y install dnsutils
  • CentOS: 

    yum -y install bind-utils

На Windows можно скачать и установить Bind (Tools Only) или воспользоваться онлайн-инструментом, что проще:

Вы увидите весь пройденный запросом путь, начиная с корневых DNS-серверов и заканчивая серверами имён искомого домена:

Кстати, время, которое занимает DNS-запрос, можно измерить. Например, с помощью онлайн-тестов:

  • tools.pingdom.com — тестирует все показатели скорости сайта, включая и время ответа DNS:

  • dnsperf.com — очень наглядно отображает время ответа DNS на карте: 

Или, если у вас под рукой есть Linux-терминал, с помощью следующей команды: 

dig firstvds.ru | grep time

Она покажет время, за которое был выполнен DNS-запрос. Однако нужно помнить, что после первого же запроса полученная информация будет сохранена в кэш. Повторные запросы будут получать информацию оттуда, то есть — гораздо быстрее, чем в первый раз.

Что влияет на время обновления кэша DNS?

Когда вы обновляете ресурсные записи домена — меняете A-запись (IP-адрес домена), NS (серверы имён домена), MX (почтовый сервер домена) и пр., они начинают отображаться не сразу — обновление занимает от 2 до 72 часов.

Этот срок складывается сразу из нескольких параметров:

  • настройки времени кэширования записей (TTL, time-to-live). Этот параметр указывается для каждой записи и задаёт, сколько времени запись может храниться в кэше резолвера. Например, при изменении А-записи с TTL 21600 пользователь, который минуту назад был на сайте, будет видеть сайт со старого адреса (или ошибку, если тот не доступен) — так как вместо отправки нового DNS-запроса его резолвер в течение 6 часов будет выдавать значение, сохранённое в кэше.
  • настройки кэширования интернет-провайдеров. Интернет-провайдеры могут иметь собственные настройки кэширования — соответственно, резолвер провайдера будет выдавать пользователям значение из кэша, пока не будет исчерпан срок жизни записи, заданный провайдером. Тогда при следующем запросе к сайту резолвер провайдера выполнит полный DNS-запрос, тем самым актуализировав информацию в своём кэше.
  • настройки кэширования регистратора домена. Это в основном относится к NS-записям и смене серверов имён. NS-записи, которые содержат серверы имён, хранятся на DNS-серверах доменной зоны, и их TTL определяется там. Разные регистраторы имеют разные настройки, но обычно срок жизни таких записей составляет несколько часов.

    Вот пример для регистратора Webnames: TTL серверов имён составляет 75598 секунд или ~21 час.

    То есть, если мы изменим их, у большинства провайдеров, где имеется закэшированная информация о нашем домене, они обновятся не раньше чем через 21 час.

Автор статьи:

Речкин Антон

Вернуться