Як інтернет передає вебсторінку із сервера до вашого браузера
Можна сказати, що DNS — це спосіб перетворити зручне для читання доменне ім’я на відповідну адресу інтернет-протоколу (IP), яку воно представляє. На перший погляд це здається простим завданням, але насправді все зовсім не так.
Кожен вебсайт розміщено на сервері, а кожен сервер (і, власне, комп’ютер) має IP-адресу. DNS — це система, яка пов’язує IP-адреси з доменними іменами, щоб ми могли зручно переглядати вебсторінки. Для аналогії уявіть, що назва вулиці й номер будинку насправді є набором координат на мапі. Ми користуємося адресами, щоб не морочитися з довготою та широтою місця.
Зображення мапи із зазначенням фізичної адреси, широти та довготи.
Коли ви перетворюєте IP-адресу на доменне ім’я (і навпаки), це називається «розв’язанням DNS». У цьому ланцюжку є кілька апаратних компонентів, зокрема чотири різні типи серверів. Розгляньмо їх докладніше.
4 DNS-сервери, які знаходять і завантажують вебсторінки
Кожен DNS-запит і його розв’язання проходять через чотири сервери. Ось вони, коротко:
DNS-рекурсор.
Це «водонос» усього DNS-процесу. Коли ви запитуєте вебсайт у своєму браузері, ви кажете рекурсору знайти (або «розшукати») сайт у DNS.
Кореневий сервер імен.
Якщо уявити вебсервер, на якому розміщено багато сайтів, то кореневий сервер імен — це ціле. Це загальне розташування IP-адреси.
Сервер імен домену верхнього рівня (TLD).
Вебсайт розміщується на кореневому сервері імен, але сервер імен TLD викопує останню частину IP-адреси: кінцеву частину імені хоста. Це може бути .com, .net або багато інших варіантів.
Авторитетний сервер імен.
Якщо спростити опис цього складного сервера, то це довідкова бібліотека IP-адрес. Цей сервер надсилає повну IP-адресу рекурсору, який, своєю чергою, відображає сайт у вашому браузері.
DNS-запит проходить усі ці етапи, іноді навіть по кілька разів, перш ніж його буде розв’язано. Тож у ланцюжку є чимало місць, де запит може дати збій, звідси й помилки HTTP.
Утім, варто докладніше розібратися в початку й кінці цього ланцюжка. Зробімо це далі.
Різниця між DNS-рекурсором і авторитетним сервером імен
Ви вже зрозуміли, що рекурсор отримує результат запиту й започатковує весь процес DNS. Також ви знаєте, що авторитетний сервер імен передає результат цього процесу назад рекурсору. Однак між ними є й інші відмінності, про які вам варто знати:
DNS-рекурсор. Цей сервер відповідає на DNS-запит. Він активно відстежує записи DNS у ланцюжку. Зазвичай рекурсор надсилає кілька запитів до інших серверів, але кешування може скоротити цей час. Поговоримо про це пізніше.
Авторитетний сервер імен. Цей сервер містить усі записи DNS. Його завдання — відповідати на запит на основі інформації, яку він отримує від інших серверів у ланцюжку, зокрема від рекурсора. Саме цей сервер дає змогу браузеру відобразити вебсайт. Оскільки він авторитетний, йому не потрібно звертатися до інших джерел, щоб перевірити запит: це джерело істини.
Однак авторитетний сервер імен не завжди є кінцевою точкою DNS-запиту. Залежно від запиту, після цього можуть бути й додаткові сервери імен.
Якщо DNS-запит стосується субдомену (наприклад, shop.example.com), після авторитетного сервера імен буде ще один. На ньому зберігається запис CNAME для відповідного субдомену.
Теоретично кількість додаткових серверів імен, до яких звертається запит, не обмежена. Однак у більшості випадків буде лише один додатковий сервер імен.
Як працює пошук DNS
Хоча пошук і запит DNS обробляють чотири сервери, у ланцюжку є багато кроків, на яких передається запит і отримуються результати. Ось як працює процес пошуку:
- Ви вводите доменне ім’я в браузері. Щойно ви натиснете Enter, запит із вашого браузера та операційної системи (ОС) буде надіслано в інтернет, де його отримає DNS-рекурсор.
- Рекурсор передає цей запит кореневому серверу імен і виконує власний запит.
- Результатом цього запиту буде сервер імен TLD, інформація про який повертається рекурсору.
- Цього разу рекурсор запитує сервер імен TLD, який відповідає IP-адресою авторитетного сервера імен домену.
- Рекурсор надсилає інший запит авторитетному серверу імен, який, своєю чергою, відповідає IP-адресою для початкового запиту домену.
- Далі рекурсор надсилає результат своєї роботи назад у веббраузер. На цьому процес DNS завершується, і рекурсор може відпочити кілька мілісекунд!
- Потім браузер обробить HTTP-запит, щоб відобразити сайт.
Це чимало складних і тривалих кроків (відносно того, на що здатен сервер), і все це відбувається мільярди разів на секунду по всьому світу. Попри це, під час пошуку виконується лише три запити.
Запити, які ви зустрінете під час пошуку DNS
Кожен із цих запитів передбачає зв’язок між DNS-клієнтом і сервером. Хоча це загальні терміни, у поясненнях ми зазначимо всі особливості:
Рекурсивний запит.
У цьому запиті клієнт вимагатиме від DNS-рекурсора відповісти або запитаним записом DNS, або повідомленням про помилку.
Ітеративний запит.
Цей запит дає рекурсору повну свободу «вгадувати», що повертати. Якщо відповідності для запиту немає, він звернеться до авторитетного сервера нижчого рівня, доки цей «шлях» не вичерпається.
Нерекурсивний запит.
Такий запит виникатиме, якщо запис DNS є в кеші або рекурсор має авторитетний доступ до запису. Про кешування поговоримо ближче до кінця статті.
У багатьох випадках найпоширенішими будуть рекурсивні й нерекурсивні запити. Ось чому ви бачите повідомлення про помилки та чому процес пошуку може бути складним.
Коли ви маєте справу з нерекурсивним запитом, запис може бути у виділеному кеші записів DNS. Якщо ви знайомі з кешуванням, то знаєте, що в ньому зберігаються файли, до яких ви регулярно звертаєтеся. Так можуть робити локальні програми, але найкращий приклад — кеш вашого вебсайту.
Плагін W3 Total Cache в панелі керування WordPress
Це дає змогу зберігати записи для файлів вашого сайту й зменшувати кількість HTTP-запитів. Те саме можливо й із записами DNS. Відповідні записи зберігаються ближче до вашого комп’ютера, тож ви можете отримати IP-адресу швидше, ніж зазвичай.
Для веброзробників запит GET — це те, що надсилає браузер. Якщо використовується кеш, рекурсор оминає інші сервери в ланцюжку й або звертається безпосередньо до авторитетного сервера імен, або викликає його без потреби в подальших запитах. Це найтиповіший нерекурсивний запит, який ви можете виконати.
Насправді кеші DNS є в різних технологіях, як-от у вашого інтернет-провайдера (ISP), маршрутизатора та локального комп’ютера.
Браузер Brave показує кількість кешованих файлів у пам’яті.
Кеш браузера — перша зупинка рекурсора, який шукає запис DNS, тому браузери часто кешують записи за замовчуванням. Ваша ОС також має DNS-резолвер, який теж перевіряє власний кеш на наявність запису DNS.
Знову ж таки, якщо в кеші ОС немає запису, вона надішле запит рекурсору вашого інтернет-провайдера. Обидва ці рекурсори працюватимуть із записами A та NS вашого домену, намагаючись розв’язати запит до того, як буде виконано повний процес пошуку.
Внесення змін до записів DNS: «поширення»
До речі, ви можете вносити зміни до записів A, NS або CNAME у свого реєстратора. У багатьох випадках мине до 72 годин, перш ніж усі ці зміни набудуть чинності.
Це і є поширення DNS, а час, потрібний для його завершення, залежить від низки факторів, а саме від значення часу життя (TTL) відповідного запису:
Записи реєстратора зі значеннями TTL у секундах.
Коротко кажучи, це визначає, як швидко набуде чинності зміна для конкретного запису DNS. Типове значення TTL — близько чотирьох годин, і що воно вище, то довше триватиме поширення.
Висновок
Якщо вам здається, що відкрити вебсторінку просто, подумайте ще раз. Для кінцевого користувача процес справді простий. Але всередині все набагато складніше й залучає чимало додаткових серверів.









