Протокол динамического конфигурирования ЭВМ DHCP
Сообщение DHCPREQUEST
Сообщение DHCPREQUEST может прийти от клиента, реагирующего на сообщение сервера DHCPOFFER, от клиента, верифицирующего ранее выделенный IP-адрес, или от клиента, расширяющего время действия конфигурационного набора. Если сообщение DHCPREQUEST содержит опцию server identifier, то это отклик на сообщение DHCPOFFER. В противном случае, сообщение является запросом верификации или расширения времени действия набора. Если клиент использует client identifier в сообщении DHCPREQUEST, он должен применять его во всех последующих сообщениях. Если клиент включил список запрашиваемых параметров в сообщение DHCPDISCOVER, он должен включить этот список во все последующие сообщения. Любые конфигурационные параметры в сообщении DHCPACK не должны конфликтовать с полученными ранее в сообщении DHCPOFFER. Клиент должен использовать для конфигурации параметры из сообщения DHCPACK. Клиенты посылают сообщения DHCPREQUEST следующим образом.
- DHCPREQUEST, сформированный в состоянии SELECTING
Клиент вводит адрес выбранного сервера server identifier, ciaddr должен быть равен нулю, в запрошенный IP-адрес должно быть записано значение yiaddr, взятое из DHCPOFFER.
Заметим, что клиент может собрать несколько сообщений DHCPOFFER и выбрать наилучшее предложение. Клиент определяет свой выбор путем идентификации сервера в сообщении DHCPREQUEST. Если клиент получает неприемлемые предложения, он может попробовать другое сообщение DHCPDISCOVER. Следовательно, серверы не могут получить DHCPREQUEST, из которого они могли бы решить, принял ли клиент данное предложение. Так как серверы не осуществили присвоение какого-либо сетевого адреса на основе DHCPOFFER, они вольны повторно использовать предложенные сетевые адреса в откликах на последующие запросы. Серверы не должны повторно использовать предложенные адреса и могут применить зависимый от реализации механизм таймаутов в процессе принятия решения о повторном использовании предложенных адресов.
- DHCPREQUEST генерируется в состоянии INITREBOOT
Поле server identifier не должно быть заполнено, в опции запрошенный IP-адрес должен быть записан предшествующий адрес, присвоенный клиенту. ciaddr должен быть равен нулю. Клиент пытается верифицировать присвоенный ранее конфигурационный набор. Сервер должен клиенту послать сообщение DHCPNAK, если запрошенный IP-адрес некорректен или относится к неверной сети.
Определение того, находится ли клиент в состоянии INITREBOOT, осуществляется просмотром содержимого giaddr, опции запрошенный IP-адрес и базы данных. Если DHCP-сервер обнаружит, что клиент находится не в той сети (т.e., результат наложения локальной маски субсети или маски удаленной субсети (если giaddr не равно нулю) на опцию запрошенный IP-адрес выдает не реальный результат), тогда сервер должен послать клиенту сообщение DHCPNAK. Если с сетью все в порядке, тогда DHCP-сервер должен проверить, корректна ли запись клиента о его IP-адресе. Если нет, сервер должен послать клиенту сообщение DHCPNAK. Если DHCP-сервер не имеет записи об этом клиенте, тогда он должен оставаться пассивным и может выдать предупреждение сетевому администратору.
Если giaddr в сообщении DHCPREQUEST равен 0x0, клиент находится в той же субсети, что и сервер. Сервер должен широковещательно послать сообщение DHCPNAK по адресу 0xffffffff, так как клиент не может иметь корректный сетевой адрес или сетевую маску, и клиент не может откликаться на ARPзапросы.
Если в сообщении DHCPREQUEST установлен giaddr, клиент находится в другой субсети. Сервер должен установить широковещательный бит в DHCPNAK, агент отклика пошлет клиенту сообщение DHCPNAK широковещательно, так как клиент может не иметь корректного сетевого адреса или сетевой маски, и клиент может не откликаться на ARP-запросы.
Если DHCPREQUEST генерируется в состоянии RENEWING, то идентификатор сервера не должен быть заполнен, опция запрошенный IP-адрес не должна быть заполнена, в ciaddr должен быть записан IP-адрес клиента. В этой ситуации клиент полностью сконфигурирован и пытается расширить срок действия конфигурационного набора. Это сообщение будет послано по уникастному адресу, таким образом, в обмен не будет вовлечено никаких агентов транспортировки. Так как giaddr не заполнен, DHCP-сервер будет полагаться на значение ciaddr и использовать его при передаче данных клиенту.
Клиент может пожелать обновить или расширить время действия конфигурационного набора. Сервер может пожелать не расширять время действия (например, по решению сетевого администратора), но должен в любом случае откликнуться сообщением DHCPACK.
Сообщение DHCPDECLINE
Если сервер получает сообщение DHCPDECLINE, клиент каким-то образом обнаружил, что предлагаемый сетевой адрес уже используется. Сервер должен пометить сетевой адрес как недоступный и уведомить администратора системы о возможной конфигурационной проблеме.
Сообщение DHCPRELEASE
При получении сообщения DHCPRELEASE сервер помечает сетевой адрес как не присвоенный. Сервер должен хранить запись с конфигурационными параметрами клиента для возможного последующего использования при поступлении соответствующего запроса.
Сообщение DHCPINFORM
Сервер реагирует на сообщение DHCPINFORM посылкой сообщения DHCPACK непосредственно по адресу, записанному в поле ciaddr сообщения DHCPINFORM. Сервер не должен уведомлять клиента об истечении времени действия конфигурационного набора и не должен производить запись в yiaddr. Сервер включает в сообщение DHCPACK другие параметры.
Сообщения клиента
Таблица 6.4 характеризует различие между сообщениями клиента в различных состояниях.