Найти тему

Все, что вам нужно знать про DHCP

Всем привет!

Сегодня расшифруем аббревиатуру и поговорим про DHCP (Dynamic Host Configuration Protocol).

Вспомним, как работают компьютерные сети, чтобы общаться между собой. Устройствам в сети нужны ip адреса, так откуда они собственно берутся? Есть два пути.

Первый: у нас есть сисадмин, который руками прописывает на каждом устройстве его ip адрес - это еще называется статический ip. Если у вас всего пару компов, то это терпимо, а если нужно подключить целый офис или пару этажей здания? Тут еще и сисадмин может ошибиться в настройках. Так себе решение.

Второй путь: dhcp, который все корректно разрулит и раздаст правильный адрес в автоматическом режиме. Dhcp работает по клиент-серверной модели. Это значит, что есть dhcp-сервер - тот кто ip-адреса раздает, а есть dhcp-клиент - тот кто ip-адрес запрашивает и получает.

Сегодняшние dhcp-сервера запускаются не только на выделенных машинах, а и на роутерах, например. На dhcp-сервере задается диапазон адресов, которые он может раздавать клиентам. Этот диапазон еще называется "пул". Также сервер отдает клиентам маску подсети и шлюз по умолчанию и может сообщить dns сервера.

Вот пример из жизни. Купили новый игровой компьютер, чтобы поиграть в battlefield 5. Принесли его домой, подключили в сеть. Включаете его, выбираете "автоматическое получение адреса" в настройках сети и ПК шлет широковещательное сообщение под названием dhcpdiscover, которое может звучать как "хэй, я тут новичок, в ваших краях dhcp-сервер водится? А то мне бы айпишник получить..."

Заметьте, в адресе "отправитель" такого сообщения будут стоять 0, так как ip адрес устройство еще не получило, а адрес получателя будет широковещательный. Ваш роутер, на котором наверняка настроен dhcp, получает это сообщение и смотрит, есть ли у него для вас свободный адрес. Найдя для вас ip, он отправляет вам предложение с этим адресом. Это сообщение называется dhcpoffer.

А как он шлет это сообщение обратно, если мой комп все ещё не получил адрес? Легко! Даже если у вашего устройства нет ip адреса, то у него есть мак адрес. Этого достаточно для коммуникации по второму уровню модели оси в рамках одной подсети.

Комп, получив dhcpoffer, в ответ шлет dhcprequest, которое означает что-то в формате "ладно, давай мне этот адрес".

Что круто, так это то, что это сообщение рассылается всем в сети на случай, если у вас несколько dhcp-серверов, чтобы они были в курсе того, что этот ip теперь занят. Сервер в ответ высылают сообщение dhcpack, которое означает "ок, этот адрес твой" и записывает у себя в таблице сопоставления ip и mac адресов компьютеров, и убирает этот айпишник из свободного пула. Мы показали пример домашней сети, но поверьте, в корпоративных сетях принцип работы примерно тот же.

И что, теперь этот адрес моего компьютера будет навсегда? Нет, не навсегда. Диапазон раздаваемых адресов ограничен, поэтому они даются в аренду на время сетевой активности устройства. Именно поэтому ваш ПК, в зависимости от настроек dhcp, будет примерно раз в сутки отправлять сообщение dhcprequest, чтобы продлить аренду, а сервер будет подтверждать продление сообщением dhcpack. А если запрос о продлении не поступит, выделенный ip адрес снова вернётся в пул свободных адресов.

Важно понимать, в сети есть устройства, у которых адрес меняться не должен: принтеры, серверы или роутеры. Для таких девайсов в dhcp реализован механизм статической резервации. Как только такому устройству выдан ip адрес, он закрепляется за ним на постоянной основе по mac-адресу устройства.

Ну, а на этом все. Пока-пока.