DHCP

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
DHCP
Название Dynamic Host Configuration Protocol
Уровень (по модели OSI) Прикладной [1]
Семейство TCP/IP
Создан в 1990
Порт/ID 67, 68/UDP
Назначение протокола Получение сетевой конфигурации
Спецификация RFC 2131
Основные реализации (клиенты) ISC DHCP, ядро Windows
Основные реализации (серверы) dhcpd, ISC DHCP Server, dnsmasq
Логотип Викисклада Медиафайлы на Викискладе

DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической настройки узла) — сетевой протокол, позволяющий сетевым устройствам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP. Данный протокол работает по модели «клиент-сервер». Для автоматической конфигурации компьютер-клиент на этапе конфигурации сетевого устройства обращается к так называемому серверу DHCP и получает от него нужные параметры. Сетевой администратор может задать диапазон адресов, распределяемых сервером среди компьютеров. Это позволяет избежать ручной настройки компьютеров сети и уменьшает количество ошибок. Протокол DHCP используется в большинстве сетей TCP/IP.

DHCP является расширением протокола BOOTP, использовавшегося ранее для обеспечения бездисковых рабочих станций IP-адресами при их загрузке. DHCP сохраняет обратную совместимость с BOOTP и, как и BOOTP, использует порт UDP/67 на стороне сервера и порт UDP/68 на стороне клиента.

Стандарт протокола DHCP был принят в октябре 1993 года. Действующая версия протокола (март 1997 года) описана в RFC 2131. Новая версия DHCP, предназначенная для использования в среде IPv6, носит название DHCPv6 и определена в RFC 3315 (июль 2003 года).

Распределение IP-адресов

[править | править код]

Протокол DHCP предоставляет три способа распределения IP-адресов:

  • Ручное распределение. При этом способе сетевой администратор сопоставляет аппаратному адресу (для Ethernet-сетей это MAC-адрес) каждого клиентского компьютера определённый IP-адрес. Фактически данный способ распределения адресов отличается от ручной настройки каждого компьютера лишь тем, что сведения об адресах хранятся централизованно (на сервере DHCP), и потому их проще изменять при необходимости.
  • Автоматическое распределение. При данном способе каждому компьютеру на постоянное использование выделяется произвольный свободный IP-адрес из определённого администратором диапазона.
  • Динамическое распределение. Этот способ аналогичен автоматическому распределению за исключением того, что адрес выдаётся компьютеру не на постоянное пользование, а на определённый срок. Это называется арендой адреса. По истечении срока аренды IP-адрес вновь считается свободным, и клиент обязан запросить новый (он, впрочем, может оказаться тем же самым). Кроме того, клиент сам может отказаться от полученного адреса.

Некоторые реализации службы DHCP способны автоматически обновлять записи DNS, соответствующие клиентским компьютерам, при выделении им новых адресов. Это производится при помощи протокола обновления DNS, описанного в RFC 2136.

Помимо IP-адреса, DHCP также может сообщать клиенту дополнительные параметры, необходимые для нормальной работы в сети. Эти параметры называются опциями DHCP. Список стандартных опций можно найти в RFC 2132.

Поле опций имеет переменную длину, однако DHCP-клиент должен быть готов принять DHCP-сообщение длиной в 576 байт (в этом сообщении поле options имеет длину 340 байт).

Поле опций начинается с «волшебного числа» — четырёх байт со значениями 99, 130, 83, 99 (0x63, 0x82, 0x53, 0x63 в шестнадцатиричной системе), позволяющие серверу определить наличие этого поля.

Каждая опция кодируется последовательностью «код» (один байт), «длина» (один байт), «значение» — поле переменной длины, размер которого равен значению поля «длина», в том числе может быть нулевым.

Исключения сделаны для двух кодов:

  • код 0 — используются для выравнивания. После него отсутствует поле «длина»
  • код 255 (0xFF) — означает конец списка опций. Этот код обязательно должен присутствовать последним. За ним также не следует поле «длина»
