На вашому комп’ютері є список серверів DNS, який він може запитувати для отримання додаткової інформації. У системі Unix або Linux це зберігається в /etc/resolv.conf
. У Windows це налаштування в мережевих налаштуваннях. Часто ваш DNS-сервер постачається вашим DHCP-сервером, можливо разом з іншими параметрами, такими як домен за замовчуванням, проксі-сервери тощо.
Розташування використовуваного DNS-сервера не має великого значення. Поки ваш комп'ютер має IP-адресу та робочий маршрут за замовчуванням (тобто ви можете ping
DNS-сервер), ви повинні мати можливість робити запити DNS.
DNS-сервери не повинні знати "всі" домени. Їм потрібно лише знати, хто «авторитетний», про що він дізнається з набору «кореневих» серверів. На кожному DNS-сервері є список «кореневих» серверів, і цей список змінюється нечасто. На одному з моїх серверів DNS налаштовано 18 кореневих серверів, і ця конфігурація з'явилася, коли я встановив DNS-сервер два роки тому, і якщо список кореневих серверів змінився з того часу, достатньо їх доступно, щоб у мене не було помітив це.
На мій сервер DNS, коли він запитує вирішити домен, який він не знає, робить запит на кореневий сервер, щоб дізнатися, який ще DNS-сервер є авторитетним для домену. Отримана відповідь може містити додаткові записи "NS" і бути позначеними неавторитетними; в цьому випадку мій DNS-сервер знає, що він повинен "слідувати за ланцюжком" і робити новий запит на новий сервер. Врешті-решт, він знаходить DNS-сервер, який забезпечує авторитетну інформацію, і можуть бути зроблені запити, які не є лише записами NS. Звичайно, два (найпоширеніші) - MX (обмін поштою).
Кожен TLD (домен верхнього рівня), як COM, NET, ORG, CA, Великобританія тощо, веде власний реєстр субдоменів. ("Піддомен" - це будь-який домен в іншому домені, тому "example.com" - це субдомен в межах "com", а "com" - це навіть піддомен в межах ".", "Root".) Правила для кожного реєстру застосовуються лише до TLD, який він адмініструє - тобто існує абсолютно різний набір критеріїв для кожного TLD з кодом країни, а "загальні" TLD управляються різними організаціями з різною політикою. Але всі вони підтримують DNS-сервери для свого TLD, що з командного рядка ви можете бачити за допомогою основних інструментів запитів DNS:
[ghoti@pc ~]$ host -t ns ca.
ca name server c.ca-servers.ca.
ca name server e.ca-servers.ca.
ca name server z.ca-servers.ca.
ca name server a.ca-servers.ca.
ca name server f.ca-servers.ca.
ca name server sns-pb.isc.org.
ca name server j.ca-servers.ca.
ca name server k.ca-servers.ca.
ca name server tld.isc-sns.net.
ca name server l.ca-servers.ca.
[ghoti@pc ~]$ host -t ns info
info name server c0.info.afilias-nst.info.
info name server d0.info.afilias-nst.org.
info name server b2.info.afilias-nst.org.
info name server b0.info.afilias-nst.org.
info name server a2.info.afilias-nst.info.
info name server a0.info.afilias-nst.info.
[ghoti@pc ~]$
Коли ви купуєте домен у реєстратора (якого існує багато), він реєструє інформацію про домен до реєстру (з них лише один на TLD). Відповідальність кожного реєстру є за підтримку списку зареєстрованих доменів у межах їх TLD та підтримку DNS-серверів, які надають цю інформацію іншим серверам.