DHCP — различия между версиями
(Новая страница: «==Алгоритм работы== right|Алгоритм получения IP адреса. * Клиент посылает в сво...») |
|||
Строка 1: | Строка 1: | ||
+ | [[Файл:Dhcp_model.png|right|DHCP в модели OSI и стеке TCP/IP.]] | ||
+ | |||
+ | '''DHCP''' (англ. ''Dynamic Host Configuration Protocol'' — протокол динамической настройки узла) — сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети. | ||
+ | |||
+ | Был предложен в 1993 г., и наиболее полное современное описание DHCP содержится в документе RFC 2131 (март 1997 г.). | ||
+ | |||
+ | DHCP является расширением протокола [[BOOTP]], использовавшегося ранее для обеспечения бездисковых рабочих станций IP-адресами при их загрузке, и сохраняет с ним обратную совместимость. | ||
+ | |||
+ | Цель DHCP {{---}} устранить два основных ограничения, накладывающихся на другие анагологичные протоколы, а именно: отсутствие поддержки динамического назначения IP-адресов и возможность передавать от сервера на станцию-клиент лишь небольшое число параметров конфигурации. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==Архитектура== | ||
+ | |||
+ | [[Файл:Dhcp_arch.png|left|Архитектура DHCP.]] | ||
+ | |||
+ | Работа протокола DHCP базируется на классической схеме '''клиент-сервер'''. | ||
+ | |||
+ | * В роли '''клиентов''' выступают компьютеры сети, стремящиеся получить IP-адреса в так называемую аренду ('''lease'''). | ||
+ | |||
+ | * '''DHCP-серверы''' выполняют функции диспетчеров, которые выдают адреса, контролируют их использование и сообщают клиентам требуемые параметры конфигурации. | ||
+ | |||
+ | Сервер поддерживает пул свободных адресов и, кроме того, ведет собственную регистрационную базу данных. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==Сообщения== | ||
+ | |||
+ | Взаимодействие DHCP-серверов с клиентами осуществляется путем обмена '''сообщениями'''. | ||
+ | |||
+ | Структура сообщения показана на рисунке, где в скобках указан размер поля в байтах. | ||
+ | |||
+ | Опишем подробнее поля: | ||
+ | |||
+ | [[Файл:Dhcp_message.gif|right|Сообщение DHCP.]] | ||
+ | |||
+ | {| class="wikitable" | ||
+ | !Поле | ||
+ | !Описание | ||
+ | |- | ||
+ | |op | ||
+ | |Тип сообщения (1 = BOOTREQUEST, 2 = BOOTREPLY) | ||
+ | |- | ||
+ | |htype | ||
+ | |Тип адреса оборудования | ||
+ | |- | ||
+ | |hlen | ||
+ | |Длина адреса оборудования | ||
+ | |- | ||
+ | |hops | ||
+ | |Используется ретранслирующим агентом | ||
+ | |- | ||
+ | |xid | ||
+ | |Идентификатор транзакции между сервером и клиентом | ||
+ | |- | ||
+ | |secs | ||
+ | |Время с момента выдачи DHCPREQUEST или начала обновления конфигурации | ||
+ | |- | ||
+ | |flags | ||
+ | |Флаги (первый бит маркирует широковещательные сообщения) | ||
+ | |- | ||
+ | |ciaddr | ||
+ | |IP-адрес клиента | ||
+ | |- | ||
+ | |yiaddr | ||
+ | |<Ваш> (клиентский) IP-адрес | ||
+ | |- | ||
+ | |siaddr | ||
+ | |IP-адрес следующего сервера, участвующего в загрузке | ||
+ | |- | ||
+ | |giaddr | ||
+ | |IP-адрес ретранслирующего агента | ||
+ | |- | ||
+ | |chaddr | ||
+ | |<Аппаратный> адрес клиента | ||
+ | |- | ||
+ | |sname | ||
+ | |Хост-имя сервера (опция) | ||
+ | |- | ||
+ | |file | ||
+ | |Имя загрузочного файла | ||
+ | |- | ||
+ | |options | ||
+ | |Поле дополнительных параметров | ||
+ | |} | ||
+ | |||
+ | В роли транспортного протокола для обмена DHCP-сообщениями выступает '''UDP'''. | ||
+ | * при отправке сообщения с клиента на сервер используется 67-й порт DHCP-сервера; | ||
+ | * при передаче в обратном направлении - 68-й. | ||
+ | |||
+ | Эти номера портов, как и схожая структура сообщений, обеспечивают обратную совместимость DHCP с BOOTP. Конкретные процедуры взаимодействия клиентов и серверов BOOTP и DHCP регламентирует документ RFC 1542. | ||
+ | |||
==Алгоритм работы== | ==Алгоритм работы== | ||
[[Файл:dhcp_algo.gif|right|Алгоритм получения IP адреса.]] | [[Файл:dhcp_algo.gif|right|Алгоритм получения IP адреса.]] |
Версия 19:32, 11 декабря 2016
DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической настройки узла) — сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети.
Был предложен в 1993 г., и наиболее полное современное описание DHCP содержится в документе RFC 2131 (март 1997 г.).
DHCP является расширением протокола BOOTP, использовавшегося ранее для обеспечения бездисковых рабочих станций IP-адресами при их загрузке, и сохраняет с ним обратную совместимость.
Цель DHCP — устранить два основных ограничения, накладывающихся на другие анагологичные протоколы, а именно: отсутствие поддержки динамического назначения IP-адресов и возможность передавать от сервера на станцию-клиент лишь небольшое число параметров конфигурации.
Архитектура
Работа протокола DHCP базируется на классической схеме клиент-сервер.
- В роли клиентов выступают компьютеры сети, стремящиеся получить IP-адреса в так называемую аренду (lease).
- DHCP-серверы выполняют функции диспетчеров, которые выдают адреса, контролируют их использование и сообщают клиентам требуемые параметры конфигурации.
Сервер поддерживает пул свободных адресов и, кроме того, ведет собственную регистрационную базу данных.
Сообщения
Взаимодействие DHCP-серверов с клиентами осуществляется путем обмена сообщениями.
Структура сообщения показана на рисунке, где в скобках указан размер поля в байтах.
Опишем подробнее поля:
Поле | Описание |
---|---|
op | Тип сообщения (1 = BOOTREQUEST, 2 = BOOTREPLY) |
htype | Тип адреса оборудования |
hlen | Длина адреса оборудования |
hops | Используется ретранслирующим агентом |
xid | Идентификатор транзакции между сервером и клиентом |
secs | Время с момента выдачи DHCPREQUEST или начала обновления конфигурации |
flags | Флаги (первый бит маркирует широковещательные сообщения) |
ciaddr | IP-адрес клиента |
yiaddr | <Ваш> (клиентский) IP-адрес |
siaddr | IP-адрес следующего сервера, участвующего в загрузке |
giaddr | IP-адрес ретранслирующего агента |
chaddr | <Аппаратный> адрес клиента |
sname | Хост-имя сервера (опция) |
file | Имя загрузочного файла |
options | Поле дополнительных параметров |
В роли транспортного протокола для обмена DHCP-сообщениями выступает UDP.
- при отправке сообщения с клиента на сервер используется 67-й порт DHCP-сервера;
- при передаче в обратном направлении - 68-й.
Эти номера портов, как и схожая структура сообщений, обеспечивают обратную совместимость DHCP с BOOTP. Конкретные процедуры взаимодействия клиентов и серверов BOOTP и DHCP регламентирует документ RFC 1542.
Алгоритм работы
- Клиент посылает в свою подсеть широковещательное сообщение DHCPDISCOVER, в котором могут указываться устраивающие клиента IP-адрес и срок его аренды. В качестве IP-адреса источника указывается 0.0.0.0, в качестве адреса назначения - 255.255.255.255. Если DHCP-сервер отсутствует в подсети, то сообщение будет передано в другие подсети агентами протокола BOOTP.
- Получив запрос от клиента, DHCP-сервер отвечает на него сообщением DHCPOFFER. В сообщение включается предлагаемый IP-адрес (yiaddr) и прочие конфигурации для клиента (адреса маршрутизаторов, DNS-серверов и т.д.).
- На данном этапе сервер не обязан резервировать адрес, который он отправил клиенту.
- Получив конфигурации от серверов (их может быть несколько, если в подсети более одного DHCP-севрера), клиент отправляет широковещательное сообщение DHCPREQUEST. В нем содержатся идентификатор выбранного сервера и, возможно, желательные значения запрашиваемых параметров конфигурации.
- На данном этапе допускается, что клиента не устроит ни один из предложенных адресов, тогда он вновь отправит DHCPDISCOVER.
- Получив DHCPREQUEST и убедившись, что в сообщении его идентификатор, сервер проверяет свободен ли в данный момент запрошенный адрес. Если да, то отправляет DHCPACK и вносит запись в базу, иначе отправляет DHCPNACK.
- Получив сообщение DHCPACK, клиент обязан убедиться в уникальности IP-адреса (средствами протокола ARP) и зафиксировать суммарный срок его аренды.
- Срок аренды: время, прошедшее между отправкой сообщения DHCPREQUEST и приемом ответного сообщения DHCPACK + срок аренды, указанный в DHCPACK.
- Если адрес уже используется другой станцией, клиент отправляет DHCPDECLINE и начинает всю процедуру снова.
- Для досрочного прекращения аренды адреса клиент отправляет серверу сообщение DHCPRELEASE.