Список опций DHCP
Код Длина Описание
0 (отсутствует) используется для заполнения и выравнивания данных
1 4 Маска подсети
2 4 Часовой пояс, число со знаком, смещение от UTC в секундах.
3 4 * n Список шлюзов, в порядке предпочтения.
4 4 * n Список серверов времени Time Protocol[англ.]
5 4 * n Список серверов имён IEN 116.
6 4 * n Список серверов DNS
7 4 * n Список лог-серверов (MIT-LCS UDP)
8 4 * n Список cookie-серверов (RFC 865)
9 4 * n Список LPR-серверов (RFC 1179)
10 4 * n Список серверов Imagen Impress
11 4 * n Список серверов обнаружения ресурсов (RFC 887)
12 n Хост-имя клиента, строка.
13 2 Размер (в 512-октетных блоках) загрузочного образа для клиента
14 n Путь файла, где клиент сохраняет дамп при сбоях
15 n Имя домена
16 4 Swap-сервер
17 n Путь корневого каталога для клиента.
18 n Путь расширений BOOTP
19 1 Должен ли клиент включить IP форвардинг (принимает значение 1 или 0)
20 1 Должен ли клиент включить форвардинг датаграмм из нелокальных источников (принимает значение 1 или 0)
21 8 * n Список допустимых адресов сетей и масок для нелокальных источников
22 2 Максимальный размер датаграммы (минимальное значение 576)
23 1 Значение TTL для IP по-умолчанию
24 4 Таймаут (в секундах) устаревания значений Path MTU (RFC 1191)
25 2 * n Список значений MTU при выполнении Path MTU Discovery (RFC 1191)
26 2 Значение MTU для данного интерфейса (минальное значение 68)
27 1 Признак, что все подсети используют текущую конфигурацию MTU (принимает значение 0 или 1)
28 4 Широковещательный адрес
29 1 Признак, должен ли клиент запросить маску подсети посредством ICMP (принимает значение 0 или 1)
30 1 Признак, должен ли клиент отвечать на запросы маски посредством ICMP (принимает значение 0 или 1)
31 1 Признак, должен ли клиент запрашивать роутеры используя механизм RFC 1256 (принимает значение 0 или 1)
32 4 Адрес, на который клиент должен направлять запросы роутеров
33 8 * n Статичный список маршрутизации, состоит из пар «адрес назначения» — «адрес роутера».
34 1 Признак допустимости использования трейлеров при запросах ARP (принимает значение 0 или 1)
35 4 Таймаут кэша ARP, в секундах.
36 1 Признак необходимости использования инкапсуляции IEEE 802.3 (RFC 1042) вместо Ethernet Version 2 (RFC 894) (принимает значение 0 или 1)
37 1 Значение TTL для TCP по-умолчанию
38 4 Интервал времени (в секундах) перед отправкой пакета Keepalive
39 1 Признак, должны ли запросы Keepalive отправляться с дополнительным мусорным октетом (принимает значение 0 или 1)
40 n Имя домена NIS (строка)
41 4 * n Список серверов NIS
42 4 * n Список серверов времени NTP
43 n Специфичная для поставщика информация
44 4 * n Список серверов имён (NBNS) NetBIOS
45 4 * n Список серверов распределения датаграмм (NBDD) NetBIOS
46 1 Тип узла NetBIOS: 0x1 - B-node; 0x2 - P-node; 0x4 - M-node; 0x8 - H-node
47 n Область NetBIOS
48 4 * n Список серверов X Window System Font
49 4 * n Список адресов X Window System Display
50 4 Запрашиваемый IP-адрес
51 4 Время аренды IP-адреса, в секундах
52 1 Признак использования полей 'file' (1) и 'sname' (2) или обоих (3) для опций
53 1 Тип сообщения DHCP (1 — DHCPDISCOVER; 2 — DHCPOFFER; 3 — DHCPREQUEST; 4 — DHCPDECLINE; 5 — DHCPACK; 6 — DHCPNAK; 7 — DHCPRELEASE; 8 — DHCPINFORM)
54 4 Идентификатор DHCP сервера
55 n Список запрашиваемых параметров (каждый байт - код параметра)
56 n Текстовое сообщение об ошибке (строка)
57 2 Максимальный размер сообщения DHCP. Минимальное значение 576
58 4 Время T1, до обновления IP адреса (в секундах)
59 4 Время T2, до перепривязки (в секундах)
60 n Идентификатор типа поставщика (строка)
61 n Идентификатор клиента (строка)
64 n Имя домена NIS+
65 4 * n Список серверов NIS+
66 n Имя сервера TFTP (строка), если поле 'sname' используется для опций
67 n Имя загрузочного файла (строка), если поле 'file' используется для опций
68 4 * n Список адресов Mobile IP Home Agent
69 4 * n Список серверов SMTP
70 4 * n Список серверов POP3
71 4 * n Список серверов NNTP
72 4 * n Список WWW серверов
73 4 * n Список серверов Finger
74 4 * n Список серверов IRC
75 4 * n Список серверов StreetTalk
76 4 * n Список серверов StreetTalk Directory Assistance
108 4 CLAT в сеть IPv6-only используя NAT64 (работает на iOS, MacOS, Android) для совместимости со старыми legacy приложениями согласно RFC8925
255 (отсутствует) Конец списка опций




