Протокол DHCP

Материал из sysadm
Перейти к навигации Перейти к поиску

Ссылки по теме:

Протокол DHCP:

  • является расширением протокола BOOTP и поддерживает обратную совместимость с ним
  • предназначен для автоматической конфигурации сетевых устройств
  • выполняет две задачи:
    • выделение IP адреса
    • передача различных конфигурационных параметров (опций)

Формат DHCP сообщения

   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     op (1)    |   htype (1)   |   hlen (1)    |   hops (1)    |
   +---------------+---------------+---------------+---------------+
   |                            xid (4)                            |
   +-------------------------------+-------------------------------+
   |           secs (2)            |           flags (2)           |
   +-------------------------------+-------------------------------+
   |                          ciaddr  (4)                          |
   +---------------------------------------------------------------+
   |                          yiaddr  (4)                          |
   +---------------------------------------------------------------+
   |                          siaddr  (4)                          |
   +---------------------------------------------------------------+
   |                          giaddr  (4)                          |
   +---------------------------------------------------------------+
   |                                                               |
   |                          chaddr  (16)                         |
   |                                                               |
   |                                                               |
   +---------------------------------------------------------------+
   |                                                               |
   |                          sname   (64)                         |
   +---------------------------------------------------------------+
   |                                                               |
   |                          file    (128)                        |
   +---------------------------------------------------------------+
   |                                                               |
   |                          options (variable)                   |
   +---------------------------------------------------------------+
Основные поля
Имя Описание
ciaddr текущий IP клиента (если есть)
yiaddr новый IP клиента
siaddr IP сервера
giaddr IP агента ретрансляции
chaddr аппаратный адрес клиента (MAC адрес)
options опции DHCP [1]
Основные опции
Код Байт Имя Описание
1 4 Subnet Mask Маска подсети
3 %4 Router Список маршрутизаторов подсети (default gateway)
6 %4 Domain Name Server Список DNS серверов

%4 - длинна кратна 4, минимум 4 байта

DHCP сообщения
Сообщение Напр. Назначение
DHCPDISCOVER C->B Широковещательное сообщение поиска DHCP сервера
DHCPOFFER C<-S Ответ на DHCPDISCOVER с предложением конфигурационных параметров
DHCPREQUEST С->B

Возможны варианты:

  • запрос предложенных параметров с одного сервера и неявное отклонение предложений от других серверов
  • подтверждение ранее назначенного адреса (например, после перезагрузки)
  • продление аренды адреса
DHCPACK C<-S параметры конфигурации, включая выделенный IP адрес.
DHCPNAK C<-S Уведомление клиенту о том что его IP адрес некорректен (к примеру, клиент перемещен с другой подсети или у него истекла аренда IP адреса)
DHCPDECLINE C->S Сообщение о том что адрес уже используется
DHCPRELEASE C->S Сообщение об освобождении IP адреса и отмене текущей аренды
DHCPINFORM C->S Запрос только опций, клиент уже имеет назначенный IP адрес.

Обозначения: C - клиент, S - сервер, B - broadcast

Запрос нового IP адреса

                Server          Client          Server
            (not selected)                    (selected)

                  v               v               v
                  |               |               |
                  |     Begins initialization     |
                  |               |               |
                  | _____________/|\_____________ |
                  |/DHCPDISCOVER  | DHCPDISCOVER \|
                  |               |               |
              Determines          |          Determines
             configuration        |         configuration
                  |               |               |
                  |\              |  ____________/|
                  | \________     | /DHCPOFFER    |
                  | DHCPOFFER\    |/              |
                  |           \   |               |
                  |       Collects replies        |
                  |             \ |               |
                  |     Selects configuration     |
                  |               |               |
                  | _____________/|\____________  |
                  |/ DHCPREQUEST  |  DHCPREQUEST\ |
                  |               |              \|
                  |               |     Commits configuration
                  |               |               |
                  |               | _____________/|
                  |               |/ DHCPACK      |
                  |               |               |
                  |    Initialization complete    |
                  |               |               |
                  .               .               .
                  .               .               .
                  |               |               |
                  |      Graceful shutdown        |
                  |               |               |
                  |               |\_____________ |
                  |               | DHCPRELEASE  \|
                  |               |               |
                  |               |        Discards lease
                  |               |               |
                  v               v               v

Запрос на подтверждение выданного ранее IP адреса

                Server          Client          Server

                  v                v               v
                  |                |               |
                  |              Begins            |
                  |          initialization        |
                  |                |               |
                  |               /|\              |
                  |  ____________/ | \___________  |
                  | /DHCPREQU EST  |  DHCPREQUEST\ |
                  |/               |              \|
                  |                |               |
               Locates             |            Locates
            configuration          |         configuration
                  |                |               |
                  |\               |              /|
                  | \              |  ___________/ |
                  |  \             | /  DHCPACK    |
                  |   \ _______    |/              |
                  |     DHCPACK\   |               |
                  |          Initialization        |
                  |             complete           |
                  |               \|               |
                  |                |               |
                  |           (Subsequent          |
                  |             DHCPACKS           |
                  |             ignored)           |
                  |                |               |
                  |                |               |
                  v                v               v