Поля и опции, используемые клиентами DHCP
Таблица 5. Поля и опции, используемые клиентами DHCP
Поле |
DHCPDISCOVER
DHCPINFORM |
DHCPREQUEST |
DHCPDECLINE,
DHCPRELEASE |
'op' |
BOOTREQUEST |
BOOTREQUEST |
BOOTREQUEST |
'htype' |
Из RFC"Assigned Numbers" |
|
|
'hlen' |
Длина аппаратного адреса в октетах |
|
|
'шаги' |
0 |
0 |
0 |
'xid' |
выбрано клиентом |
'xid' из сообщения сервера DHCPOFFER |
выбрано клиентом |
'secs' |
0 или число сек с момента, когда HCP-процесс запущен |
0 или число сек со времени, когдаDHCP- процесс запущен |
0 |
'флаги' |
Устанавливает 'BROADCAST'-флаг, если клиент требует широковещательного отклика |
Устанавливает 'BROADCAST' флаг, если клиент требует широковещательного отклика |
0 |
'ciaddr' |
0 (DHCPDISCOVER) сетевой адрес клиента(DHCPINFORM) |
0 или сетевой адрес клиента (BOUND/RENEW/REBIND) |
0 (DHCPDECLINE) сетевой адрес клиента (DHCPRELEASE) |
'yiaddr' |
0 |
0 |
0 |
'siaddr' |
0 |
0 |
0 |
'giaddr' |
0 |
0 |
0 |
'chaddr' |
аппаратный адрес клиента |
аппаратный адрес клиента |
аппаратный адрес клиента |
'sname' |
опции, если указано в 'sname/file' опция; иначе не используется |
опции, если указано в 'sname/file' опция; иначе не используется |
(не используется) |
'файл' |
опции, если указано в 'sname/file' опция; иначе не используется |
опции, если указано в 'sname/file' опция; иначе не используется |
(не используется) |
'опции' |
опции |
опции |
(не используется) |
Опция |
DHCPDISCOVER
DHCPINFORM |
DHCPREQUEST |
DHCPDECLINE,
DHCPRELEASE |
Requested IP-address |
Может (DISCOVER)
не должен (INFORM) |
Должен (в SELECTING или INIT-REBOOT)
не должен (в BOUND или RENEWING) |
Должен (DHCPDECLINE),
не должен (DHCPRELEASE) |
IP-address lease time |
Может (DISCOVER)
не должен (INFORM) |
Может |
Не должен |
Использование полей 'file'/'sname' |
Может |
Может |
Может |
Тип сообщения DHCP |
DHCPDISCOVER/ DHCPINFORM |
DHCPREQUEST |
DHCPDECLINE/ DHCPRELEASE |
Идентификатор клиента |
Может |
Может |
Может |
Vendor class identifier |
Может |
Может |
Не должен |
Идентификатор сервера |
Не должен |
Должен (после SELECTING)
Не должен (после INIT-REBOOT, BOUND, RENEWING или REBINDING) |
Должен |
Parameter request list |
Может |
Может |
Не должен |
Maximum message size |
Может |
Может |
Не должен |
Message |
Не следует |
Не следует |
Следует |
Site-specific |
Может |
Может |
Не должен |
Прочие |
Может |
Может |
Не должен |
<
Если параметры приемлемы, клиент записывает адрес сервера, который предоставляет параметры из поля 'server identifier' и посылает этот адрес в поле 'server identifier' широковещательного сообщения DHCPREQUEST. Раз от сервера пришло сообщение DHCPACK, клиент инициализирован и переходит в состояние BOUND. Сообщение DHCPREQUEST содержит тот же 'xid' что и сообщение DHCPOFFER. Клиент записывает время истечения действия конфигурационного набора как сумму времени, когда был послан исходный запрос и длительности действия конфигурационного набора из сообщения DHCPACK. Клиент должен выполнить проверку предложенного адреса, чтобы убедиться, что адрес не используется. Например, если клиент находится в сети, которая поддерживает ARP, клиент может послать запрос ARP для предложенного адреса. При посылке широковещательного ARP-запроса для предлагаемого адреса, клиент должен записать туда, как отправитель, свой аппаратный адрес, и 0 в качестве IP-адреса отправителя, чтобы исключить конфликт с ARP-кэшами в других ЭВМ той же субсети. Если оказалось, что сетевой адрес используется, клиент должен послать серверу сообщение DHCPDECLINE. Клиент должен широковещательно послать ARP-отклик, чтобы уведомить о новом IP-адресе клиента и удалить устаревшие записи из ARP-кэша ЭВМ, размещенных в той же субсети.
4.4.2. Инициализация при известном сетевом адресе
Клиент начинает работу в состоянии INIT-REBOOT и посылает сообщение DHCPREQUEST. Клиент должен вставить свой сетевой адрес в опцию 'requested IP-адрес' сообщения DHCPREQUEST. Клиент может запросить специфические конфигурационные параметры, включив опцию 'parameter request list'. Клиент генерирует и записывает случайный идентификатор транзакции и заносит этот идентификатор в поле 'xid'. Клиент записывает свое локальное время для последующего использования при вычислении времени истечения пригодности конфигурационного набора параметров. Клиент не должен включать 'server identifier' в сообщение DHCPREQUEST. Клиент затем широковещательно посылает DHCP-серверу сообщение DHCPREQUEST с использованием аппаратного широковещательного адреса и UDP-порта.
Раз от какого- то сервера пришло сообщение DHCPACK с полем 'xid' согласующимся с тем, которое содержится в сообщении клиента DHCPREQUEST, клиент инициализирован и он переходит в состояние BOUND. Клиент записывает время истечения годности конфигурационного набора параметров, которое равно сумме времени, когда было послано сообщение DHCPREQUEST и длительности пригодности конфигурационного набора, взятого из сообщения DHCPACK.
4.4.3. Инициализация при сетевом адресе заданном извне
Клиент посылает сообщение DHCPINFORM, клиент может запросить специфические конфигурационные параметры путем включения их в опцию 'parameter request list'. Клиент генерирует и записывает случайный идентификатор транзакции и вводит его в поле 'xid'. Клиент помещает свой сетевой адрес в поле 'ciaddr'. Клиенту не следует запрашивать параметры времени действия конфигурационного набора.
Клиент посылает уникастное сообщение DHCPINFORM DHCP-серверу, если он знает адрес сервера, в противном случае он посылает это сообщение широковещательно. Сообщения DHCPINFORM должны быть направлены 'DHCP-серверу ' через UDP-порт.
Раз от любого из серверов получено сообщение DHCPACK с полем 'xid', согласующимся с тем, что содержалось в сообщении клиента DHCPINFORM, клиент инициализирован.
Если клиент не получил DHCPACK в пределах разумного временного интервала (60 секунд или 4 попыток, если используется таймауты, предложенные в разделе 4.1), тогда клиент должен выдать сообщение пользователю, уведомляющее его о возникшей проблеме, а затем продолжить сетевую активность, используя разумные значения по умолчанию из приложения A.
4.4.4. Использование широковещательной и уникастной адресации
DHCP-клиент широковещательно посылает сообщения DHCPDISCOVER, DHCPREQUEST и DHCPINFORM, если только клиент не знает адреса DHCP-сервера. Клиент посылает сообщения DHCPRELEASE серверу уникастно. Так как клиент отказывается использовать IP-адрес, предоставленный сервером, он посылает сообщения DHCPDECLINE широковещательно.
Когда DHCP-клиент знает адрес DHCP-сервера, в состоянии INIT или REBOOTING, клиент может использовать адрес, записанный в DHCPDISCOVER или DHCPREQUEST, а не широковещательный IP-адрес.
Клиент может также использовать уникастную адресацию при посылке сообщений DHCPINFORM известному DHCP-серверу. Если клиент не получает отклика на DHCP-сообщение, посланное по IP-адресу известного DHCP-сервера, DHCP-клиент переходит на широковещательную адресацию.
4.4.5. Восстановление и истечение пригодности
Клиент поддерживает две временные переменные, T1 и T2, которые специфицируют времена, когда клиент пытается расширить время действия своего сетевого адреса. T1 равно времени, когда клиент попадает в состояние RENEWING и пытается контактировать с сервером, который предоставил клиенту сетевой адрес. T2 равно времени, когда клиент перешел в состояние REBINDING и пытается контактировать с каким-то сервером. T1 должно быть раньше T2, которое в свою очередь, должно быть раньше, чем время, когда истекает период годности конфигурационного набора параметров.
Чтобы исключить необходимость синхронизации часов, T1 и T2 выражаются в опциях в относительных единицах [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, присваивающее клиенту его предыдущий сетевой адрес, клиенту следует продолжить сетевые операции. Если клиенту дали новый сетевой адрес, он не должен использовать предыдущий и ему следует уведомить локальных пользователей о возникшей проблеме.
4.4.6. Сообщение DHCPRELEASE
Если клиент более не нуждается в использовании своего сетевого адреса (например, клиент завершил работу через shutdown), клиент посылает серверу сообщение DHCPRELEASE. Заметим, что корректная работа DHCP не зависит от передачи сообщений DHCPRELEASE.
Содержание раздела