DHCP
DHCP (англ. Dynamic Host Configuration Protocol — протокол динамічної конфігурації вузла) — це стандартний протокол прикладного рівня[1], який дозволяє комп'ютерам автоматично отримувати IP-адресу та інші параметри, необхідні для роботи в мережі. Для цього комп'ютер звертається відповідно — до DHCP-сервера. Мережевий адміністратор може задати діапазон адрес, які будуть розподілені між комп'ютерами. Це дозволяє уникнути ручного налаштування комп'ютерів мережі й зменшує кількість помилок. Протокол DHCP використовується в більшості великих мереж TCP/IP.
Модель TCP/IP (RFC 1122) |
---|
Прикладний рівень |
Транспортний рівень |
Мережевий рівень |
Канальний рівень |
DHCP є розширенням протоколу BOOTP, що використовувався раніше для забезпечення бездискових робочих станцій IP-адресами при їхньому завантаженні. DHCP зберігає зворотну сумісність з BOOTP.
Стандарт протоколу DHCP був прийнятий у жовтні 1993 року. Остання версія протоколу (березень 1997 року) описана в RFC 2131. Нова версія DHCP, призначена для використання в середовищі IPv6, зветься DHCPv6 і визначена в RFC 3315 (липень 2003 року).
Опції DHCP
Крім IP-адреси, DHCP також може повідомляти клієнтові додаткові параметри, необхідні для нормальної роботи в мережі. Ці параметри називаються опціями DHCP. Список стандартних опцій можна знайти в RFC 2132. Деякими з найбільш часто використовуваних опцій є:
- IP-адреса маршрутизатора за замовчуванням;
- маска підмережі;
- адреси серверів DNS;
- ім'я домену DNS.
Деякі постачальники програмного забезпечення можуть визначати власні, додаткові опції DHCP.
Режими DHCP
Протокол DHCP працює за схемою клієнт-сервер. Під час запуску системи комп'ютер, який є DHCP-клієнтом, відправляє в мережу запит на отримання IP-адреси. DHCP-сервер відповідає і відправляє повідомлення-відповідь, яка містить IP-адресу і деякі інші конфігураційні параметри. При цьому сервер DHCP може працювати в різних режимах, включаючи:
- Динамічний розподіл - адміністратор присвоює IP-діапазон адрес на сервері DHCP. Кожен клієнтський комп'ютер в мережі повинен запросити IP-адресу від DHCP-сервера, коли мережа ініціалізується за концепцією "оренди". Коли закінчується термін оренди, якщо вона не буде продовжена, DHCP-сервер має право повернути адресу і призначити її на інші комп'ютери.
- Автоматичне виділення - сервер DHCP буде постійно призначати вільний IP-адрес з діапазону, встановленого адміністратором, запитуючому комп'ютеру. Основна відмінність з динамічним розподілом в тому, що сервер зберігає записи минулих завдань IP і намагається привласнити ту ж адресу тому ж комп'ютеру для майбутніх мережних підключень.
- Статичний розподіл - сервер DHCP робить призначення IP-адрес виключно на основі таблиці MAC-адрес, які зазвичай заповнені вручну адміністратором мережі. Якщо MAC-адреса комп'ютера не зазначена в таблиці, йому не буде призначена мережева адреса.
Структура протоколу
Протокол DHCP є клієнт-серверним, тобто в його роботі беруть участь клієнт DHCP і сервер DHCP. Передача даних здійснюється за допомогою протоколу UDP, при цьому сервер приймає повідомлення від клієнтів на порт 67 і відправляє повідомлення клієнтам на порт 68.
Поле | Опис | Довжина(в байтах) |
---|---|---|
op | Тип повідомлення. Наприклад може приймати значення: BOOTREQUEST (1, запит від клієнта до сервера) і BOOTREPLY (2, відповідь від сервера до клієнта). | 1 |
htype | Тип апаратної адреси. Допустимі значення цього поля визначені в RFC1700 «Assigned Numbers». Наприклад, для MAC-адреси Ethernet 10 Мбіт/с це поле приймає значення 1. | 1 |
hlen | Довжина апаратної адреси в байтах. Для MAC-адреси Ethernet - 6. | 1 |
hops | Кількість проміжних маршрутизаторів (так званих агентів ретрансляції DHCP), через які пройшло повідомлення. Клієнт встановлює це поле в 0. | 1 |
xid | Унікальний ідентифікатор транзакції, що генерується клієнтом на початку процесу отримання адреси. | 4 |
secs | Час в секундах з моменту початку процесу отримання адреси. Може не використовуватися (в цьому випадку воно встановлюється в 0). | 2 |
flags | Поле для прапорів - спеціальних параметрів протоколу DHCP. | 2 |
ciaddr | IP-адреса клієнта. Заповнюється тільки в тому випадку, якщо клієнт вже має власну IP-адресу і здатний відповідати на запити ARP (це можливо, якщо клієнт виконує процедуру поновлення адреси після закінчення терміну оренди). | 4 |
yiaddr | Нова IP-адреса клієнта, запропонована сервером. | 4 |
siaddr | IP-адреса сервера. Повертається в реченні DHCP (див. нижче). | 4 |
giaddr | IP-адреса агента ретрансляції, якщо такий брав участь в процесі доставки повідомлення DHCP до сервера. | 4 |
chaddr | Апаратна адреса (зазвичай MAC-адреса) клієнта. | 16 |
sname | Необов'язкове ім'я сервера у вигляді нуль-термінованого рядка. | 64 |
file | Необов'язкове ім'я файлу на сервері, що використовується бездисковими робочими станціями при віддаленому завантаженні. Як і sname, представлено у вигляді нуль-термінованого рядка. | 128 |
options | Поле опцій DHCP. Тут вказуються різні додаткові параметри конфігурації. На початку цього поля вказуються чотири особливих байта зі значеннями 99, 130, 83, 99 («чарівні числа»), що дозволяють серверу визначити наявність цього поля. Поле має змінну довжину, проте DHCP-клієнт повинен бути готовий прийняти DHCP-повідомлення завдовжки 576 байт (в цьому повідомленні поле options має довжину 340 байт). | змінна |
Як працює DHCP
Протокол DHCP побудований так, що клієнт може звертатися із запитом відразу до декількох серверів.
Клієнт DHCP, що потребує адресу, посилає широкомовний пакет DHCPDISCOVER в пошуках сервера. Пакет містить апаратну адресу запитувача клієнта. Потім один або кілька серверів DHCP розглядають запит і посилають у відповідь пакет DHCPOFFER, що містить пропоновану IP-адресу і "час оренди".
Клієнт вибирає адресу з отриманих пакетів DHCPOFFER. Вибір клієнта залежить від його призначення - наприклад, він може вибрати адресу з найбільшим часом оренди. Слідом за тим клієнт посилає пакет DHCPREQUEST з адресою вибраного сервера.
Обраний сервер посилає підтвердження (DHCPACK) і процес узгодження завершується. Пакет DHCPACK містить обумовлені адресу та час оренди. Сервер позначає виділену адресу як зайняту - до закінчення терміну оренди цю адресу не можна буде присвоїти іншому клієнту. Клієнту залишилося тільки сконфігурувати себе відповідно до надісланих даних і можна приступати до роботи в мережі.
Отже, на запит DHCPDISCOVER може відповісти кілька серверів. Клієнт повинен вибрати одну з пропозицій і послати у відповідь пакет DHCPREQUEST з ідентифікатором вибраного сервера. Інші сервери переглядають пакет DHCPREQUEST і укладають на основі ідентифікатора сервера, що їх пропозиція була відкинута. Таким чином, вони знають, що запропоновані ними IP-адреси вільні для призначення іншим клієнтам.
У разі якщо сервер не може прийняти конфігурацію, він посилає пакет DHCPNAK (відмова в підтвердженні), що змушує клієнта почати процес узгодження заново.
Виходячи з цього, якщо в мережі два DHCP-сервера з різними конфігураціями, немає ніякої гарантії, що клієнт вибере саме ваш сервер.
Зноски
- CCNP, 2003, с. 14.
Література
- Комп'ютерні мережі: [навчальний посібник] / А. Г. Микитишин, М. М. Митник, П. Д. Стухляк, В. В. Пасічник. — Львів: «Магнолія 2006», 2013. — 256 с. ISBN 978-617-574-087-3
- Буров Є. В. Комп'ютерні мережі: підручник / Євген Вікторович Буров. — Львів: «Магнолія 2006», 2010. — 262 с. ISBN 966-8340-69-8
- Harrington, Donna L. (2003). CCNP Practical Studies: Troubleshooting. Cisco Press. ISBN 978-1-58720-057-1.
Посилання
- RFC 2131 — стандарт DHCP. (англ.)
- RFC 2132 — перелік стандартних опцій DHCP. (англ.)
- RFC 2136 — DNS UPDATE. (англ.)
- RFC 3315 — стандарт DHCPv6. (англ.)
- Опція 82 DHCP (рос.)