Рассказываю о том, как компьютеры получают IP-адреса для работы в сети.
Способы выдачи IP-адресов
Чтобы компьютер мог работать в сети, ему нужен IP-адрес. Он выглядит как 4 числа через точку. Например, IP-адрес timeweb.com – 185.114.246.105. Это как страна, город, улица и дом в почтовом адресе, только в интернете – это узлы связи и магистральные роутеры. Если устройству не выдали IP-адрес, оно не может общаться с другими устройствами в сети.
«IP» расшифровывается как Internet Protocol. Данный протокол имеет две версии: IPv4 и IPv6.
- IPv4 записывается, как в примере выше: 185.114.246.105
- IPv6 в 4 раза длиннее и выглядит примерно так – 2001:0DA8:AB10:0001:0010:0000:0001:00FB
Устройство может получить IP-адрес двумя способами: статическим (ручным) и динамическим.
- Статический – когда человек, например администратор сети, заходит в настройки компьютера и вручную прописывает для него IP-адрес. Это удобно, когда в сети мало компьютеров (дома или в небольшом офисе).
- Динамический – когда компьютер автоматически получает IP-адрес после подключения к сети. Такой IP-адрес называется динамическим и присваивается компьютеру на ограниченный промежуток времени. Этот способ помогает снизить трудозатраты, когда в сети много компьютеров или устройств.
Динамический способ подойдет как для предприятий, где количество устройств фиксировано, так и для кафе, через Wi-Fi которых каждый день проходит много разных гаджетов.
Протокол DHCP и динамический IP
Для динамической выдачи IP-адресов используется сетевой протокол DHCP («Dynamic Host Configuration Protocol»), что переводится как протокол динамической настройки узла.
DHCP работает по модели «клиент-сервер». Он автоматически раздает IP-адреса и другие параметры конфигурации устройствам, чтобы те могли работать в сети.
- Клиент – это устройство, которому надо получить IP-адрес для работы в сети. Это может быть телефон, планшет, ноутбук или компьютер.
- Сервер – это устройство, которое раздает IP-адреса клиентам и следит за тем, чтобы два клиента не получили одинаковый IP-адрес.
Взаимодействие DHCP-сервера и клиента
Сервер и клиент обмениваются сообщениями по принципу «запрос-ответ». Взаимодействие состоит из 4 этапов и сокращенно называется «DORA». По одной букве на каждый этап:
-
Поиск – Discover.
-
Предложение – Offer.
-
Запрос – Request.
-
Подтверждение – Acknowledgement (ACK).
Поиск (Discover): Клиент → Сервер
На этом этапе клиенту главное найти и узнать, где находится сервер.
Мы включили компьютер, который находится в сети. Еще в этой же сети работает DHCP. В данном случае наш компьютер – это клиент, а DHCP – сервер. Теперь нашему устройству необходимо получить IP-адрес и другую необходимую информацию о сети, например шлюз, адреса DNS и маску подсети. Поэтому клиент начинает поиски сервера и посылает сообщение «DHCPDISCOVER» на компьютеры внутри этого сегмента сети.
Такое сообщение называется широковещательным (broadcast) – это значит, что поток данных от клиента получат все устройства внутри его сети. Ответить на такое сообщение смогут только DHCP-серверы.
Запрос клиента получат все участники сети, но ответит только сервер
Предложение (Offer): Сервер → Клиент
DHCP-сервер получает сообщение от клиента, после чего выбирает свободный IP-адрес из числа доступных и отправляет его в ответном сообщении «DHCPOFFER».
Как правило, IP-адрес закрепляется за клиентом на определенное время, поэтому может меняться между сеансами работы в сети.
Если клиенту ответили несколько серверов, он выберет какой-то один и получит от него IP-адрес с настройками.
Запрос (Request): Клиент → Сервер
Клиент получил IP-адрес и отправляет серверу ответное сообщение: «DHCPREQUEST». В нем он еще раз прописывает полученный адрес и тем самым подтверждает, что будет использовать его.
Ответное сообщение с IP-адресом получают все DHCP-серверы в сети, если их несколько. Это необходимо для того, чтобы каждый сервер знал, что этот адрес занят, и не предлагал его другим клиентам.
Только один сервер продолжает взаимодействие с клиентом. Это тот, который предложил выбранный клиентом IP-адрес.
Подтверждение (ACK): Сервер → Клиент
Сервер отправляет сообщение «DHCPACK» и тем самым закрепляет IP-адрес за клиентом. В сообщении содержится сам адрес, срок его использования и дополнительные настройки сети. Клиент проверяет эти настройки, применяет полученную конфигурацию и получает доступ к сети.
В общем виде весь процесс взаимодействия выглядит так:
– (Клиент) Кто тут сервер? Мне надо получить IP-адрес: «DHCPDISCOVER».
– (Сервер) Я сервер, предлагаю тебе использовать вот этот IP: «DHCPOFFER».
– (Клиент) Хорошо, я буду использовать этот IP, что ты мне отправил: «DHCPREQUEST».
– (Сервер) Вот и договорились. Приятной работы в сети: «DHCPACK».
Другие варианты сообщений
-
«DHCPINFORM» – так клиент запрашивает локальные настройки сети. В ответ на это сообщение сервер посылает запрашиваемую конфигурацию.
-
«DHCPNAK» – так сервер отказывает клиенту пользоваться IP-адресом.
- «DHCPRELEASE» – так клиент сообщает, что отключается от сети и освобождает свой IP-адрес. После этого сервер снова добавляет этот адрес в список доступных.
Длительность использования IP-адреса
Время, на которое клиент получает IP-адрес от сервера, называется «срок аренды» (lease time). Он может составлять несколько минут, часов и даже суток. Когда срок аренды заканчивается, адрес освобождается, и сервер может отдать его другому клиенту.
Клиент может продлить аренду и использовать IP-адрес дальше. Для этого он ждет, пока пройдет половина срока, который изначально назначил сервер. После этого клиент посылает серверу сообщение «DHCPREQUEST», в котором указывает свой текущий IP-адрес. В ответном сообщении «DHCPACK» сервер запускает срок аренды заново. Получилась укороченная схема взаимодействия «клиент-сервер» из двух последних этапов (запрос → подтверждение).
Если сервер молчит и не отправляет подтверждение «DHCPACK», то клиент пробует отправить повторный запрос «DHCPREQUEST», когда пройдет половина от того времени, что осталось сейчас. И так до тех пор, пока не пройдет ⅞ времени всей аренды. После этого клиент начнет отправлять широковещательные запросы на свою сеть и ждать ответа от другого сервера.
Перед тем как завершить работу и отключиться от сети, клиент автоматически отправит серверу сообщение «DHCPRELEASE». Это значит, что IP-адрес свободен и сервер может передать его другому компьютеру.
Способы раздачи IP-адресов в DHCP
DHCP-сервер может назначать IP-адреса тремя способами:
-
фиксированным (ручным),
-
автоматически,
-
динамически.
Фиксированный – в этом случае происходит настройка DHCP сервера, в ходе которой администратор вручную прописывает соответствие между каждым MAC-адресом и IP-адресом. Таким образом, за каждым устройством закрепляется свой адрес, который будет выдавать сервер.
Это удобно в рамках небольшой сети, когда известны MAC-адреса всех компьютеров.
Автоматический – при таком способе каждое устройство автоматически получает IP-адрес, который не будет меняться. DHCP-сервер выдает адрес в бессрочную аренду, пока клиент от него не откажется.
Динамический – DHCP-сервер выдает клиенту любой адрес из диапазона свободных. Эти адреса не закрепляются за конкретными устройствами.
Динамическим способом раздают IP-адреса, когда состав пользователей и их количество в сети постоянно меняется, например при использовании Wi-Fi в кафе. В этом случае кафе покупает определенное количество IP-адресов и выдает посетителям, которые подключаются к сети.
Связь DHCP и клиента в разных подсетях
Обычно сеть дополнительно разделяют на подсети. Это помогает повысить производительность и обеспечить безопасность. Производительность повышается за счет того, что таким образом равномерно распределяется широковещательный трафик.
DHCP-сервер и клиент могут оказаться в разных подсетях, разделенных одним или несколькими маршрутизаторами. Как правило, маршрутизаторы не пропускают широковещательный трафик.
Вспомним, что первое сообщение, которое отправляет клиент, чтобы найти сервер («DHCPDISCOVER»), – широковещательное. Следовательно, клиент и сервер из разных подсетей не смогут просто так взаимодействовать.
Эту проблему решают с помощью ретрансляции или DHCP relay. С помощью этой настройки маршрутизаторы смогут передавать только широковещательный трафик, который относится к протоколу DHCP.
Таким образом, если маршрутизатор может работать в режиме DHCP relay, то у него получится передать первый запрос клиента «DHCPDISCOVER» серверу в другой подсети. В этом случае взаимодействию «клиент-сервер» ничего не помешает.
Краткие выводы
-
Для связи с другими устройствами и работы в сети компьютеру требуется IP-адрес.
-
Устройство может получить статический или динамический IP-адрес.
-
Динамические IP-адреса назначаются с помощью протокола DHCP.
-
Чтобы получить IP-адрес, устройство-клиент взаимодействует с DHCP-сервером по модели «DORA».
-
Сервер может назначить IP-адрес клиенту тремя способами: фиксированно, автоматически или динамически.
-
Если сервер и клиент находятся в разных подсетях, они смогут взаимодействовать с помощью ретрансляции DHCP relay.
Комментарии