DHCP

Не слід плутати з HDCP.

DHCP ( англ. Dynamic Host Configuration Protocol - Протокол динамічної конфігурації вузла) - мережевий протокол, що дозволяє комп'ютерам автоматично одержувати IP-адреса й інші параметри, необхідні для роботи в мережі TCP / IP. Даний протокол працює за моделлю " клієнт-сервер ". Для автоматичної конфігурації комп'ютер-клієнт на етапі конфігурації мережевого пристрою звертається до так званого сервера DHCP, і отримує від нього потрібні параметри. Мережевий адміністратор може задати діапазон адрес, що розподіляють сервером серед комп'ютерів. Це дозволяє уникнути ручного налаштування комп'ютерів мережі й зменшує кількість помилок. Протокол DHCP використовується в більшості мереж TCP / IP.

DHCP є розширенням протоколу BOOTP, що використовувався раніше для забезпечення бездискових робочих станцій IP-адресами при їх завантаженні. DHCP зберігає зворотну сумісність з BOOTP.


1. Історія

Стандарт протоколу DHCP був прийнятий в жовтні 1993. Діюча версія протоколу (березень 1997) описана в RFC 2131. Нова версія DHCP, призначена для використання в середовищі IPv6, носить назву DHCPv6 і визначена в RFC 3315 (липень 2003).

2. Розподіл IP-адрес

Протокол DHCP надає три способи розподілу IP-адрес :

  • Ручний розподіл. При цьому способі мережевий адміністратор зіставляє апаратному адресою (для Ethernet мереж це MAC-адресу) кожного клієнтського комп'ютера певний IP-адреса. Фактично, даний спосіб розподілу адрес відрізняється від ручного налаштування кожного комп'ютера лише тим, що відомості про адреси зберігаються централізовано (на сервері DHCP), і тому їх простіше змінювати при необхідності.
  • Автоматичний розподіл. При даному способі кожному комп'ютеру на постійне використання виділяється довільний вільний IP-адресу з певного адміністратором діапазону.
  • Динамічний розподіл. Цей спосіб аналогічний автоматичному розподілу, за винятком того, що адреса видається комп'ютеру не на постійне користування, а на певний термін. Це називається орендою адреси. Після закінчення терміну оренди IP-адресу знову вважається вільною, і клієнт зобов'язаний запросити новий (він, втім, може виявитися тим же самим). Крім того, клієнт сам може відмовитися від отриманої адреси.

Деякі реалізації служби DHCP здатні автоматично оновлювати записи DNS, відповідні клієнтським комп'ютерам, при виділенні їм нових адрес. Це проводиться за допомогою протоколу поновлення DNS, описаного в RFC 2136.


3. Опції DHCP

Крім IP-адреси, DHCP також може повідомляти клієнту додаткові параметри, необхідні для нормальної роботи в мережі. Ці параметри називаються опціями DHCP. Список стандартних опцій можна знайти в RFC 2132.

Деякими з найбільш часто використовуваних опцій є:

Деякі постачальники програмного забезпечення можуть визначати власні, додаткові опції DHCP.


4. Пристрій протоколу

Протокол DHCP є клієнт-серверним, тобто в його роботі беруть участь клієнт DHCP і сервер DHCP. Передача даних здійснюється за допомогою протоколу UDP, при цьому сервер приймає повідомлення від клієнтів на порт 67 і відправляє повідомлення клієнтам на порт 68.

4.1. Структура повідомлень DHCP

Всі повідомлення протоколу DHCP розбиваються на поля, кожне з яких містить певну інформацію. Всі поля, крім останнього (поля опцій DHCP), мають фіксовану довжину.

Поле Опис Довжина (у байтах)
op Тип повідомлення. Наприклад може приймати значення: BOOTREQUEST (1, запит від клієнта до сервера) і BOOTREPLY (2, відповідь від сервера до клієнта). 1
htype Тип апаратного адреси. Допустимі значення цього поля визначені в RFC 1700 "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 байт). змінна