Некоторыми из наиболее часто используемых опций являются:

Некоторые поставщики программного обеспечения могут определять собственные, дополнительные опции DHCP.

Устройство протокола

[править | править код]

Протокол DHCP является клиент-серверным, то есть в его работе участвуют клиент DHCP и сервер DHCP. Передача данных производится при помощи протокола UDP. По умолчанию запросы от клиента делаются к серверу на порт 67, сервер в свою очередь отвечает клиенту на порт 68, выдавая адрес IP и другую необходимую информацию, такую, как сетевую маску, маршрутизатор и серверы DNS.

Структура сообщений DHCP

[править | править код]

Все сообщения протокола DHCP разбиваются на поля, каждое из которых содержит определённую информацию. Все поля, кроме последнего (поля опций DHCP), имеют фиксированную длину.

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

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

[править | править код]

Рассмотрим пример процесса получения IP-адреса клиентом от сервера DHCP. Предположим, клиент ещё не имеет собственного IP-адреса, но ему известен свой предыдущий адрес — 192.168.1.100. Процесс состоит из четырёх этапов. Эти этапы часто сокращаются как DORA (Discovery, Offer, Request, и Acknowledgement)

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

[править | править код]

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

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

  • В поле xid помещается уникальный идентификатор транзакции, который позволяет отличать данный процесс получения IP-адреса от других, протекающих в то же время.
  • В поле chaddr помещается аппаратный адрес (MAC-адрес) клиента.
  • В поле опций указывается последний известный клиенту IP-адрес. В данном примере это 192.168.1.100. Это необязательно и может быть проигнорировано сервером.

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

Не всегда процесс получения IP-адреса начинается с DHCPDISCOVER. В случае, если клиент ранее уже получал IP-адрес и срок его аренды ещё не прошёл — клиент может пропустить стадию DHCPDISCOVER, начав с запроса DHCPREQUEST, отправляемого с идентификатором сервера, который выдал адрес в прошлый раз. В случае же отсутствия ответа от DHCP-сервера, выдавшего настройки в прошлый раз, клиент отправляет DHCPDISCOVER. Тем самым клиент начинает процесс получения с начала, обращаясь уже ко всем DHCP-серверам в сегменте сети.

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

[править | править код]

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

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

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

Этот же запрос используется, когда время аренды адреса подходит к концу, для продления времени (renewing) или процедуры перепривязки (rebinding). В этих случаях опции «идентификатор сервера» и «запрошенный IP-адрес» не указываются, а поле ciaddr заполняется ранее назначенным адресом клиента. В случае продления времени запрос отправляется не широковещательно, а адресно на выдавший сервер. Только если сервер не отвечает в течение отведённого времени, инициируется процедура перепривязки с широковещательными запросами.

