DNS

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Протокол DNS (Domain Name Service - служба доменних імен) забезпечує пошук імен хостів, використовуючи розподілену по мережних серверах імен базу даних.

Протокол DNS виконує дві основні функції. Він дозволяє клієнтським комп'ютерам запитувати DNS-сервер про IP-адресу або ім'я якого-небудь хоста в мережі, а також дозволяє робити обмін інформацією між базами даних серверів DNS. У цьому протоколі використовується стандартний формат типу "запит-відповідь", де клієнт посилає пакет запиту, і сервер відповідає або пакетом з інформацією, отриманою з бази даних, або повідомленням про помилку, у якому вказується причина відмови в обробці запиту. У своїй роботі цей протокол використовує порт 53 і добре відомі протоколи — TCP або UDP. Причому останнім часом UDP став більш розповсюдженим методом транспортування пакетів по мережі Internet. Пакет DNS складається з п'яти полів: заголовка, питання, відповіді, повноважень і поля додаткової інформації.

Формат повідомлень DNS показаний на малюнку.

DNS.jpg

Ідентифікатор - 16-бітове поле для позначення відповідності між запитами і відгуками.

Q - 1-бітовий прапор запиту (query).

Запит - 4-бітовий опис типу повідомлення:

   0 стандартний запит (адреса по імені).
   1 зворотний запит (ім'я за адресою).
   2 запит стану сервера.

A (Authoritative Answer) - 1-бітовий прапор, що показує відгук від уповноваженого (authoritative) сервера імен.

T (Truncation) - відкидання. 1-бітовий прапор, що говорить про відкидання повідомлення.

R - 1-бітовий прапор, який встановлюэться для дозволу запиту рекурсивним шляхом.

V - 1-бітовий прапор підтримки рекурсивного сервісу.

B - 3-бітове поле, зарезервоване для використання в майбутньому (0).

Rcode -

       Код відгуку - 4-бітове поле, що встановлюэться сервером імен для позначення стану запиту:
      0 немає помилок.
      1 неможливо інтерпретувати запит через формальну помилку. 
      2 обробка неможлива через збій на сервері. 
      3 запитане ім'я не існує.  
      4 непідтримуваний тип запиту. 
      5 відмова від виконання запиту.

Лічильник питань - 16-бітове поле, що містить число записів у розділі питань.

Лічильник відповідей - 16-бітове поле, що містить число записів про ресурси в розділі відповідей.

Лічильник Authority - 16-бітове поле, що визначає число записів про ресурси сервера імен у розділі authority (повноваження).

Лічильник доповнень - 16-бітове поле, що визначає число записів про ресурси сервера імен у додатковому розділі.

Правила формування імен

Повне доменне (від англ. 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).

Всю цю систему можна уявити у вигляді перевернутого дерева. Нижче наведений список імен доменів верхнього рівня (далеко не повний). Повний список географічних областей, в основному, відповідає двобуквені ISO-коди країн|двобуквеним ISO-кодам країн і його можна знайти, наприклад, на WWW-сервері ISOC (http://www.isoc.org).

Необхідно розрізняти доменне ім'я, та поштову адресу. В поштовій адресі повинен бути знак «@», якій розділяє поштову адресу на доменне ім'я та ім'я поштової скриньки.

Коли мережа Інтернет була молода та невелика, таблиці відповідності імен та адрес зберігалися у звичайному текстовий файл|текстовому файлі, який періодично просто розсилався всім учасникам електронною поштою. Після того, які кількість машин значно збільшилася, така схема перестала ефективно працювати і програмісти Університет Каліфорнії, Берклі|університету штату Каліфорнія в Берклі спроектували і написали програму BIND (Berkeley Internet Name Domain), яка відповідає на запити машин користувачів, які стосувалися імен та ІР-адресу.

Служба імен DNS (Domain Name System) — це розподілена база даних доволі простої структури. Для початкового знайомства можна вважати, що це кілька таблиць, у яких записано:

  • яку ІР-адресу має машина з певним іменем;
  • яке ім'я має машина з визначеною адресою;
  • що це за комп'ютер і яка операційна система встановлена на ньому;
  • куди потрібно направляти електронну пошту для користувачів цієї машини;
  • які псевдоніми є у даної машини.

Для прикладу розглянемо випадок, коли користувач посилає пошту з машини polesye.zhitomir.ua користувачу за адресою [email protected] (знак «@» носить назву commercial «at» sign). При встановленні на машину протоколів 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 або в спеціальних книгах.

Записи DNS

Найбільш важливі типи DNS-записів:

  • Запис A (address record) або запис адреси пов'язує ім'я хоста з адресою IP. Наприклад, запит A-запису на ім'я referrals.icann.org поверне його IP адресу - 192.0.34.164
  • Запис AAAA (IPv6 address record) зв'язує ім'я хоста з адресою протоколу IPv6. Наприклад, запит AAAA-запису на ім'я K.ROOT-SERVERS.NET поверне його IPv6 адресу - 2001:7 fd:: 1
  • Запис CNAME (canonical name record) або канонічний запис імені (псевдонім) використовується для перенаправлення на інше ім'я
  • Запис MX (mail exchange) або поштову обмінник вказує Поштовий сервер | сервер обміну поштою для цього домену.
  • Запис NS (name server) вказує на DNS-сервер для даного домену.
  • Запис PTR (pointer) або запис покажчика пов'язує IP хоста з його канонічним ім'ям. Запит у домені in-addr.arpa на IP хоста в reverse формі поверне ім'я (FQDN) даного хоста. Наприклад, (на момент написання), для 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.

TCP/IP