System Design Space
Граф знанийНастройки

Обновлено: 21 апреля 2026 г. в 15:20

Система доменных имен (DNS)

средний

Иерархия DNS-серверов, делегирование зон, кэширование, TTL и путь резолвинга от клиента до авторитетного сервера.

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

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

В интервью и архитектурных обсуждениях материал полезен тем, что делает видимым скрытый слой, через который проходят почти все внешние вызовы и на котором часто ломается устойчивость.

Практическая польза главы

Путь разрешения имен

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

Риски доступности

Учит учитывать TTL, устаревшие записи и задержку распространения изменений при проектировании отказоустойчивости.

Глобальное поведение

Показывает, как решения на уровне DNS влияют на задержку, геораспределение и выбор маршрута до сервиса.

Сценарии на интервью

Усиливает ответы на кейсы, где точка отказа скрыта не в коде приложения, а в слое имен и кэшей.

RFC

RFC 1035 (DNS)

Базовая спецификация DNS: формат сообщений, типы записей, делегирование зон и поведение резолверов.

Перейти на сайт

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

В этой цепочке участвуют , , и иногда для геораспределения узлов. Поэтому DNS влияет и на , и на нагрузку в на авторитетные серверы, и на то, как выглядят , и диагностика с отдельной .

Ключевые свойства системы доменных имен

Иерархическое делегирование

Система доменных имен распределяет ответственность по дереву: корневые серверы направляют к доменам верхнего уровня, а затем к авторитетным серверам конкретной зоны.

Рекурсивное разрешение имен

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

TTL и кэширование

Кэш снижает задержку и нагрузку на авторитетные серверы, но усложняет распространение изменений и делает поведение системы менее мгновенным.

Разные типы записей

A/AAAA, CNAME, NS, MX, TXT и другие записи задают адресацию сервисов, делегирование зон и служебные политики вокруг домена.

Критичный контур управления

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

Как устроен заголовок DNS-сообщения

Фиксированный заголовок определяет, сколько в сообщении вопросов, ответов и дополнительных записей. От этого зависят кэширование, размер ответа и поведение транспорта.

Базовый заголовок DNS-сообщения

12 байт + переменные секции

ID

16 бит

Flags

16 бит

QDCOUNT

16 бит

ANCOUNT

16 бит

NSCOUNT

16 бит

ARCOUNT

16 бит

Секция вопроса (переменная)

32 бит

Секции ответа, авторитета и дополнительных данных (переменные)

32 бит

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

Жизненный цикл DNS-запроса

Запрос от клиента

Локальный резолвер на стороне клиента отправляет запрос рекурсивному резолверу, обычно провайдерскому или публичному.

Обход иерархии

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

Ответ и кэширование

Готовый ответ возвращается клиенту и сохраняется в кэше на время жизни записи, чтобы следующие запросы не проходили всю цепочку заново.

Связанная глава

Модель OSI

DNS относится к прикладному уровню и хорошо читается через диагностику по слоям.

Открыть главу

Иерархия DNS-серверов

Пространство имен образует дерево: корень, домены верхнего уровня и затем конкретная зона домена. Авторитетные серверы отвечают за записи своей зоны, а рекурсивный резолвер удерживает недавние ответы в кэше.

Иерархия DNS-серверов

Выберите уровень, чтобы подсветить его роль в процессе резолвинга

Рекурсивный резолвер

Принимает запрос клиента, обходит иерархию и кэширует ответ

Корневые серверы

Направляют к нужному домену верхнего уровня

Серверы доменов верхнего уровня

Указывают, какой сервер отвечает за конкретную зону

Авторитетные серверы

Хранят итоговые записи домена и отвечают за зону

Корневые серверы и серверы доменов верхнего уровня передают ответственность вниз по иерархии.
Авторитетные серверы отвечают только за свою зону и ее записи.

Как происходит разрешение доменного имени

Рекурсивный резолвер стартует с известных корневых серверов, получает ссылки на следующую ступень и только затем доходит до авторитетного сервера нужной зоны. Успешный ответ он сохраняет в кэше на время жизни записи.

Разрешение доменного имени

Запускайте шаги по одному или проигрывайте всю цепочку от клиента до авторитетного сервера

Текущий шаг

Нажмите «Запустить», чтобы пройти цепочку разрешения доменного имени.

Клиент
Рекурсивный резолвер
Корневые серверы
Серверы TLD
Авторитетный сервер

Кэш

И клиент, и рекурсивный резолвер держат недавние ответы в кэше, чтобы не обходить дерево при каждом запросе.

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

Динамика DNS-кэша и времени резолвинга под нагрузкой

