ГоловнаСтаттіМережі

DNS Розв’язування: Як Кореневі, Доменні та Авторитетні Сервери Знаходять Адресу

Відстежте ім'я через кореневий, доменний і авторитетний сервери, різницю між рекурсивними та ітеративними запитами та як кешування на основі TTL робить всю систему швидкою.

mysimulator teamОновлено — червень 2026≈ 7 хв читання▶ Відкрити симуляцію

Перетворення імені на адресу

Кожен раз, коли ви вводите доменне ім’я, щось перетворює його на IP-адресу, необхідну вашому комп’ютеру для встановлення з’єднання. Система доменних імен робить це за допомогою суворої ієрархії: коренова зона (13 логічно відмінних кластерів кореневих серверів, обслуговуючися сотнями фізичних місць через anycast) знає лише, які сервери є авторитетними для кожної верхнього домену рівнів (TLD - .com, .org, .uk); кожен TLD-сервер знає лише, які сервери є авторитетними для конкретного другого рівня домену; і авторитетний сервер для цього домену нарешті містить фактичний запис A або AAAA, який відображає ім’я на адресу. Жоден окремий сервер не зберігає весь цей макет — система масштабується точно тому, що кожен рівень повинен знати лише про рівень безпосередньо під ним.

жива демонстрація · пов'язана симуляція● LIVE

Послідовне проти ітеративного розв’язування

Ваше пристрій майже ніколи не спілкується безпосередньо з кореневими, доменними та авторитетними серверами. Замість цього воно запитує рекурсивного розгляда (управлюваний вашим ІССП або публічним, наприклад 1.1.1.1 або 8.8.8.8), щоб виконати весь пошук і повернути остаточну відповідь. Розгляда виконує багатоступеневу роботу: він запитує кореневий сервер, який ТЦ (доменний) сервер спробувати, запитує цей ТЦ-сервер, який авторитетний сервер спробувати, і запитує авторитетний сервер за фактичним записом, слідуючи посиланням на кожному кроці до отримання відповіді замість іншого посилання.

клієнт -> розгляда: "Який запис A для www.example.com?" розгляда -> кореневий: "Хто обробляє .com?" ТЦ (.com): "Хто обробляє example.com?" example.com: "Який запис A для www.example.com?" клієнт: 198.51.100.7 (зберегти це на `TTL` секунд) Це розділення має значення, оскільки воно відокремлює дві дуже різні задачі. Ітеративні запити (сервер повертає відповідь або посилання, ніколи не виконує подальших пошуків) - це те, що роблять кореневі та ТЦ-сервери - вони повинні залишатися легкими та безстанковими, щоб обробляти величемний глобальний обсяг запитів. Рекурсивне розв’язування (виконати весь багатоступеневий шлях і повернути лише остаточну відповідь) - це те, що роблять розгляда від імені клієнта, і воно свідомо не виконується на кореневих/ТЦ-серверах, щоб уникнути перевантаження найактивнішої та найбільш критичної частини всієї системи.

client -> resolver:      "what is A record for www.example.com?"
resolver -> root:        "who handles .com?"        <- referral
resolver -> .com TLD:    "who handles example.com?"  <- referral
resolver -> example.com: "what is www.example.com?"  <- authoritative ANSWER
resolver -> client:      198.51.100.7 (cache this for `TTL` seconds)

Кешування та Час Життя (TTL)

Кожен запис DNS містить час життя (TTL, у секундах), встановлений його власником, і розглядач (resolver) кешує відповідь протягом цього часу перед тим, як дозволено йому знову звертатися. Це робить DNS масштабованим до розмірів інтернету – популярні домени відповідають миттєво з кешу, без будь-яких мережевих поїздок до кореневих або TLD-серверів, і переважна більшість реальних запитів ніколи не покидають кеш розглядача. Встановлення TTL є компромісом: довгий TTL (години чи дні) зменшує навантаження та прискорює повторні пошуки, але уповільнює поширення оновлень у записі, оскільки кешовані розглядачі продовжують обслуговувати застарілу відповідь до її закінчення терміну; короткий TTL (секунди чи хвилини) використовується сервісами безпосередньо перед запланованим міграцією або відказом, приймаючи більше трафіку запитів в обмін на можливість перенаправляти клієнтів протягом декількох хвилин.

; example TTL in a zone file (seconds)
www.example.com.  300  IN  A  198.51.100.7
; 300s = 5 minutes: a resolver serves this cached answer to every
; client that asks, for 5 minutes, before it re-queries the authoritative server

Чому ця архітектура виживає під час атак та збоїв

Розподіл влади за допомогою ієрархії також розподіляє неспроможність. Якщо один авторитетний сервер для невеликого домену виходить із ладу, лише запити для цього конкретного домену зазнають впливу — кореневі та верхньорівневі служби (TLD) залишаються без змін для решти інтернету. Кореневі сервери також значно відтворюються за допомогою технології anycast (одна й та ж IP-адреса оголошується з сотень фізичних місць; маршрутизатори надсилають кожен запит до найближчого топологічно інстансу), тому навіть масштабні атаки типу «відмова в обслуговуванні» проти кореневих серверів, які неодноразово намагалися, зазвичай лише погіршують продуктивність у певних регіонах, а не виводять всю систему з ладу. Кешування посилює цю стійкість: більшість запитів взагалі не досягають авторитетного рівня під час збою, оскільки вони обслуговуються з кешів розв’язувачів, які були заповнені до початку збою.

Frequently asked questions

Яка відмінність між рекурсивним та ітеративним запитом DNS?

У рекурсивному запиті сервер виконує весь багатоступеневий пошук і повертає лише остаточну відповідь — це те, що робить ваш розпіздівач для вас. У ітеративному запиті сервер надає відповідь, яку він має, або посилання на наступний сервер для запиту, не виконуючи додаткових пошуків самостійно — це те, що роблять кореневі та TLD-сервери, щоб вони були легкими.

Чому DNS потребує TTL та кешування взагалі?

Без кешування кожен окремий пошук для кожної домену повинен був би проходити через кореневі -> TLD -> авторитетні сервери щоразу, що миттєво перевантажило б невелику кількість кореневих та TLD-серверів з урахуванням глобального обсягу запитів. TTL-обмежене кешування дозволяє розпіздівачам відповідати на переважну більшість повторних запитів негайно з пам'яті, а значення TTL дозволяє власнику домену торгувати швидшим поширенням змін проти нижчого навантаження запитів.

Чому кореневі DNS-сервери не перевантажуються, враховуючи обсяг трафіку інтернету?

Кореневі сервери сильно кешуються (більшість запитів ніколи не досягають їх, оскільки розпіздівачі вже мають кешовані відповіді) і реплікуються через anycast, де одна й та сама IP-адреса оголошується з сотень фізичних місць у всьому світі, тому запити автоматично маршрутизуються до найближчої інстанції. Це розподіляє навантаження географічно та обмежує потенційний вплив від одночасної відмови або атаки.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте DNS Resolution і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію DNS Resolution

Що ви знайшли?

Додати кроки відтворення (опційно)