Также запрос используется для инициализации после перезагрузки клиента (init-reboot), когда ему уже известен ранее назначенный адрес. В таком случае DHCPDISCOVER не выполняется, а сразу отсылается широковещательный DHCPREQUEST без указания опции «идентификатор сервера», но с известным адресом в опции «запрошенный IP-адрес». Поле ciaddr остаётся пустым.

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

[править | править код]

Наконец, сервер подтверждает запрос и направляет подтверждение DHCPACK (значение опции «Тип сообщения» — 5) клиенту. После этого клиент должен настроить свой сетевой интерфейс, используя предоставленные опции.

Вид сообщений

[править | править код]

Ниже приведены примеры значений каждого поля для каждого из отправляемых в процессе сообщений DHCP. В примере устройство с MAC-адресом 00:1D:60:57:ED:80 запрашивает у DHCP сервера IP-адрес. Клиент высылает свой последний известный IP-адрес 192.168.1.100 в качестве предлагаемого

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

MAC-адрес: Src=00:1D:60:57:ED:80; Dest=FF:FF:FF:FF:FF:FF

IP-адрес: Src=0.0.0.0, Dest=255.255.255.255

Порт UDP: Src=68, Dest=67

OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x001D6057

0xED800000

0x00000000

0x00000000

SNAME
(пустое поле, 64 октета)
FILE
(пустое поле, 128 октетов)
OPTIONS
«Волшебное число» (0x63825363)
Опция DHCP 53: 1 — обнаружение DHCP (0x350101)
Опция DHCP 50: запрос адреса 192.168.1.100 (0x3204C0A80164)
Опция DHCP 255: Маркер конца (0xFF)
Предложение DHCP
DHCPOFFER

MAC-адрес: Src=MAC отправителя; Dest=00:1D:60:57:ED:80[2]

IP-адрес: Src=192.168.1.1, Dest=192.168.1.100[2]

Порт UDP: Src=67, Dest=68

OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0xC0A80164 (192.168.1.100)
SIADDR
0xC0A80101 (192.168.1.1)[3]
GIADDR
0x00000000
CHADDR
0x001D6057

0xED800000

0x00000000

0x00000000

SNAME
(пустое поле, 64 октета)
FILE
(пустое поле, 128 октетов)
OPTIONS
«Волшебное число» (0x63825363)
Опция DHCP 53: 2 — предложение DHCP (0x350102)
Опция DHCP 1: маска подсети 255.255.255.0 (0x0104FFFFFF00)
Опция DHCP 28: Широковещательный адрес 192.168.1.255(0x1C04C0A801FF)
Опция DHCP 3: маршрутизатор 192.168.1.1 (0x0304C0A80101)
Опция DHCP 6 DNS-сервер 192.168.1.1(0x0604C0A80101)
Опция DHCP 51: срок аренды IP-адреса — 1 день (0x330400015180)
Опция DHCP 54: DHCP-сервер 192.168.1.1 (0x3604C0A80101)
Опция DHCP 255: Маркер конца (0xFF)
Запрос DHCP
DHCPREQUEST

MAC-адрес: Src=00:1D:60:57:ED:80; Dest=FF:FF:FF:FF:FF:FF[4]

IP-адрес: Src=0.0.0.0, Dest=255.255.255.255[4]

Порт UDP: Src=68, Dest=67

OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x001D6057

0xED800000

0x00000000

0x00000000

SNAME
(пустое поле, 64 октета)
FILE
(пустое поле, 128 октетов)
OPTIONS
«Волшебное число» (0x63825363)
Опция DHCP 53: 3 — запрос DHCP (0x350103)
Опция DHCP 50: запрос адреса 192.168.1.100 (0x3204C0A80164)
Опция DHCP 54: DHCP-сервер 192.168.1.1 (0x3404C0A80101)
Опция DHCP 255: Маркер конца (0xFF)
Подтверждение DHCP
DHCPACK

