пятница, 13 марта 2009 г.

RTFM: DHCP

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

DHCP — это Dynamic host configuration protocol, протокол динамического конфигурирования хостов. Вопреки распространенному мнению, DHCP позволяет конфигурировать гораздо более широкий спектр параметров, чем просто IP-адрес и шлюз по умолчанию: DNS-серверы, WINS-серверы, серверы X-Window по умолчанию, имя хоста и прочее и прочее. Но как же работает основная часть DHCP — та, которая выдает устройству адрес при подключении к сети?

Работа DHCP происходит в несколько этапов:

1. Устройство подключается к сети и отправляет запрос DHCP DISCOVER на широковещательный адрес 255.255.255.255. Этот пакет доставляется всем компьютерам, находящимся в данном сегменте сети, но обрабатывают его только DHCP-серверы.
2. Все DHCP-серверы сети, получившие этот запрос, выдают на него ответ DHCP OFFER, который уже адресуется MAC-адресу устройства, отправившего DHCP DISCOVER. В этом пакете серверы предлагают клиенту возможные варианты IP-адресов.
3. Клиент выбирает наилучший, по его мнению, IP-адрес и посылает широковещательный запрос DHCP REQUEST, запрашивая выбранный IP адрес. Если в сети несколько DHCP серверов, то таким образом информируются серверы, чье предложение отвергнуто.
4. Сервер подтверждает аренду адреса сообщением DHCP ACK, сообщая о том, что отныне этот адрес закрепляется за клиентом на все «время аренды» (lease time). Либо, если адрес более недоступен, DHCP сервер отвечает DHCP NACK и весь процесс повторяется сначала.
5. По истечению половины срока аренды, клиент снова подтверждает использование IP адреса пакетом DHCP REQUEST, но в отличие от пункта 3, в этот раз напрямую DHCP серверу, а не широковещательным. На этот запрос сервер может как согласиться DHCP ACK, так и отказать DHCP NACK. В случае отказа клиент теряет свой адрес и проходит процедуру заново.

Процесс легко запомнить по аббревиатуре DORA: Discover-Offer-Request-Acknowledge

Причем тут виртуальные машины, спросите вы? Виртуальным машинам тоже нужны IP адреса, да и DHCP серверы прекрасно себя чувствуют в виртуальных машинах :)

5 комментариев:

  1. Вы писали: Клиент выбирает наилучший, по его мнению, IP-адрес и посылает запрос DHCP REQUEST серверу, который предоставил ему такой вариант IP-адреса.

    Вопрос: а какой стандартный алгоритм выбора наилучшего IP-адреса? Выбирается наиболее близкий сервер?

    ОтветитьУдалить
  2. Тот, который реализован в DHCP-клиенте. Предполагаю, что наилучшим считается первый полученный :)

    ОтветитьУдалить
  3. +1 как говорится
    Кто первый, от того и получают

    ОтветитьУдалить
  4. Дело обстоит несколько сложнее. То ли сервер, то ли виндовый клиент явно предпочитают тот адрес, который уже назначался этому клиенту.

    Хотелось бы прояснить этот момент.

    ОтветитьУдалить
  5. В каком смысле предпочитают?

    Запрос на обновление отправляется по истечению половина срока аренды, и соотв. текущая аренда просто продляется. Если же машину просто выключить и продержать в выключенном состоянии до полного истечения срока аренды, IP будет выдан из пула. С некоторой вероятностью даже тот, что был раньше.

    ОтветитьУдалить