DHCP

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
DHCP
Название:

Dynamic Host Configuration Protocol

Уровень (по модели OSI):

Прикладной [1]

Семейство:

TCP/IP

Создан в:

1990 г.

Порт/ID:

67, 68/UDP

Назначение протокола:

Получение сетевой конфигурации

Спецификация:

RFC 2131

Основные реализации (клиенты):

ISC DHCP, ядро Windows

Основные реализации (серверы):

dhcpd, ISC DHCP Server, Infoblox

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

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

История[править | править вики-текст]

Стандарт протокола 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.

Опции DHCP[править | править вики-текст]

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

Опции – строки переменной длины, состоящие из октетов. Первый октет - код опции, второй октет – количество следующих октетов, остальные октеты зависят от кода опции.

Например, опция “DHCP Message Type”  при отправке  сообщения  “Offer” будет выглядеть так : 0x35,0x01,0x02, где  0x35 – код опции “DHCP Message Type”  , 0x01 – означает, что далее идет только один октет, 0x02 – значение  “Offer”.

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

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

В следующих таблицах перечислены доступные  DHCP опции, как указано в RFC2132:

RFC1497 расширения поставщиков программного обеспечения.

Код Название Длина Примечание

0

Pad

0 октетов

Используется для дополнения других опций, чтобы они выравнивались по границе слова.

1

Subnet Mask

4 октета

Должн быть отправлен после  опции “router” (опция 3), если оба включены.

2

Time Offset

4 октета

3

Router

кратное 4 октетам

Доступные маршрутизаторы  должны быть перечислены в порядке предпочтения.

4

Time Server

кратное 4 октетам

Доступные серверы  для синхронизации  должны быть перечислены в порядке предпочтения.

5

Name Server

кратное 4 октетам

Доступные IEN 116 – имена серверов, должны быть перечислены в порядке предпочтения.    

6

Domain Name Server

кратное 4 октетам

Доступные DNS-сервера должны быть перечислены в порядке предпочтения.

7

Log Server

кратное 4 октетам

Доступные Log–сервера должны быть перечислены в порядке предпочтения.

8

Cookie Server

кратное 4 октетам

9

LPR Server

кратное 4 октетам

10

Impress Server

кратное 4 октетам

11

Resource Location Server

кратное 4 октетам

12

Host Name

минимум 1 октет

13

Boot File Size

2 октета

Длина загрузочного образа в 4-килобайтных блоках.

14

Merit Dump File

минимум 1 октет

Путь до места хранения аварийных дампов.

15

Domain Name

минимум 1 октет

16

Swap Server

4 октета

17

Root Path

минимум 1 октет

18

Extensions Path

минимум 1 октет

255

End

0 октетов

Используется для обозначения конца поля.

Параметры IP-уровня  клиента.

Код Название Длина Примечание

19

IP Forwarding Enable/Disable

1 октет

20

Non-Local Source Routing Enable/Disable

1 октет

21

Policy Filter

Кратное 8 октетам

22

Maximum Datagram Reassembly Size

2 октета

23

Default IP Time-to-live

1 октет

24

Path MTU Aging Timeout

4 октета

25

Path MTU Plateau Table

Кратное 2 октетам

Параметры интерфейса Ip-уровня.

Код Название Длина Примечание

26

Interface MTU

2

27

All Subnets are Local

1

28

Broadcast Address

4

29

Perform Mask Discovery

1

30

Mask Supplier

1

31

Perform Router Discovery

1

32

Router Solicitation Address

4

33

Static Route

Кратно 8 октетам

Параметры  интерфейса  уровня связи.

Код Название Длина Примечание

34

Trailer Encapsulation Option

1

35

ARP Cache Timeout

4

36

Ethernet Encapsulation

1

TCP –параметры.

Код Название Длина Примечание

37

TCP Default TTL

1

38

TCP Keepalive Interval

4

39

TCP Keepalive Garbage

1

Параметры сервисов и приложений.

Код Название Длина Примечание

40

Network Information Service Domain

минимум 1 октет

41

Network Information Servers

кратное 4 октетам

42

Network Time Protocol Servers

кратное 4 октетам

43

Vendor Specific Information

минимум 1 октет

44

NetBIOS over TCP/IP Name Server

кратное 4 октетам

45

NetBIOS over TCP/IP Datagram Distribution Server

кратное 4 октетам

46

NetBIOS over TCP/IP Node Type

1

47

NetBIOS over TCP/IP Scope

минимум 1 октет

48

X Window System Font Server

кратное 4 октетам

49

X Window System Display Manager

кратное 4 октетам

64

Network Information Service+ Domain

минимум 1 октет

65

Network Information Service+ Servers

кратное 4 октетам

68

Mobile IP Home Agent

кратное 4 октетам

69

Simple Mail Transport Protocol (SMTP) Server

кратное 4 октетам

70

Post Office Protocol (POP3) Server

кратное 4 октетам

71

Network News Transport Protocol (NNTP) Server

кратное 4 октетам

72

Default World Wide Web (WWW) Server

кратное 4 октетам

73

Default Finger Server

кратное 4 октетам

74

Default Internet Relay Chat (IRC) Server

кратное 4 октетам

75

StreetTalk Server

кратное 4 октетам

76

StreetTalk Directory Assistance (STDA) Server

кратное 4 октетам

DHCP – расширения.

Код Название Длина Примечание

50

Requested IP address

4

51

IP address Lease Time

4

52

Option Overload

1

53

DHCP Message Type

1

54

Server Identifier

4

55

Parameter Request List

минимум 1 октет

56

Message

минимум 1 октет

57

Maximum DHCP Message Size

