ГлавнаяСтатьиПроект YvixSlideCraft

Как работает DHCP: этапы получения адреса и опции

DHCP (Dynamic Host Configuration Protocol, RFC 2131) — протокол, который автоматически выдаёт устройствам IP-адрес и сопутствующие сетевые параметры. Работает поверх UDP: сервер слушает порт 67, клиент — порт 68.

Главное удобство в том, что администратор не бегает по машинам с бумажкой: настройка приезжает сама, вместе с адресом.

Этапы получения адреса

Получение адреса называют DORA — по первым буквам четырёх сообщений: Discover, Offer, Request, Acknowledge.

 Клиент (без адреса)                         DHCP-сервер
        |                                        |
        | ---- 1. DHCPDISCOVER (broadcast) ----> |
        |                                        |
        | <--- 2. DHCPOFFER (IP + опции) -------- |
        |                                        |
        | ---- 3. DHCPREQUEST (broadcast) ------> |
        |                                        |
        | <--- 4. DHCPACK (подтверждение) ------- |
        |                                        |
  1. Discover — клиент ещё без адреса рассылает broadcast (255.255.255.255, источник 0.0.0.0): «есть тут DHCP-сервер?».
  2. Offer — сервер(ы) отвечают предложением: IP, маска, шлюз, время аренды. Ответить может несколько серверов сразу.
  3. Request — клиент выбирает одно предложение и снова шлёт broadcast-запрос, прося именно этот адрес. Так остальные серверы понимают, что их предложения не приняты.
  4. Acknowledge — выбранный сервер подтверждает аренду. С этого момента клиент может пользоваться адресом.

Обновление и освобождение адреса

Адрес выдаётся на ограниченное время — lease time. По умолчанию клиент должен продлевать аренду:

Явно отдать адрес можно сообщением DHCPRELEASE, но на практике многие клиенты его не шлют — просто завершают работу, и адрес «доживает» до конца аренды.

DHCP relay

Если клиент и сервер находятся в разных подсетях, на помощь приходит relay-агент (обычно он включён на маршрутизаторе). Он ловит broadcast-запросы клиента и пересылает их серверу уже unicast’ом, добавляя поле giaddr (адрес relay-агента) и опцию 82. Сервер по giaddr понимает, из какой сети клиент, и выдаёт адрес из нужного пула.

Опции DHCP

Кроме самого адреса, DHCP умеет передавать кучу параметров. Опции устроены как «код–длина–значение» (TLV). Вот основные, с указанием, зачем они нужны:

КодНазваниеДля чего
1Subnet MaskМаска подсети
3RouterШлюз по умолчанию
6Domain Name ServerАдреса DNS-серверов
12Host NameИмя хоста
15Domain NameDNS-суффикс (домен)
42NTP ServersСерверы точного времени (NTP)
44NetBIOS Name ServerАдреса WINS-серверов (старая схема имён Windows)
46NetBIOS Node TypeРежим разрешения NetBIOS-имён
51IP Address Lease TimeВремя аренды адреса
53DHCP Message TypeТип сообщения (Discover/Offer/…)
54Server IdentifierАдрес выбранного DHCP-сервера
58 / 59Renewal / Rebinding TimeМоменты T1 и T2
60Vendor Class IdentifierКлиент сообщает свой тип (например, PXEClient)
61Client IdentifierУникальный идентификатор клиента
43Vendor-SpecificПроизвольные данные вендора
66TFTP Server NameАдрес TFTP-сервера — для загрузки по сети
67Bootfile NameИмя загрузочного файла — для загрузки по сети
82Relay Agent InformationСлужебная информация от relay (порт, VLAN)
93Client System ArchitectureАрхитектура клиента — BIOS или UEFI
94Client Network InterfaceИдентификатор сетевого интерфейса
97Client Machine UUIDUUID машины
119Domain SearchСписок DNS-суффиксов для поиска имён
121Classless Static RouteБесклассовые статические маршруты
252WPADАдрес автоопределения прокси-сервера

Отдельно стоит выделить:

Итог

DHCP — это не «просто выдача IP». Это способ доставить клиенту всё, что ему нужно для работы в сети: от шлюза и DNS до NTP, WINS и даже загрузочного файла для старта операционной системы по сети. О последнем — подробнее в отдельной статье про PXE и TFTP.