← Назад к вопросам

Опиши процесс выдачи IP адреса по DHCP

1.2 Junior🔥 61 комментариев
#Сети и протоколы

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Процесс выдачи IP-адреса по протоколу DHCP

DHCP (Dynamic Host Configuration Protocol) — это сетевой протокол, который позволяет устройствам автоматически получать IP-адрес и другие параметры конфигурации (маску подсети, шлюз по умолчанию, DNS-серверы) от сервера. Это избавляет администраторов от ручной настройки каждого устройства и минимизирует ошибки. Процесс выдачи адреса, известный как DORA (Discover, Offer, Request, Acknowledgement), состоит из четырёх этапов и происходит на прикладном (7) уровне модели OSI, используя UDP-порты 67 (сервер) и 68 (клиент).

Детальное описание этапов DORA

1. DHCP Discover (Обнаружение)

Когда клиентское устройство (например, компьютер) подключается к сети и настроено на автоматическое получение IP (dhclient в Linux или ipconfig /renew в Windows), оно инициирует процесс.

  • Клиент не знает параметров сети и своего будущего адреса, поэтому он отправляет широковещательный (broadcast) UDP-пакет на адрес 255.255.255.255 с порта 68 на порт 67.
  • Пакет DHCPDISCOVER содержит MAC-адрес клиента и, возможно, запрошенный ранее адрес (если это повторное подключение).
# Пример запуска процесса обновления DHCP на Linux-клиенте
sudo dhclient -v eth0
# В выводе можно увидеть этапы DORA

2. DHCP Offer (Предложение)

Все DHCP-серверы в сети, получившие широковещательный запрос Discover, анализируют его и готовят ответ.

  • Сервер резервирует подходящий IP-адрес из своего пула (scope) для данного MAC-адреса.
  • Сервер отправляет широковещательный или unicast (в зависимости от реализации) пакет DHCPOFFER на порт 68. Этот пакет содержит:
    * Предлагаемый IP-адрес.
    * **Маску подсети**.
    * **Адрес шлюза по умолчанию (Default Gateway)**.
    * Адреса **DNS-серверов**.
    * **Срок аренды адреса (Lease Time)** — время, на которое адрес выделяется клиенту.
    * **Идентификатор сервера (Server Identifier)** — его IP.

3. DHCP Request (Запрос)

Клиент может получить несколько предложений (Offer) от разных серверов. Он выбирает одно (обычно первое полученное) и отправляет ответ.

  • Клиент снова отправляет широковещательный пакет DHCPREQUEST на порты 67, чтобы уведомить все серверы о своём выборе.
  • В пакете явно указывается идентификатор выбранного сервера. Это критически важный этап, который информирует другие серверы, что их предложения отклонены, и они могут освободить зарезервированные адреса.
# Пример логики выбора предложения (псевдокод)
def handle_dhcp_offers(offers):
    selected_offer = offers[0]  # Выбор первого предложения
    send_dhcp_request(selected_offer.server_id)

4. DHCP Acknowledgement (Подтверждение)

Выбранный сервер получает DHCPREQUEST и завершает процесс.

  • Сервер отправляет финальный широковещательный или unicast пакет DHCPACK на порт 68.
  • Этот пакет содержит все подтверждённые параметры конфигурации. Получив его, клиент применяет настройки:
    * Назначает себе предложенный IP-адрес.
    * Прописывает маршрут к шлюзу.
    * Сохраняет адреса DNS-серверов.
    * Запускает **таймер аренды**.
  • На этом этапе процесс успешно завершён, и клиент может начать работу в сети.

Альтернативные сценарии и важные аспекты

  • DHCPNAK (Отрицательное подтверждение): Если сервер не может выдать запрошенный адрес (например, он уже занят, или запрос пришёл от неавторизованного клиента), он отправляет пакет DHCPNAK. Клиент тогда должен начать процесс заново с этапа Discover.
  • Обновление аренды (Renewal): Клиент не ждёт истечения срока аренды. Обычно после 50% времени аренды он пытается обновить её, отправляя unicast DHCPREQUEST непосредственно своему серверу. Если это удаётся, аренда продлевается.
  • Освобождение адреса (Release): При корректном отключении клиент может отправить DHCPRELEASE, сообщая серверу, что адрес более не используется.
  • Резервация адресов (Reservation): Для критичных устройств (серверы, принтеры) на DHCP-сервере настраивают постоянное соответствие MAC-адреса и IP-адреса. Тогда устройство всегда получает один и тот же IP.
# Пример конфигурации резервации на ISC DHCP Server (dhcpd.conf)
host printer {
    hardware ethernet 00:1a:2b:3c:4d:5e; # MAC-адрес устройства
    fixed-address 192.168.1.100;         # Зарезервированный IP
}

Роль ретрансляторов (DHCP Relay)

В крупных сетях с множеством подсетей (VLAN) широковещательные запросы клиентов не покидают пределы своей подсети. Для работы одного централизованного DHCP-сервера используются агенты-ретрансляторы (DHCP Relay Agent), часто настраиваемые на маршрутизаторах или L3-коммутаторах.

  • Relay-агент перехватывает широковещательные DHCP-пакеты клиента.
  • Он упаковывает их в unicast-пакеты и направляет на заранее заданный IP-адрес DHCP-сервера в другой подсети.
  • Ответы сервера агент, в свою очередь, пересылает обратно клиенту.

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

Опиши процесс выдачи IP адреса по DHCP | PrepBro