4.2. Приклад процесу отримання адреси

Розглянемо приклад процесу отримання IP-адреси клієнтом від сервера DHCP. Припустимо, клієнт ще не має власного IP-адреси, але йому відомий його попередній адресу - 192.168.1.100. Процес складається з чотирьох етапів.

4.2.1. Виявлення DHCP

Спочатку клієнт виконує широкомовний запит по всій фізичної мережі з метою виявити доступні DHCP-сервери. Він відправляє повідомлення типу DHCPDISCOVER, при цьому в якості IP-адреси джерела вказується 0.0.0.0 (так як комп'ютер ще не має власного IP-адреси), а в якості адреси призначення - широкомовна адреса 255.255.255.255.

Клієнт заповнює кілька полів повідомлення початковими значеннями:

  • У полі xid поміщається унікальний ідентифікатор транзакції, який дозволяє відрізняти цей процес отримання IP-адреси від інших, що протікають в той же час.
  • У полі chaddr поміщається апаратна адреса ( MAC-адресу) клієнта.
  • У полі опцій вказується останній відомий клієнтові IP-адресу. У даному прикладі це 192.168.1.100. Це необов'язково і може бути проігноровано сервером.

Повідомлення DHCPDISCOVER може бути поширене за межі локальної фізичної мережі за допомогою спеціально налаштованих агентів ретрансляції DHCP, перенаправляє надходять від клієнтів повідомлення DHCP серверів в інших підмережах.


4.2.2. Пропозиція DHCP

Отримавши повідомлення від клієнта, сервер визначає необхідну конфігурацію клієнта у відповідності з вказаними мережним адміністратором настройками. В даному випадку DHCP-сервер згоден з замовленим вами клієнтом адресою 192.168.1.100. Сервер відправляє йому відповідь (DHCPOFFER), в якому пропонує конфігурацію. Пропонований клієнтові IP-адреса вказується в полі yiaddr. Інші параметри (такі, як адреси маршрутизаторів і DNS -серверів) вказуються у вигляді опцій у відповідному полі.

Це повідомлення DHCP-сервер відправляє хосту, що послав DHCPDISCOVER, на його MAC, при певних обставинах повідомлення може поширюватися як широкомовна розсилка. Клієнт може отримати кілька різних пропозицій DHCP від ​​різних серверів; із них він повинен вибрати те, яке його "влаштовує".


4.2.3. Запит DHCP

Обравши одну з конфігурацій, запропонованих DHCP-серверами, клієнт відправляє запит DHCP (DHCPREQUEST). Він розсилається широкомовно; при цьому до опцій, зазначеним клієнтом в повідомленні DHCPDISCOVER, додається спеціальна опція - ідентифікатор сервера - вказує адресу DHCP-сервера, обраного клієнтом (в даному випадку - 192.168.1.1).

4.2.4. Підтвердження DHCP

Нарешті, сервер підтверджує запит і направляє це підтвердження (DHCPACK) клієнтові. Після цього клієнт повинен налаштувати свій мережевий інтерфейс, використовуючи надані опції.

4.2.5. Вид повідомлень

Нижче наведені значення кожного поля для кожного з відправляються в процесі повідомлень DHCP.

Виявлення DHCP
DHCPDISCOVER
UDP Src = 0.0.0.0 Dest = 255.255.255.255
OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(Порожнє поле)
FILE
(Порожнє поле)
OPTIONS
Опція DHCP 53: виявлення DHCP
Опція DHCP 50: запит адреси 192.168.1.100
Пропозиція DHCP
DHCPOFFER
UDP Src = 192.168.1.1 Dest = 255.255.255.255
OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0xC0A80164
SIADDR
0xC0A80101
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(Порожнє поле)
FILE
(Порожнє поле)
OPTIONS
Опція DHCP 53: пропозиція DHCP
Опція DHCP 1: маска підмережі 255.255.255.0
Опція DHCP 3: маршрутизатор 192.168.1.1
Опція DHCP 51: термін оренди IP-адреси - 1 день
Опція DHCP 54: DHCP-сервер 192.168.1.1
Запит DHCP
DHCPREQUEST
UDP Src = 0.0.0.0 Dest = 255.255.255.255
OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(Порожнє поле)
FILE
(Порожнє поле)
OPTIONS
Опція DHCP 53: запит DHCP
Опція DHCP 50: запит адреси 192.168.1.100
Опція DHCP 54: DHCP-сервер 192.168.1.1
Підтвердження DHCP
DHCPACK
UDP Src = 192.168.1.1 Dest = 255.255.255.255
OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0xC0A80164
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(Порожнє поле)
FILE
(Порожнє поле)
OPTIONS
Опція DHCP 53: підтвердження DHCP
Опція DHCP 1: маска підмережі 255.255.255.0
Опція DHCP 3: маршрутизатор 192.168.1.1
Опція DHCP 51: термін оренди IP-адреси - 1 день
Опція DHCP 54: DHCP-сервер 192.168.1.1

4.3. Інші повідомлення DHCP

Крім повідомлень, необхідних для первинного отримання IP-адреси клієнтом, DHCP передбачає кілька додаткових повідомлень для виконання інших завдань.

4.3.1. Відмова DHCP

Якщо після отримання підтвердження (DHCPACK) від сервера клієнт виявляє, що зазначений сервером адреса вже використовується в мережі, він розсилає широкомовне повідомлення відмови DHCP (DHCPDECLINE), після чого процедура отримання IP-адреси повторюється. Використання IP-адреси іншим клієнтом можна виявити, виконавши запит ARP.

4.3.2. Скасування DHCP

Якщо з якихось причин сервер не може надати клієнтові запитаний IP-адресу, або якщо оренда адреси видаляється адміністратором, сервер розсилає широкомовне повідомлення відміни DHCP (DHCPNAK). При отриманні такого повідомлення відповідний клієнт повинен повторити процедуру отримання адреси.

4.3.3. Звільнення DHCP

Клієнт може явно припинити оренду IP-адреси. Для цього він відправляє повідомлення звільнення DHCP (DHCPRELEASE) тому серверу, який надав йому адресу в оренду. На відміну від інших повідомлень DHCP, DHCPRELEASE не розсилається широкомовно.

4.3.4. Інформація DHCP

Повідомлення інформації DHCP (DHCPINFORM) призначено для визначення додаткових параметрів TCP / IP (наприклад, адреси маршрутизатора за замовчуванням, DNS -серверів і т. п.) тими клієнтами, яким не потрібен динамічний IP-адресу (тобто адресу яких настроєний вручну). Сервери відповідають на такий запит повідомленням підтвердження (DHCPACK) без виділення IP-адреси.

5. Реалізації

Компанія Microsoft вперше включила сервер DHCP в поставку серверної версії Windows NT 3.5, випущеної в 1994. Починаючи з Windows Server 2000 реалізація DHCP-сервера від Microsoft дозволяє динамічно оновлювати записи DNS, що використовується в Active Directory.

Internet Systems Consortium випустив першу версію ISC DHCP Server (для Unix -подібних систем) 6 грудня 1997. 22 червня 1999 вийшла версія 2.0, більш точно відповідає стандарту.

Компанія Cisco включила сервер DHCP в Cisco IOS 12.0 у лютому 1999 року. Sun додала DHCP-сервер в Solaris 8 в липні 2001.

В даний час існують реалізації сервера DHCP для ОС Windows у вигляді окремих програм, у тому числі відкритих [1], що дозволяють виконувати роль сервера DHCP комп'ютерам під керуванням несерверних версій даної ОС.


Примітки

  1. Сторінка програми Dual DHCP DNS Server на Sourceforge - sourceforge.net / projects / dhcp-dns-server /