Протокол динамического конфигурирования ЭВМ DHCP
Инициализация при сетевом адресе, заданном извне
Клиент посылает сообщение DHCPINFORM и может запросить специфические конфигурационные параметры путем включения их в опцию parameter request list. Далее он генерирует и записывает случайный идентификатор транзакции и вводит его в поле xid. Клиент помещает свой сетевой адрес в поле ciaddr. Ему в этом случае не следует запрашивать параметры времени действия конфигурационного набора.
Клиент посылает уникастное сообщение DHCPINFORM DHCP-серверу, если он знает адрес сервера, в противном случае он посылает это сообщение широковещательно. Сообщения DHCPINFORM должны быть направлены DHCP-серверу через UDP-порт.
Раз от любого из серверов получено сообщение DHCPACK с полем xid, согласующимся с тем, что содержалось в сообщении клиента DHCPINFORM, клиент инициализирован.
Если клиент не получил DHCPACK в пределах разумного временного интервала (60 секунд или 4 попытки), тогда клиент должен выдать сообщение пользователю, уведомляющее его о возникшей проблеме, а затем продолжить сетевую активность, используя разумные значения по умолчанию.
Использование широковещательной и уникастной адресации
DHCP-клиент широковещательно посылает сообщения DHCPDISCOVER, DHCPREQUEST и DHCPINFORM, если только не знает адреса DHCP-сервера. Клиент посылает сообщения DHCPRELEASE серверу уникастно.
Когда DHCP-клиент знает адрес DHCP-сервера, в состоянии INIT или REBOOTING, клиент может использовать адрес, записанный в DHCPDISCOVER или DHCPREQUEST, а не широковещательный IP-адрес. Клиент может также воспользоваться уникастной адресацией при посылке сообщений DHCPINFORM известному DHCP-серверу. Если клиент не получает отклика на DHCP-сообщение, посланное по IP-адресу известного DHCP-сервера, клиент переходит на широковещательную адресацию.
Восстановление и истечение пригодности
Клиент поддерживает две временные переменные, T1 и T2, которые специфицируют времена, когда клиент пытается расширить время действия своего сетевого адреса. T1 равно времени, когда клиент попадает в состояние RENEWING и пытается контактировать с сервером, который предоставил клиенту сетевой адрес. T2 равно времени, когда клиент перешел в состояние REBINDING и пытается контактировать с каким-то сервером. Значение T1 должно соответствовать времени раньше T2, которое в свою очередь, должно быть раньше, чем время, когда истекает период годности конфигурационного набора параметров.
Чтобы исключить необходимость синхронизации часов, T1 и T2 выражаются в опциях в относительных единицах [6.2].
В момент T1 клиент переходит в состояние RENEWING и посылает серверу (уникастно) сообщение DHCPREQUEST с тем, чтобы продлить действие набора конфигурационных параметров. Клиент устанавливает поле ciaddr в DHCPREQUEST равным его текущему сетевому адресу. Клиент записывает локальное время, когда было послано сообщение DHCPREQUEST, и не должен включать идентификатор сервера в сообщение DHCPREQUEST.
Любые сообщения DHCPACK, которые приходят с xid, не согласующимся с xid из сообщения клиента DHCPREQUEST, игнорируются. Когда клиент получает от сервера DHCPACK, он вычисляет время истечения пригодности конфигурационного набора параметров (равно сумме времени, когда клиент посылал сообщение DHCPREQUEST, и длительности пригодности конфигурационного набора параметров из сообщения DHCPACK). Клиент успешно восстанавливает свой сетевой адрес, возвращается в состояние BOUND и может продолжить свою сетевую активность.
Если не приходит никакого DHCPACK до T2, клиент переходит в состояние REBINDING и посылает широковещательно сообщение DHCPREQUEST с целью расширения времени действия конфигурационного набора. Клиент устанавливает поле ciaddr в DHCPREQUEST равным его текущему сетевому адресу. Клиент не должен включать server identifier в сообщение DHCPREQUEST.
Времена T1 и T2 конфигурируются сервером посредством опций. T1 по умолчанию равно ( 0.5 * duration_of_lease ). T2 по умолчанию равно ( 0.875 * duration_of_lease ). Чтобы исключить синхронизацию восстановления состояния клиентов, времена T1 и T2 должны быть выбраны с некоторым случайным разбросом относительно фиксированных значений.
Клиент может решить, обновить или продлить время действия конфигурационного набора вплоть до T1. Сервер может решить расширить длительность пригодности конфигурационного набора параметров в соответствии с политикой сетевого администратора.
Как в состоянии RENEWING, так и в REBINDING, если клиент не получает отклика на свое сообщение DHCPREQUEST, он должен ждать половину остающегося времени вплоть до T2 (в состоянии RENEWING) и половину остающегося времени действия конфигурационного набора (в состоянии REBINDING), как минимум 60 секунд, прежде чем осуществить повторную отправку сообщения DHCPREQUEST.
Если время действия конфигурационного набора иссякло, клиент получает DHCPACK, переходит в состояние INIT и должен остановить всякую сетевую активность и запросить инициализацию параметров. Если клиент получает затем DHCPACK, присваивающее ему его предыдущий сетевой адрес, ему следует продолжить сетевые операции. Если клиенту дали новый сетевой адрес, он не должен использовать предыдущий и ему следует уведомить локальных пользователей о возникшей проблеме.
Сообщение DHCPRELEASE
Если клиент более не нуждается в использовании своего сетевого адреса (например, клиент завершил работу через shutdown), клиент посылает серверу сообщение DHCPRELEASE. Заметим, что корректная работа DHCP не зависит от передачи сообщений DHCPRELEASE.