Клиент начинает работу в состоянии INIT и формирует сообщение DHCPDISCOVER. Клиент должен ждать случайное время в интервале 1-10 секунд, для того чтобы десинхронизовать процессы при запуске DHCP. Клиент устанавливает 'ciaddr' равным 0x00000000. Клиент может запросить специфические параметры путем включения опции 'parameter request list'. Клиент может предложить сетевой адрес и/или время действия набора параметров путем включения опций 'запрошенный IP-адрес' и 'IP-address lease time'. Клиент должен включить его аппаратный адрес в поле 'chaddr', если это необходимо для доставки DHCP-откликов. Клиент может включить уникальный идентификатор в опцию 'client identifier', как это описано в разделе 4.2. Если клиент включил список запрашиваемых параметров в сообщение DHCPDISCOVER, он должен включать этот список во все последующие сообщения.
Клиент генерирует и записывает случайный идентификатор транзакции, вставляет этот идентификатор в поле 'xid'. Клиент записывает свое локальное время для использования позднее при вычислении времени пригодности набора конфигурационных параметров. Клиент затем посылает широковещательно DHCPDISCOVER по локальному аппаратному адресу 0xffffffff, по широковещательному IP-адресу и UDP-порту 'DHCP-сервера'.
Если 'xid' приходящего сообщения DHCPOFFER не согласуется с 'xid' последнего сообщения DHCPDISCOVER, сообщение DHCPOFFER должно молча игнорироваться. Любое приходящее сообщение DHCPACK должно молча игнорироваться.
Клиент собирает сообщения DHCPOFFER за определенный период времени, выбирает одно сообщение DHCPOFFER из числа приходящих сообщений DHCPOFFER (например, первое сообщение DHCPOFFER или сообщение DHCPOFFER от сервера, используемого ранее) и извлекает адрес сервера из опции 'server identifier' сообщения DHCPOFFER. Время, в течение которого клиент собирает сообщения, и механизм, используемый для выбора одного DHCPOFFER зависит от конкретной реализации.
Таблица 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-кэша ЭВМ, размещенных в той же субсети.