Клиент DHCP посылает широковещательный пакет (сообщение DHCPDISCOVER), содержащий как минимум идентификатор транзакции и DHCP - идентификатор клиента - обычно его адрес в физической сети. В качестве адреса отравки широковещательного пакета выступает ограниченный широковещательный адрес 255.255.255.255. Клиент ожидает ответ сервера. Если ответ не получен в течение заданного времени, клиент повторяет запрос.
DHCP использует в качестве транспортного протокола UDP, так что, в отличие от RARP, не требует применения специальных протоколов уровня доступа к сети.
Сервер отвечает на сообщение клиента пакетом DHCPOFFER. В работе DHCP использует два порта с широко известными номерами. Порт UDP 67 используется сервером, а порт UDP 68 - клиентом. Такое положение дел необычно. В случае большинства приложений на стороне сервера используется широко известный номер порта, а на стороне клиента - случайный номер. (Причины и способы использования случайных номеров исходных портов описаны в главе 1.) Случайный номер порта гарантирует, что каждая пара исходного/ целевого портов недвусмысленно определяет путь для обмена информацией. Однако клиент DHCP находится в процессе загрузки и, вероятнее всего, не знает своего IP-адреса. Даже если клиент сгенерирует исходный порт для пакета DHCPDISCOVER, ответ сервера, адресованный на этот порт и IP-адрес клиента, не будет прочитан клиентом, не опознавшим адрес. Поэтому DHCP посылает ответ на конкретный порт для всех узлов. Широковещательное сообщение, направленное на порт UDP 68, будет прочитано всеми узлами, даже системами, не знающими своего адреса. Каждая система определяет, является ли пунктом назначения сообщения, проверяя идентификатор транзакции и физический адрес, содержащиеся в пакете ответа.
Сервер заполняет пакет DHCPOFFER данными настройки для клиента. Корректно настроенный сервер DHCP способен предоставить клиенту любое требуемое значение настройки TCP/IP. Глава 9 является руководством по установке сервера DHCP, а приложение D содержит полный перечень параметров настройки DHCP.
Как следует из названия, пакет DHCPOFFER - это предложение данных настройки. Предложение действительно на ограниченный период времени - обычно 120 секунд. Клиент должен ответить на предложение, прежде чем истечет установленный временной интервал. Дело в том, что получить пакет DHCPDISCOVER от клиента и ответить пакетом DHCPOFFER могут сразу несколько серверов. Если бы сервер не требовал ответа от клиента, могла возникнуть ситуация, когда несколько серверов выделяли ресурсы одному клиенту, в то время как эти потраченные впустую ресурсы могли бы использоваться другими клиентами. Получив несколько пакетов DHCPOFFER, клиент реагирует лишь на один из них.
На пакет DHCPOFFER клиент отвечает сообщением DHCPREQUEST. Сообщение DHCPREQUEST говорит серверу, что клиент согласен на использование предложенных настроек. Сервер проверяет информацию в DHCPREQUEST, чтобы убедиться, что клиент все понял правильно, а предложенные параметры по-прежнему доступны. Если все верно, сервер передает клиенту сообщение DHCPACK, уведомляя, что теперь его настройки позволяют использовать все данные исходного пакета DHCPOFFER. Нормальный обмен пакетами при настройке клиента посредством DHCP показан на рисунке.
111
Рисунок. Клиент-серверный протокол DHCP