2

58

Renewal (T1) Time Value

4

59

Rebinding (T2) Time Value

4

60

Vendor class identifier

минимум 1 октет

61

Client-identifier

минимум 2 октета

66

TFTP server name

минимум 1 октет

67

Bootfile name

минимум 1 октет

Идентификация поставщика.[править | править вики-текст]

Опция существует, чтобы определить поставщика и функциональность клиента DHCP.  Информация представляется строкой переменной длины, состоящей из символов или октетов,  которые имеют значение, указанное поставщиком клиента DHCP. Один из методов позволяет DHCP клиенту  оповещать сервер о том, что он использует определенный тип низкоуровневого обеспечения или прошивки для заполнения  опции  Vendor Class Identifier(VCI)(опция 60). Этот метод позволяет различать запросы клиентских машин и процессов.  Значение  опции VCI дает DHCP-серверу подсказку о любой необходимой дополнительной информации, которую необходимо отправить клиенту в ответ.

Устройство протокола[править | править вики-текст]

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

Структура сообщений DHCP[править | править вики-текст]

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

Поле Описание Длина (в байтах)
op Тип сообщения. Например может принимать значения: BOOTREQUEST (1, запрос от клиента к серверу) и BOOTREPLY (2, ответ от сервера к клиенту). 1
htype Тип аппаратного адреса. Допустимые значения этого поля определены в RFC1700 «Assigned Numbers». Например, для MAC-адреса Ethernet 10 Мбит/с это поле принимает значение 1. 1
hlen Длина аппаратного адреса в байтах. Для MAC-адреса Ethernet — 6. 1
hops Количество промежуточных маршрутизаторов (так называемых агентов ретрансляции DHCP), через которые прошло сообщение. Клиент устанавливает это поле в 0. 1
xid Уникальный идентификатор транзакции, генерируемый клиентом в начале процесса получения адреса. 4
secs Время в секундах с момента начала процесса получения адреса. Может не использоваться (в этом случае оно устанавливается в 0). 2
flags Поле для флагов — специальных параметров протокола DHCP. 2
ciaddr IP-адрес клиента. Заполняется только в том случае, если клиент уже имеет собственный IP-адрес и способен отвечать на запросы ARP (это возможно, если клиент выполняет процедуру обновления адреса по истечении срока аренды). 4
yiaddr Новый IP-адрес клиента, предложенный сервером. 4
siaddr IP-адрес сервера. Возвращается в предложении DHCP (см. ниже). 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. Процесс состоит из четырёх этапов.

Обнаружение DHCP[править | править вики-текст]

Вначале клиент выполняет широковещательный запрос по всей физической сети с целью обнаружить доступные DHCP-серверы. Он отправляет сообщение типа DHCPDISCOVER, при этом в качестве 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), в котором предлагает конфигурацию. Предлагаемый клиенту IP-адрес указывается в поле yiaddr. Прочие параметры (такие, как адреса маршрутизаторов и DNS-серверов) указываются в виде опций в соответствующем поле.

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

Запрос DHCP[править | править вики-текст]

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

Подтверждение DHCP[править | править вики-текст]

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

Вид сообщений[править | править вики-текст]

Ниже приведены значения каждого поля для каждого из отправляемых в процессе сообщений DHCP.

Обнаружение DHCP
DHCPDISCOVER
UDP Src=0.0.0.0 Dest=255.255.255.255
OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0xC0A80164
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(пустое поле)
FILE
(пустое поле)
OPTIONS
Опция DHCP 53: обнаружение DHCP
Опция DHCP 50: запрос адреса 192.168.1.100
Предложение DHCP
DHCPOFFER
UDP Src=192.168.1.1 Dest=255.255.255.255
OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0xC0A80164
SIADDR
0xC0A80101
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(пустое поле)
FILE
(пустое поле)
OPTIONS
Опция DHCP 53: предложение DHCP
Опция DHCP 1: маска подсети 255.255.255.0
Опция DHCP 3: маршрутизатор 192.168.1.1
Опция DHCP 51: срок аренды IP-адреса — 1 день
Опция DHCP 54: DHCP-сервер 192.168.1.1
Запрос DHCP
DHCPREQUEST
UDP Src=0.0.0.0 Dest=255.255.255.255
OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0xC0A80164
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(пустое поле)
FILE
(пустое поле)
OPTIONS
Опция DHCP 53: запрос DHCP
Опция DHCP 50: запрос адреса 192.168.1.100
Опция DHCP 54: DHCP-сервер 192.168.1.1
Подтверждение DHCP
DHCPACK
UDP Src=192.168.1.1 Dest=255.255.255.255
OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0xC0A80164
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(пустое поле)
FILE
(пустое поле)
OPTIONS
Опция DHCP 53: подтверждение DHCP
Опция DHCP 1: маска подсети 255.255.255.0
Опция DHCP 3: маршрутизатор 192.168.1.1
Опция DHCP 51: срок аренды IP-адреса — 1 день
Опция DHCP 54: DHCP-сервер 192.168.1.1

Прочие сообщения DHCP[править | править вики-текст]

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

Отказ DHCP[править | править вики-текст]

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

Сообщение отмены DHCP (DHCPNAK). При получении такого сообщения соответствующий клиент должен повторить процедуру получения адреса.

Освобождение DHCP[править | править вики-текст]

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

Информация DHCP[править | править вики-текст]

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

Реализации[править | править вики-текст]

Компания 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 в виде отдельных программ, в том числе открытых[2], позволяющих выполнять роль сервера DHCP компьютерам под управлением не серверных версий данной ОС.

Примечания[править | править вики-текст]

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]