MAC-адрес: Src=MAC отправителя; Dest=00:1D:60:57:ED:80[2]

IP-адрес: Src=192.168.1.1, Dest=192.168.1.100[2]

Порт UDP: Src=67, Dest=68

OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0xC0A80164 (192.168.1.100)
SIADDR
0xC0A80101 (192.168.1.1)[3]
GIADDR
0x00000000
CHADDR
0x001D6057

0xED800000

0x00000000

0x00000000

SNAME
(пустое поле, 64 октета)
FILE
(пустое поле, 128 октетов)
OPTIONS
«Волшебное число» (0x63825363)
Опция DHCP 53: 5 — подтверждение DHCP (0x350105)
Опция DHCP 1: маска подсети 255.255.255.0 (0x0104FFFFFF00)
Опция DHCP 28: Широковещательный адрес 192.168.1.255(0x1C04C0A801FF)
Опция DHCP 3: маршрутизатор 192.168.1.1 (0x0304C0A80101)
Опция DHCP 6 DNS-сервер 192.168.1.1(0x0604C0A80101)
Опция DHCP 51: срок аренды IP-адреса — 1 день (0x330400015180)
Опция DHCP 54: DHCP-сервер 192.168.1.1 (0x3604C0A80101)
Опция DHCP 255: Маркер конца (0xFF)

Прочие сообщения DHCP

[править | править код]

Помимо сообщений, необходимых для первоначального получения IP-адреса клиентом, DHCP предусматривает несколько дополнительных сообщений для выполнения иных задач.

Если после получения подтверждения (DHCPACK) от сервера клиент обнаруживает, что указанный сервером адрес уже используется в сети, он рассылает широковещательное сообщение отказа DHCPDECLINE (значение опции «Тип сообщения» — 4), после чего процедура получения IP-адреса повторяется. Использование IP-адреса другим клиентом можно обнаружить, выполнив запрос ARP.

В ситуациях, когда сервер не может назначить клиенту запрошенный адрес, например, если при выполнении DHCPREQUEST в опции «запрошенный IP-адрес» от клиента передано неверное значение, сервер отправляет широковещательное сообщение отмены DHCPNAK (значение опции «Тип сообщения» — 6). При получении такого сообщения соответствующий клиент должен повторить процедуру получения адреса.

Освобождение DHCP

[править | править код]

Клиент может явным образом прекратить аренду IP-адреса. Для этого он отправляет сообщение освобождения DHCPRELEASE (значение опции «Тип сообщения» — 7) тому серверу, который предоставил ему адрес в аренду. В отличие от других сообщений DHCP, DHCPRELEASE не рассылается широковещательно.

Информация DHCP

[править | править код]

Сообщение информации DHCPINFORM (значение опции «Тип сообщения» — 8) предназначено для определения дополнительных параметров TCP/IP (например, адреса маршрутизатора по умолчанию, DNS-серверов и т. п.) теми клиентами, которым не нужен динамический IP-адрес (то есть адрес которых настроен вручную). Серверы отвечают на такой запрос сообщением подтверждения (DHCPACK) без выделения IP-адреса.

Продление времени аренды и перепривязка

[править | править код]

При отправке сообщений DHCPOFFER и DHCPACK в ответ на DHCPREQUEST сервер заполняет значение опции 51 «Время аренды», 32-битное значение, выражающее относительное время в секундах, на которое IP-адрес предоставляется клиенту.

Опционально сервер сообщает значения двух дополнительных интервалов времени T1 и T2 в опциях 58 и 59, соответственно. Если эти опции не указаны, то клиент вычисляет T1, равное 1/2 от времени аренды, и T2, равное 7/8 от времени аренды.

По истечении времени T1 клиент переходит в состояние обновления времени аренды (renewing) и предпринимает попытку продлить аренду IP-адреса, посылая адресный (unicast) запрос DHCPREQUEST серверу, указывая свой адрес в поле ciaddr, не передавая при этом опции «идентификатор сервера» и «запрошенный IP-адрес». На этот запрос сервер отвечает DHCPACK, указывая новый интервал аренды относительно текущего времени.