Пошагово смотрите, как TTL, доля попаданий в кэш и нагрузка на авторитетные серверы меняют время ответа.

ШагИнтервал 1 (1 из 6)
Попадания в кэш (%)Нагрузка на авторитетные серверы (%)Время резолвинга (мс)

Фаза

Тёплый кэш

Попадания в кэш

93.0%

Среднее время резолвинга

12 ms

Нагрузка на авторитетные серверы

0.8k QPS

NXDOMAIN

0.3%

TTL-политика: Стандартный TTL

Что происходит: Большинство запросов обслуживается из кэша рекурсивного резолвера, а авторитетная зона почти не нагружена.

Расшифровка обозначений

  • QPS (queries per second) — количество DNS-запросов в секунду.
  • NXDOMAIN — доменное имя не существует в DNS.

Что означают метрики

  • Доля запросов, обслуженных из кэша рекурсивного резолвера без полного обхода иерархии.
  • Среднее время полного DNS-резолвинга до получения ответа клиентом.

Связанная глава

Балансировка трафика

DNS часто работает первым слоем выбора региона или площадки еще до балансировщиков L4/L7.

Открыть главу

Как сеть и маршрутизация меняют поведение DNS

Промах кэша и лишние обходы

Каждый промах кэша добавляет дополнительные сетевые переходы до авторитетной зоны и повышает задержку, заметную пользователю.

Компромисс вокруг TTL

Короткое время жизни записей ускоряет распространение изменений, но увеличивает QPS на авторитетные серверы и стоимость DNS-инфраструктуры.

Эникаст и география

Глобальное распределение резолверов и авторитетных узлов снижает время резолвинга и делает хвостовые задержки более предсказуемыми.

Потери пакетов и переход на TCP

Потери пакетов и усечение ответа могут переводить часть DNS-запросов на TCP, увеличивая стоимость и время ответа.

DDoS и аномальный трафик

Всплески ответов NXDOMAIN и усиливающие атаки быстро перегружают DNS-инфраструктуру, если в ней нет жесткого ограничения частоты запросов.

Где DNS особенно важен

  • Обнаружение сервисов для клиентских и внутренних приложений
  • Выбор региона или площадки по географии, весам и сценарию переключения после отказа
  • Маршрутизация в CDN и выбор ближайшей точки доставки
  • Подтверждение владения доменом и маршрутизация почты через MX, TXT, SPF и DKIM
  • Политики безопасности и фильтрации на уровне резолвера

Почему это важно для системного дизайна

  • Разрешение имени добавляет задержку еще до первого сетевого запроса и потому влияет на пользовательские метрики p95/p99.
  • Политика TTL напрямую определяет баланс между скоростью распространения изменений и нагрузкой на авторитетную инфраструктуру.
  • Ошибки в DNS-конфигурации часто выглядят как проблемы приложения, поэтому DNS нужен отдельный слой наблюдаемости.
  • Грамотный DNS-дизайн уменьшает радиус поражения инцидента и повышает устойчивость геораспределенной системы.

Частые ошибки

Ставить слишком короткий TTL без расчета нагрузки на авторитетные серверы в часы пика.

Не учитывать кэширование отрицательных ответов и получать лишний шторм повторных запросов по несуществующим именам.

Смешивать прикладные инциденты и проблемы DNS без отдельной наблюдаемости по попаданиям в кэш и времени резолвинга.

Оставлять DNS у одного провайдера без резервного сценария и тем самым создавать скрытую единую точку отказа.

Связанные главы

  • Модель OSI - показывает DNS как прикладной протокол и помогает разбирать сетевые инциденты по слоям.
  • IPv4 и IPv6: эволюция IP-адресации - объясняет, как записи A/AAAA и свойства адресации влияют на выбор маршрута и стратегию публикации сервисов.
  • Протокол UDP - показывает, почему DNS по умолчанию идет по UDP и как потери пакетов влияют на время ответа.
  • Протокол TCP - объясняет, когда DNS переключается на TCP, например при усечении ответа или переносе зоны.
  • Протокол HTTP - напоминает, что любой HTTP-запрос начинается с разрешения имени и потому зависит от DNS раньше, чем от самого приложения.
  • Балансировка трафика - разбирает, как DNS работает первым слоем выбора региона или площадки еще до балансировщиков L4/L7.
  • Разбор кейса: CDN инфраструктура - показывает практическую сторону глобальной маршрутизации через DNS и сеть точек доставки.
  • Зачем нужны распределённые системы и консистентность - связывает решения в DNS с отказоустойчивостью, распределением нагрузки и радиусом поражения инцидента.

Чтобы отмечать прохождение, включи трекинг в Настройки