1.1.1. Доменні імена
Домени – це множина хостів, об'єднаних у логічну групу.
Простір доменних імен є деревовидною (ієрархічною) структурою. Головними «гілками» є домени верхнього рівня. Кожен домен верхнього рівня містить піддомени («дрібніші гілки»), які, у свою чергу, теж можуть «галузитися». «Листям» дерева є домени, що не мають піддоменів («листя» може бути фізично представлене довільною кількістю хостів, як одним, так і тисячею). При такому погляді домен – це просто піддерево у просторі доменних імен. Глибина дерева обмежена до 127 рівнів (цілком достатньо!). Кожному вузлу дерева відповідає текстова мітка (ще кажуть – маркер), максимальна довжина якої становить 63 символи (застосування символу «.» є недопустимим). Повне доменне ім’я вузла дерева (fully qualified domain name, FQDN) – це послідовність міток у шляху від цього вузла до кореня дерева (мітки відокремлюються крапкою). Довжина повного доменного імені не повинна перевищувати 255 символів. Наприклад, library – це текстова мітка для одного вузла, а library.lp.edu.ua. є повним доменним іменем. Повне доменне ім’я завжди є унікальним, тоді як текстова мітка кожного вузла може повторюватися, подібно до того, як в різних містах можуть бути вулиці з однаковими назвами, але в одному місті немає двох вулиць з однаковими назвами. Наприклад, є library.ukma.kiev і є library.lp.edu.ua. Кожен хост у мережі Internet однозначно ідентифікується за повним доменним іменем (FQDN).
Імена доменів верхнього рівня утворюються у відповідності до стандарту ISO 3166.
Імена доменів не залежать від регістру (тобто, com і COM – це одне і те саме).
Є дві групи доменів верхнього рівня: родові домени та домени держав. За кожною державою закріплений один домен. До родових доменів відносяться:
com (комерційні організації)
edu (навчальні заклади)
gov (федеральний уряд США)
int (певні міжнародні організації)
mil (збройні сили США)
net (мережеві оператори зв’язку)
org (некомерційні організації)
biz (бізнес)
info (інформація)
name (імена людей)
pro (спеціалісти)
aero (аерокосмічна промисловість)
coop (кооперативи)
museum (музеї)
Очікується поява нових родових доменів.
У США типово всі організації розміщаються під родовими іменами – наприклад, berkeley.edu (сайт університету), microsoft.com. У більшості ж держав організації розміщаються під доменами держав (lp.edu.ua) Не існує заборони на реєстрацію під двома доменами верхнього рівня, однак, ця можливість рідко використовується на практиці.
Кожен домен адмініструє окрема організація, яка контролює створення під доменів у межах свого домену та передає функції адміністрування цих піддоменів іншим організаціям. Зокрема, для створення нового домену потрібний дозвіл лише того домену, куди цей новий домен буде включений. Домени вищого рівня «не втручаються», їхній дозвіл непотрібний. У такий спосіб забезпечується уникнення конфлікту імен у DNS. У базі даних одного сервера містяться записи, що стосуються доменних імен з його зони, але не його підзон. Таким чином досягається масштабованість DNS, бо інакше при додавання нових підзон і доменних імен у них база б розрослася настільки, що навантаження на один сервер стало б надмірним. Однак, кожен DNS-сервер містить посилання (IP-адреси) на DNS-сервери піддоменів.
Весь простір імен зберігається у базі даних, розподіленій у адміністративних серверах в мережі Internet. Теоретично уся база даних DNS могла б розміститися і на одному сервері. Однак, це загрожувало б колапсом усієї мережі Інтернет, якби з сервером щось трапилося, та й навантаження на один сервер зробило б його неприпустимо повільним. Тому DNS реалізована як розподілена база даних. Як відомо, зберігання інформації лише в одному місці тягне за собою ризик втрати всієї інформації. Для уникнення цього ризику весь простір імен поділений на зони, які не перетинаються. Кожна зона містить піддерево DNS (сукупність доменів) і сервери імен, що обслуговують цю зону, тобто, зберігають керуючу інформацію про цю зону. Типово одну зону обслуговують декілька серверів імен (щонайменше два) – основний (який містить інформацію на власному жорсткому диску) та декілька додаткових (які отримують інформацію від основного сервера імен). Сервер, що обслуговує зону, називають атворитативним (або авторитетним) для цієї зони. З міркувань надійності частина серверів імен, які обслуговують зону, можуть знаходитися поза цією зоною. У всьому світі існує ряд кореневих серверів, і кожен з них знає адреси всіх серверів доменів верхнього рівня. Якщо хост «знає» ім’я принаймні одного кореневого сервера, то він зможе дізнатися потрібну інформацію за доменним іменем.
1.1.2. DNS-сервери
Основна функція DNS-серверів – відповідати на стандартні запити. Яким чином DNS-сервер відповідатиме на запитання – це залежить від того, в якому режимі він працює – рекурсивному чи ітеративному (не рекурсивному, прямому).
При ітеративному режимі роботи відповідь DNS-сервера включає або повідомлення про помилку, або власне відповідь на запитання (у тому числі, IP-адресу), або посилання на інший DNS-сервер, який може дати відповідь. Робота в ітеративному режимі виглядає так. DNS-клієнт звертається до DNS-сервера. DNS-сервер (якщо не знає сам заданого доменного імені) надсилає у відповідь адресу DNS-сервера вищого рівня. DNS-клієнт запитує цей наступний DNS-сервер і т.д., поки не буде отримано остаточну відповідь.
При рекурсивному режимі роботи відповідь DNS-сервера може містити або повідомлення про помилку, або власне відповідь на запитання, але ні в якому разі не посилання на інші сервери. Рекурсивний режим застосовується тоді, коли і DNS-сервер, і користувач «домовилися» про це. Домовленість реалізується за рахунок двох бітів – біта RA (Recurse Available) у запиті і біта RD (Recurse Desired) у відповіді. Якщо DNS-сервер встановив біт RA в 1, то він може організувати рекурсивний режим. Якщо користувач встановив біт RD в 1, то він тим самим попросив DNS-сервер обслуговування в рекурсивному режимі. Рекурсивний режим реалізується тоді, коли він можливий і затребуваний (RA=1 і RD=1).
У випадку рекурсії сервер зобов’язаний знайти відповідь (адресу) або повідомлення про помилку (якщо доменне ім’я не існує). Якщо DNS-сервер, що отримав запит, не є авторитетним для запитуваної інформації, він опитує інші DNS-сервери у пошуках відповіді. Якщо DNS-сервер робить рекурсивний запит, тим самим він «знімає з себе відповідальність» за пошук, і просто передасть клієнтові відповідь, знайдену для нього іншими серверами. Інакше серверу доведеться «пройтися» по всіх посиланнях, які йому повернуть у відповідь інші сервери.
Якщо DNS-сервер отримав рекурсивний запит, на який сам не може відповісти, він відправляє запит DNS-серверам, які є авторитетними для зони, найближчої до доменного імені, що фігурує в запиті. Наприклад, якщо був рекурсивний запит адреси для доменного імені library.lp.edu.ua, то DNS-сервер передусім спробує з'ясувати, які сервери є авторитетними для цього доменного імені. Якщо DNS-серверу вдасться це з'ясувати, то він відправить запит одному з цих авторитетних серверів. Інакше DNS-сервер «підніметься на рівень вище в дереві доменів» – буде шукати авторитетні сервери для lp.edu.ua, а якщо і це не спрацює – тоді ще на рівень вище, для edu.ua. Цілком очевидно, що пошук обмежиться кореневою зоною, бо адреси і доменні імена усіх кореневих серверів відомі всім без винятку DNS-серверам.
Для DNS-сервера простішим є нерекурсивний режим роботи, а для користувача – рекурсивний режим. Рекурсивний режим є необов’язковим, додатковим для DNS-сервера; крім того, DNS-сервер може застосовувати його лише для обмеженого кола користувачів.
DNS-клієнт і DNS-сервер обмінюються повідомленнями визначеного формату.