Если сервер не отвечает, то повторные попытки отправки запроса предпринимаются по истечении половины времени, оставшегося до T2, но не менее чем через 60 секунд.

Клиент может запросить продление аренды и до истечения интервала T1.


Если по истечении времени T2 ответ от сервера так и не был получен, то клиент переходит в состояние перепривязки (rebinding). В этом случае клиент начинает отправлять широковещательно аналогичные запросы DHCPREQUEST, также при необходимости повторяя попытки отправки после истечения половины оставшегося до завершения аренды времени, но не быстрее, чем через 60 секунд.

До истечения времени аренды, даже при истечении T1 и T2, клиент продолжает пользоваться назначенным IP-адресом как и прежде. Но при истечении времени аренды клиент должен прекратить сетевую активность и пытаться получить новый адрес, начиная с запроса DHCPDISCOVER.

Реализации

[править | править код]

Компания Microsoft впервые включила сервер DHCP в поставку серверной версии Windows NT 3.5, выпущенной в 1994 году. Начиная с Windows 2000 Server реализация DHCP-сервера от Microsoft позволяет динамически обновлять записи DNS, что используется в Active Directory.

Internet Systems Consortium выпустил первую версию ISC DHCP Server (для Unix-подобных систем) 6 декабря 1997 года. 22 июня 1999 года вышла версия 2.0, более точно соответствующая стандарту.

Компания Cisco включила сервер DHCP в Cisco IOS 12.0 в феврале 1999 года. Sun добавила DHCP-сервер в Solaris 8 в июле 2001 года.

В настоящее время существуют реализации сервера DHCP для ОС Windows в виде отдельных программ, в том числе открытых[5], позволяющих выполнять роль сервера DHCP компьютерам под управлением несерверных версий данной ОС.

Примечания

[править | править код]
  1. Network Sorcery - DHCP, Dynamic Host Configuration Protocol. Дата обращения: 6 января 2014. Архивировано 30 июля 2013 года.
  2. 1 2 3 4 DHCP-сервер в ответ на запросы DHCPDISCOVER и DHCPREQUEST обычно рассылает адресованные (Unicast) сообщения, указывая в качестве IP-адреса клиента предложенный IP адрес. Однако, если по каким-то причинам клиент, пока конфигурация его собственного адреса не завершена, не может обработать подобные сообщения, то в запросах DHCPDISCOVER и DHCPREQUEST клиент может указать старший бит в поле FLAGS (значение 0x8000). В таком случае сервер будет рассылать широковещательные ответы на IP-адрес 255.255.255.255 и MAC-адрес FF:FF:FF:FF:FF:FF. Клиент должен отфильтровать пакеты, предназначенные ему, анализируя соответствие поля CHADDR в ответах сервера свому MAC-адресу.
  3. 1 2 В поле siaddr сервер указывает адрес следующего сервера, используемого для процесса загрузки (bootstrap) клиента. Часто серверы указывают свой собственный адрес. Значение этого поля не должно использоваться для идентификации сервера. Вместо этого используется опция 54
  4. 1 2 Хотя на данном этапе клиенту известен MAC- и IP-адреса сервера, при начальном получении адреса, после перезагрузки устройства и в состоянии перепривязки (rebinding) запрос DHCPREQUEST рассылается широковещательным. Если в сети присутствуют несколько DHCP-серверов, клиент выбирает DHCPOFFER только одного из них, широковещательная отправка DHCPREQUEST с указанием адреса нужного сервера в опции 54 сообщит остальным серверам, что предложенные ими адреса были отклонены. Однако, когда происходит обновление адреса (renewing), по истечении времени T1, DHCPREQUEST отсылается Unicast-запросом, на адрес сервера, выдавшего IP-адрес.
  5. Страница программы Dual DHCP DNS Server на Sourceforge. Дата обращения: 16 марта 2011. Архивировано 14 марта 2011 года.