Обмен сообщениями DHCP

Клиент DHCP начинает обмен сообщениями с серверами сразу после загрузки. Первоначальный обмен проиллюстрирован на рис. 10.4. Кли­ент генерирует ряд широковещательных сообщений DHCPDISCOVER. На данном этапе IP-адреса, который еще находится в состоянии ини­циализации (init), у клиента нет. Широковещательные сообщения, как водится, не выходят за пределы сети клиента, но администратор мо­жет установить на одном из компьютеров локальной сети службу DHCP Relay Agent, которая будет ретранслировать эти сообщения DHCP-серверам в других сетях. Это позволяет одному DHCP-серве­ру обслуживать клиентов в нескольких ЛВС.

Получив от клиента сообщение DHCPDISCOVER, DHCP-сервер генерирует ответное сообщение DHCPOFFER с IP-адресом и други­ми параметрами, отправка которых задана в конфигурации сервера. Чаще всего это сообщение передается как узковещательное, направ­ленное непосредственно клиенту. Поскольку клиент отправил исход­ное сообщение DHCPDISCOVER как широковещательное, он мржет получить ответы DHCPOFFER от нескольких серверов. По истече­нии заданного промежутка времени клиент прекращает отправку со­общений и принимает один из предложенных IP-адресов. Он генери­рует сообщение DHCPREQUEST (поскольку предложенные парамет­ры еще не вступили в силу, сообщение передается как широковеща­тельное), которое содержит адрес выбранного им сервера, а также

информирует DHCP-сервер, что клиент принимает предложенный IP-адрес и уведомляет другие серверы в сети, что их предложения отвергнуты.

Получив сообщение DHCPREQUEST, сервер записывает пред­ложенный IP-адрес и другие параметры в свою базу данных, используя в качестве уникального идентификатора назначения комбинацию ап­паратного адреса клиента и предложенного ему IP-адреса, называемую cookie-файлом идентификатора аренды (lease identification cookie). Что­бы завершить свою часть транзакции, сервер посылает клиенту сооб­щение DHCPACK, подтверждая окончание процесса. Если сервер не может завершить назначение (например, этот IP-адрес уже назначен другой системе), он посылает клиенту сообщение DHCPNAK и про­цесс начинается сначала.

В качестве последней проверки клиент с помощью ARP проверя­ет, действительно ли ни одной системе в сети не назначен тот же IP-адрес. Он передает в сеть сообщение ARP со своим новым IP-адре­сом, разумеется, в надежде, что ответа не будет. Если это так, тран­закция DHCP завершается и клиент переходит в связанное (bound) состояние. Если же на IP-адрес откликнулась другая система, клиент передает серверу сообщение DHCPDECLINE, тем самым аннулируя транзакцию. После этого клиенту не остается ничего другого, как снова заняться рассылкой сообщений DHCPDISCOVER.