Назначение полей DHCP-сообщения

Поле Описание Длина (в байтах)
op Тип сообщения. Может принимать два значения: BOOTREQUEST (1, запрос от клиента к серверу) и BOOTREPLY (2, ответ от сервера к клиенту).
htype Тип аппаратного адреса. Допустимые значения этого поля определены в RFC «Assigned Numbers». Например, для MAC-адреса Ethernet 10 Мбит/с это поле принимает значение 1.
hlen Длина аппаратного адреса в байтах. Для MAC-адреса Ethernet - 6.
hops Количество промежуточных маршрутизаторов (так называемых агентов ретрансляции DHCP), через которые прошло сообщение. Клиент устанавливает это поле в 0.
xid Уникальный идентификатор транзакции, генерируемый клиентом в начале процесса получения адреса.
secs Время в секундах с момента начала процесса получения адреса. Может не использоваться (в этом случае оно устанавливается в 0).
flags Поле для флагов - специальных параметров протокола DHCP.
ciaddr IP-адрес клиента. Заполняется только в том случае, если клиент уже имеет собственный IP-адрес и способен отвечать на запросы ARP (это возможно, если клиент выполняет процедуру обновления адреса по истечении срока аренды).
yiaddr Новый IP-адрес клиента, предложенный сервером.
siaddr IP-адрес сервера. Возвращается в предложении DHCP (см. ниже).
giaddr IP-адрес агента ретрансляции, если таковой участвовал в процессе доставки сообщения DHCP до сервера.
chaddr Аппаратный адрес (обычно MAC-адрес) клиента.
sname Необязательное имя сервера в виде нуль-терминированной строки.
file Необязательное имя файла на сервере, используемое бездисковыми рабочими станциями при удалённой загрузке. Как и sname, представлено в виде нуль-терминированной строки.
options Поле опций DHCP. Здесь указываются различные дополнительные параметры конфигурации. В начале этого поля указываются четыре особых байта со значениями 99, 130, 83, 99 («волшебные числа»), позволяющие серверу определить наличие этого поля. Поле имеет переменную длину, однако DHCP-клиент должен быть готов принять DHCP-сообщение длиной в 576 байт (в этом сообщении поле options имеет длину 340 байт). переменная

Процесс получения адреса

Рассмотрим пример процесса получения IP-адреса клиентом от сервера DHCP (рис. 4.2). Предположим, клиент ещё не имеет собственного IP-адреса, но ему известен его предыдущий адрес - 192.168.20.100. Процесс состоит из четырёх этапов.

Обнаружение DHCP.

Вначале клиент выполняет широковещательный запрос по всей физической сети с целью обнаружить доступные DHCP-серверы. Он отправляет сообщение типа DHCPDISCOVER, при этом в качестве IP-адреса источника указывается 0.0.0.0 (так как компьютер ещё не имеет собственного IP-адреса), а в качестве адреса назначения - широковещательный адрес 255.255.255.255.

Клиент заполняет несколько полей сообщения начальными значениями:

- В поле xid помещается уникальный идентификатор транзакции, который позволяет отличать данный процесс получения IP-адреса от других, протекающих в то же время.

- В поле chaddr помещается аппаратный адрес (MAC-адрес) клиента.

- В поле опций указывается последний известный клиенту IP-адрес. В данном примере это 192.168.20.100. Это необязательно и может быть проигнорировано сервером.

Сообщение DHCPDISCOVER может быть распространено за пределы локальной физической сети при помощи специально настроенных агентов ретрансляции DHCP, перенаправляющих поступающие от клиентов сообщения DHCP серверам в других подсетях.

Предложение DHCP

Получив сообщение от клиента, сервер определяет требуемую конфигурацию клиента в соответствии с указанными сетевым администратором настройками. В данном случае DHCP-сервер согласен с запрошенным клиентом адресом 192.168.20.100. Сервер отправляет ему ответ (DHCPOFFER), в котором предлагает конфигурацию. Предлагаемый клиенту IP-адрес указывается в поле yiaddr. Прочие параметры (такие, как адреса маршрутизаторов и DNS-серверов) указываются в виде опций в соответствующем поле.

Это сообщение DHCP-сервер отправляет хосту, пославшему DHCPDISCOVER, на его MAC-адрес, при определённых обстоятельствах сообщение может распространяться как широковещательная рассылка. Клиент может получить несколько различных предложений DHCP от разных серверов, из них он должен выбрать то, которое его «устраивает».

Запрос DHCP

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

Подтверждение DHCP

Наконец, сервер подтверждает запрос и направляет это подтверждение (DHCPACK) клиенту. После этого клиент должен настроить свой сетевой интерфейс, используя предоставленные опции.

Назначение полей DHCP-сообщения - №1 - открытая онлайн библиотека

Рис. 4.2. Пример динамического выделения адреса (пошагово 1,2,3,4).