Система доменних імен: відмінності між версіями

[перевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Немає опису редагування
замінено апостроф
Мітка: Скасування
Рядок 2:
'''Доме́нна систе́ма іме́н''' ({{lang-en|Domain Name System}}, DNS) — ієрархічна розподілена система перетворення імені хоста ([[комп'ютер]]а або іншого мережевого пристрою) в [[IP-адреса|IP-адресу]].
 
Кожен комп'ютеркомп’ютер в [[Інтернет]]і має свою власну унікальну адресу — число, яке складається з чотирьох (у протоколі [[IPv4]]) або шістнадцяти (у протоколі [[IPv6]]) [[байт]]ів. Оскільки запам'ятатизапам’ятати десятки чи навіть сотні номерів — важка процедура, то всі (чи майже всі) машини мають імена, запам'ятатизапам’ятати які (особливо якщо знати правила утворення імен) значно легше.
 
Уся система імен в Інтернеті — [[Ієрархічна структура|ієрархічна]]. Це зроблено для того, щоб не підтримувати одне централізоване джерело, а ''роздати владу на місця''.
Рядок 9:
[[Файл:Structure DNS.jpg|right|350px|thumb]]
 
Повне доменне (від {{lang-en|domain}}) ім'яім’я машини (FQDN, Fully Qualified Domain Name) можна розбити на дві частини — ім'яім’я області-домена та власне ім'яім’я машини. Наприклад, ''m30.ziet.zhitomir.ua'' — повне доменне ім'яім’я машини ''m30'', яка перебуває у [[домен]]і ''ziet.zhitomir.ua''.
 
За порядок у доменах, як правило, відповідає певний комп'ютеркомп’ютер, користувачі-адміністратори якого слідкують за тим, щоб не було, наприклад, різних машин з однаковими ІР-адресами. Наприклад, відповідальність за область-домен ''ziet.zhitomir.ua'' покладається на машину ''alpha.ziet.zhitomir.ua'' Ця влада делегується зверху вниз від машини ''ns.lucky.net'', яка відповідає за домен ''zhitomir.ua''. В свою чергу, відповідальність за область ua делегована машині зверху від так званих кореневих серверів (''root server'').
 
Всю цю систему можна уявити у вигляді перевернутого дерева. Список імен доменів верхнього рівня на сайті [[IANA]] (https://www.iana.org/domains/root/db). Повний список географічних областей, в основному, відповідає [[ISO 3166|двобуквеним ISO-кодам країн]] і його можна знайти, наприклад, на WWW-сервері [[ISOC]] (http://www.isoc.org).
 
Необхідно розрізняти доменне ім'яім’я, та поштову адресу. В поштовій адресі повинен бути знак «[[@]]», який в економіці має назву «комерційне ''at''», а в електронній пошті — «равлик». Цей знак у поштовій адресі відокремлює ім'яім’я поштової скриньки від [[Доменне ім'я|доменного імені]]. Знак «@» вперше у 1971 році використав [[Рей Томлінсон]], щоб відокремити імена користувача і комп'ютеракомп’ютера, коли він відправив повідомлення з одного ДЕК-10 (''Digital Equipment Corporation'') комп'ютеракомп’ютера на інший ДЕК-10. Обидва комп'ютерикомп’ютери були розміщені поруч один з одним.
 
Коли мережа Інтернет була молода та невелика, таблиці відповідності імен та адрес зберігалися у звичайному [[Текстовий файл|текстовому файлі]], який періодично просто розсилався всім учасникам електронною поштою. Після того, які кількість машин значно збільшилася, така схема перестала ефективно працювати і програмісти [[Університет Каліфорнії, Берклі|університету штату Каліфорнія в Берклі]] спроектували і написали програму BIND (Berkeley Internet Name Domain), яка відповідає на запити машин користувачів, які стосувалися імен та ІР-адресу.
Рядок 21:
Служба імен DNS (Domain Name System) — це [[розподілена база даних]] доволі простої структури. Для початкового знайомства можна вважати, що це кілька таблиць, у яких записано:
* яку ІР-адресу має машина з певним іменем;
* яке ім'яім’я має машина з визначеною адресою;
* що це за комп'ютеркомп’ютер і яка операційна система встановлена на ньому;
* куди потрібно направляти електронну пошту для користувачів цієї машини;
* які псевдоніми є у даної машини.
 
Для прикладу розглянемо випадок, коли користувач посилає пошту з машини ''polesye.zhitomir.ua'' користувачу за адресою ''rozhik@ziet.zhitomir.ua''. При встановленні на машину протоколів [[TCP/IP]] системний адміністратор вказує ІР-адресу комп'ютеракомп’ютера — найближчого серверу імен. Поштова програма подає цьому найближчому серверу запит: «Куди посилати пошту для ziet.zhitomir.ua» Якщо найближчий сервер не може відповісти, то він, в свою чергу, посилає запит до більш «старшого» серверу. Нарешті, стає зрозумілим, що всю пошту для області ''ziet.zhitomir.ua'' необхідно відправляти на машину ''alpha.ziet.zhitomir.ua'' або ''relay2.lucky.net''. Разом з цим відповіді містять ще адресу цієї машини. Поштова програма зв'язуєтьсязв’язується з цим комп'ютеромкомп’ютером (використовуючи не ім'яім’я, а адресу) та передає йому пошту. Всі ці переговори та відправка пошти, як правило, відбувається протягом кількох секунд і користувач не помічає цього. Якщо машина ''ziet.zhitomir.ua'' недоступна то тоді пошта на час, в якій неможливо зв'язатисязв’язатися з машиною ''ziet.zhitomir.ua'' (наприклад під час профілактики каналу зв'язкузв’язку) чекає своєї черги на пересилку на машині ''relay2.lucky.net''.
 
Це характерна для Internet-програм поведінка. Як правило, поштові програми подають доволі багато запитів службі DNS, і ці питання доволі складні. У більшості випадків у програмах користувачів намагаються дізнатися лише одне — яка [[ІР-адреса]] у машини з відповідним іменем. Зрозуміло, що всередині цієї системи імен існує маса нюансів, правил та хитрощів. Докладніше з ними можна ознайомитися в описах стандартів Internet або в спеціальних книгах.
Рядок 36:
Існують домени першого, другого, третього, n-го рівнів.
 
Розглянемо доменне ім'яім’я комп'ютеракомп’ютера <code>department.firma.isp.ua</code>. Тут доменом першого рівня є <code>ua</code>, другого&nbsp; — <code>isp</code>, третього&nbsp; — <code>firma</code>, і четвертого&nbsp; — <code>department</code>.
 
== Типи серверів DNS ==
Рядок 52:
DNS володіє такими характеристиками:
* Розподільність адміністрування. Відповідальність за різні частини ієрархічної структури несуть різні люди або організації.
* Розподільність зберігання інформації. Кожен вузол мережі в обов'язковомуобов’язковому порядку повинен зберігати тільки ті дані, які входять в його зону відповідальності та (можливо) адреси кореневих DNS-серверів.
* Кешування інформації. Вузол може зберігати деяку кількість даних не зі своєї зони відповідальності, для зменшення навантаження на мережу.
* Ієрархічна структура, в якій всі вузли об'єднаніоб’єднані в дерево, і кожен вузол може або самостійно визначає роботу нижчестоящих вузлів, або делегувати (передавати) їх іншим вузлам.
* Резервування. За зберігання та обслуговування своїх вузлів (зон) відповідають (зазвичай) кілька серверів, розділені як фізично, так і логічно, що забезпечує збереження даних і продовження роботи навіть у разі збою одного з вузлів.
 
DNS важлива для роботи Інтернету, так як для з'єднанняз’єднання з вузлом необхідна інформація про його IP-адресу, а для людей простіше запам'ятовуватизапам’ятовувати буквені (зазвичай осмислені) адреси, ніж послідовність цифр IP-адреси. У деяких випадках це дозволяє використовувати віртуальні сервери, наприклад, HTTP-сервери, розрізняючи їх по імені запиту. Спочатку перетворення між доменними та IP-адресами вироблялося з використанням спеціального текстового файлу hosts, який складався централізовано й автоматично розсилався на кожну з машин у своїй локальній мережі. З ростом Мережі виникла необхідність в ефективному, автоматизованому механізмі, яким і стала DNS.
 
DNS була розроблена Полом Мокапетрісом в 1983 році; оригінальний опис механізмів роботи містяться в RFC 882 і RFC 883. У 1987 публікація RFC 1034 і RFC 1035 змінила специфікацію DNS і скасувала RFC 882, RFC 883 і RFC 973 як застарілі.
Рядок 65:
'''Ключовими поняттями DNS є:'''
 
* '''[[Доменне ім'я|Домен]]''' (англ. ''domain''&nbsp;— область)&nbsp;— частина простору ієрархічних імен мережі Інтернет, що обслуговується групою серверів доменних імен (DNS-серверів) та централізовано адмініструється. DNS-сервери зберігають інформацію про вузли, імена яких належать домену і виконують трансляцію їхніх імен в адреси. Кожний домен має унікальне ім'яім’я, а кожен комп'ютеркомп’ютер, підключений до Інтернету, має, як правило, доменне ім'яім’я. Домени мають між собою ієрархічні стосунки. Два домени, що розташовані на сусідніх рівнях ієрархії, називаються відповідно доменом вищого та нижчого рівнів. [[Домен верхнього рівня|Домени найвищого (верхнього) рівня]] можуть бути сформовані за організаційним або географічним ознаками. Домени, сформовані за географічним ознаками, об'єднуютьоб’єднують вузли, що належать конкретній державі. За географічними ознаками об'єднуютьсяоб’єднуються в основному комп'ютерикомп’ютери, що містяться на території США.
* '''[[Піддомен]]''' ({{lang-en|subdomain}})&nbsp;— підлеглий домен (наприклад, wikipedia.org&nbsp;— піддомен домену org, а uk.wikipedia.org&nbsp;— домену wikipedia.org). Теоретично такий розподіл може досягати глибини в 127 рівнів, а кожна мітка може містити до 63 символів, поки загальна довжина разом з крапками не досягне 254 символів. Але на практиці реєстратори доменних імен використовують більш суворі обмеження. Наприклад, якщо у вас є домен виду mydomain.ua, ви можете створити для нього різні піддомени виду mysite1.mydomain.ua, mysite2.mydomain.ua і&nbsp;т.&nbsp;д.
* '''Ресурсний запис'''&nbsp;— одиниця зберігання і передачі інформації в DNS. Кожний ресурсний запис має ім'яім’я (тобто прив'язанийприв’язаний до певного доменного імені, вузлу в дереві імен), тип і поле даних, формат і зміст якого залежить від типу.
* '''Зона'''&nbsp;— частина дерева доменних імен (включаючи ресурсні записи), що розміщується як єдине ціле на деякому сервері доменних імен (DNS-сервері, див. нижче), а частіше&nbsp;— одночасно на декількох серверах (див. нижче). Метою виділення частини дерева в окрему зону є передача відповідальності (див. нижче) за відповідний домен іншій особі або організації. Це називається делегуванням (див. нижче). Як зв'язковазв’язкова частина дерева, зона всередині теж являє собою дерево. Якщо розглядати простір імен DNS як структуру із зон, а не окремих вузлів/імен, теж виходить дерево; виправдано говорити про батьківських і дочірніх зонах, про старших і підлеглих. На практиці, більшість зон 0-го і 1-го рівня ('.', ua, com, …) складаються з єдиного вузла, якому безпосередньо підпорядковуються дочірні зони. У великих корпоративних доменах (2-го і більше рівнів) іноді зустрічається утворення додаткових підпорядкованих рівнів без виділення їх у дочірні зони.
* '''Делегування'''&nbsp;— операція передачі відповідальності за частину дерева доменних імен іншій особі або організації. За рахунок делегування в DNS забезпечується розподільність, адміністрування та зберігання. Технічно делегування виражається у виділенні цієї частини дерева в окрему зону, і розміщенні цієї зони на DNS-сервері (див. нижче), керованому цією особою чи організацією. При цьому в батьківську зону включаються «склеюючі» ресурсні записи (NS і А), що містять покажчики на DNS-сервери дочірньої зони, а вся інша інформація, що відноситься до дочірньої зони, зберігається вже на DNS-серверах дочірньої зони.
* '''[[DNS-сервер]]'''&nbsp;— програма, призначена для відповідей на DNS-запити за відповідним протоколом. Також DNS-сервером можуть називати хост, на якому запущено відповідну програму.
* '''[[DNS-клієнт]]''' (від англ. Domain Name System-client&nbsp;— доменних імен система&nbsp;— клієнт)&nbsp;— програма або модуль в програмі, що забезпечує з'єднанняз’єднання із DNS-сервером для визначення IP-адреси по його доменному імені.
* '''Авторитетність''' ({{lang-en|authoritative}})&nbsp;— ознака розміщення зони на DNS-сервері. Відповіді DNS-сервера можуть бути двох типів: авторитетні (коли сервер заявляє, що сам відповідає за зону) і неавторитетні (англ. Non-authoritative), коли сервер обробляє запит, і повертає відповідь інших серверів. У деяких випадках замість передачі запиту далі DNS-сервер може повернути вже відоме йому (за запитами раніше) значення (режим кешування).
* '''DNS-запит''' ({{lang-en|DNS query}})&nbsp;— запит від клієнта (або сервера) до сервера. Запит може бути рекурсивним або нерекурсивний (див. Рекурсія).
 
Система DNS містить ієрархію DNS-серверів, відповідну ієрархії зон. Кожна зона підтримується як мінімум одним авторитетним сервером DNS (від англ. Authoritative&nbsp;— авторитетний), на якому розташована інформація про домен.
 
Ім'яІм’я та IP-адреса не тотожні&nbsp;— одна IP-адреса може мати безліч імен, що дозволяє підтримувати на одному комп'ютерікомп’ютері безліч веб-сайтів (це називається віртуальний хостинг). Зворотне теж справедливо&nbsp;— одному імені може бути зіставлено безліч IP-адрес: це дозволяє створювати балансування навантаження.
Для підвищення стійкості системи використовується безліч серверів, що містять ідентичну інформацію, а в протоколі є засоби, що дозволяють підтримувати синхронність інформації, розташованої на різних серверах. Існує 13 кореневих серверів, їх адреси практично не змінюються.
Протокол DNS використовує для роботи TCP-або UDP-порт 53 для відповідей на запити. Традиційно запити та відповіді відправляються у вигляді однієї UDP [[Дейтаграма|дейтаграми]]. TCP використовується для AXFR-запитів.
Рядок 86:
== Принцип роботи ==
Система імен DNS&nbsp;— це ієрархічна деревоподібна система. У цьому дереві існує корінь&nbsp;— він позначається «.» (root). Список кореневих серверів повинен бути у кожного сервера: він міститься у файлі <code>named.са.</code> Цей файл може називається і по-іншому&nbsp;— залежно від налаштувань сервера. Існує певна кількість доменів верхнього рівня. Найбільш відомі: com, gov, net, org і домени країн&nbsp;— ua, de, fr та ін.
Нехай користувач вводить у вікні браузера адресу <code>http://server</code>. Проте адресація в локальній мережі (так само як і в Інтернет) побудована на основі IP-протоколу. Тому для того, щоб встановити з'єднанняз’єднання з комп'ютеромкомп’ютером server комп'ютерукомп’ютеру користувача необхідно знати його IP-адресу, тому операційна система користувача намагається вирішити{{що це}} (перевести) ім'яім’я комп'ютеракомп’ютера в IP-адресу. З цією метою вона спочатку використовує свої стандартні засоби (той же файл [[hosts]]), а потім звертається до служби DNS. Розглянемо тепер інтернет-адресу www.yahoo.com (насправді абсолютно неважливо це інтернет-адреса або адреса в локальній мережі&nbsp;— все те ж саме). Сервер DNS спочатку намагається вирішити ім'яім’я даного комп'ютеракомп’ютера, використовуючи свій власний кеш імен. Якщо необхідне ім'яім’я комп'ютеракомп’ютера в нім відсутнє, то сервер DNS звертається до одного з кореневих серверів DNS
 
Запит обробляється рекурсивно: кореневий сервер звертається до сервера, який відповідає за домен com, а той, у свою чергу, до сервера DNS домена yahoo.com. Сервер DNS домена yahoo.com повертає IP-адресу комп'ютеракомп’ютера www&nbsp;— 64.58.76.222 або всі адреси, які зіставлені цьому імені (багато мережевих операційних систем, у тому числі і [[Linux]], дозволяють одному імені зіставляти декілька IP-адрес). А офіційне ім'яім’я комп'ютеракомп’ютера www.yahoo.com (це його канонічне ім'яім’я&nbsp;— про канонічні імена і як їх використовувати буде сказано нижче)&nbsp;— <code>www.yahoo.akadns.net</code>.
 
=== Схеми запитів DNS-імен ===
Рядок 105:
 
'''Записи DNS''', або '''Ресурсні записи''' (''англ.'' Resource Records, RR)&nbsp;— одиниці зберігання і передачі інформації в DNS. Кожний ресурсний запис складається з таких полів:
* ''ім'яім’я'' (NAME)&nbsp;— доменне ім'яім’я, до якого прив'язанаприв’язана або яким «належить» даний ресурсний запис;
* ''TTL'' (Time To Live)&nbsp;— допустимий час зберігання даного ресурсного запису в кеші ''не відповідального'' DNS-сервера (вимірюється в секундах);
* ''тип'' (TYPE) ресурсного запису&nbsp;— визначає формат і призначення даного ресурсного запису;
Рядок 114:
Найбільш важливі типи DNS-записів:
 
* '''Запис A''' (''address record'') або '''запис адреси''' зв'язуєзв’язує ім'яім’я хоста з адресою IP. Наприклад, запит A-запису на ім'яім’я referrals.icann.org поверне його IP адресу&nbsp;— 192.0.34.164
* '''Запис AAAA''' (IPv6 address record) зв'язуєзв’язує ім'яім’я хоста з адресою протоколу IPv6. Наприклад, запит AAAA-запису на ім'яім’я K.ROOT-SERVERS.NET поверне його IPv6 адресу&nbsp;— 2001:7 fd :: 1
* '''Запис CNAME''' (canonical name record) або канонічний запис імені (псевдонім) використовується для перенаправлення на інше ім'яім’я
* '''[[MX-запис]]''' (mail exchange) або поштовий обмінник вказує сервер(и) обміну поштою для даного домену.
* '''Запис NS''' (name server) вказує на DNS-сервер для даного домену.
* '''Запис PTR''' (pointer) або запис покажчика зв'язуєзв’язує IP хоста з його канонічним ім'ямім’ям. Запит в домені in-addr.arpa на IP хоста в reverse формі поверне ім'яім’я (FQDN) даного хоста (див. [[Зворотний запит DNS]]). Наприклад, (на момент написання), для IP адреси 192.0.34.164: запит запису PTR 164.34.0.192.in-addr.arpa поверне його канонічне ім'яім’я referrals.icann.org. З метою зменшення обсягу небажаної кореспонденції (спаму) багато серверів-одержувачів електронної пошти можуть перевіряти наявність PTR запису для [[Хост|хоста]], з якого відбувається відправлення. У цьому випадку PTR запис для IP адреси повинна відповідати імені відправляючого поштового сервера, яким він представляється в процесі [[SMTP]]-сесії.
* '''Запис [[SOA]]''' (Start of Authority) або початковий запис зони вказує, на якому сервері зберігається еталонна інформація про даний домен, містить контактну інформацію особи, відповідальної за дану зону, таймінги (параметри часу) кешування зонної інформації та взаємодію DNS-серверів.
* '''SRV-запис''' (server selection) вказує на сервери для сервісів, використовується зокрема для Jabber і Active Directory.
Рядок 129:
== Інтернаціональні доменні імена ==
 
Доменне ім'яім’я може складатися тільки з обмеженого набору [[ASCII]] символів, дозволяючи набрати адресу домену незалежно від мови користувача. [[ICANN]] затвердив засновану на Punycode систему IDNA, перетворюючи будь-який рядок в кодуванні [[Unicode]] в допустимий DNS набір символів.
 
== Безпека ==