Открыть сервис

Протокол DHCP

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

История

Протокол DHCP появился как развитие протокола BOOTP (Bootstrap Protocol), который был определён в 1985 году (RFC 951) для загрузки бездисковых рабочих станций. BOOTP требовал статического сопоставления MAC-адреса и IP-адреса, что было негибким для растущих сетей.

В 1993 году IETF (Internet Engineering Task Force) выпустила RFC 1531, описывающий DHCP как расширение BOOTP. Главным нововведением стала возможность динамического выделения адресов на время (аренда) и автоматического освобождения адресов после отключения клиента. Последующие версии спецификации (RFC 2131, 1997 год; RFC 3442, 2002 год; RFC 3315, 2003 год — DHCPv6 для IPv6) уточнили и расширили функциональность.

Архитектура и принцип работы

DHCP работает по модели «клиент-сервер». Сервер хранит пул адресов и параметров, а клиент на этапе инициализации запрашивает конфигурацию.

Взаимодействие (обмен сообщениями)

Процесс получения адреса состоит из четырёх этапов (в упрощённом виде — для IPv4):

  1. DHCPDISCOVER (обнаружение): клиент отправляет широковещательный UDP-пакет (порт назначения 67) с просьбой найти DHCP-сервер.
  2. DHCPOFFER (предложение): каждый сервер, получивший запрос, отправляет клиенту пакет с предложением IP-адреса (UDP, порт источника 68, порт назначения 67).
  3. DHCPREQUEST (выбор): клиент выбирает одно из предложений (обычно первое полученное) и отправляет широковещательный пакет с подтверждением выбора (указывает выбранный адрес) — это уведомляет другие серверы, что их адреса не нужны.
  4. DHCPACK (подтверждение): сервер подтверждает аренду адреса, отправляя пакет с параметрами (маска, шлюз, DNS и т. д.).

В некоторых случаях клиент может отправить DHCPDECLINE, если обнаружит конфликт адресов (например, проверкой с помощью ARP), а сервер — DHCPNAK, если адрес недоступен.

Таймеры аренды

Виды выделения адресов

Протокол поддерживает три механизма:

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

Сообщения DHCP базируются на формате BOOTP и передаются в UDP. Для IPv4 порт сервера — 67, клиента — 68. Поля пакета включают:

Основные типы сообщений (опция 53)

DHCPv6

Для протокола IPv6 существует отдельная версия — DHCPv6, определённая в RFC 3315 (2003 год) с дополнениями (RFC 3633, RFC 3736 и др.). DHCPv6 работает через UDP-порты 546 (клиент) и 547 (сервер). В отличие от DHCPv4, DHCPv6 не использует широковещательные запросы — клиент отправляет multicast-сообщение на адрес all_dhcp_relay_agents_and_servers (FF02::1:2).

DHCPv6 может передавать не только адреса (SLAAC — Stateless Address Autoconfiguration — может использоваться без DHCP), но и другие параметры (DNS, домен, NTP). Выделяют stateful (администратор поддерживает базу адресов) и stateless (только параметры, адреса назначаются SLAAC) режимы.

Реализации и программное обеспечение

Безопасность и ограничения

Протокол DHCP изначально не предусматривал аутентификации, что создаёт уязвимости:

Для защиты применяются:

Применение

DHCP используется повсеместно в любых IP-сетях:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →