Автоматическое назначение клиентам сети IP-адресов при начальной загрузке снимает с администратора часть проблем.
Как открытый стандартизованный и к тому же надежный протокол для глобальных сетей (не говоря уже о том, что это протокол Internet), TCP/IP обладает рядом преимуществ над другими сетевыми протоколами. Однако, как и все на свете, за исключением разве что ленты Мебиуса, TCP/IP имеет и оборотную сторону. Его основным недостатком является сложность управления адресами: нужно немало усилий, чтобы поддерживать сеть TCP/IP в рабочем состоянии.
Проблема вызвана необходимостью корректного IP-адреса для каждого устройства в сети. Если вы работали в сети TCP/IP, то вам, вероятно, известны пять основных правил, которым должен следовать администратор сети при назначении IP-адресов: · IP-адрес должен состоять из 4 байт (четырех 8-битных чисел); · адрес должен быть уникальным, т.е. не совпадать ни с каким другим; · все устройства в сегменте сети должны иметь одни и те же номера сети и подсети; · номер подсети должен быть уникальным; · взаимодействие с узлами в другой сети или подсети осуществляется при помощи маршрутизатора.
Корректное назначение узлу IP-адреса может оказаться весьма непростой задачей. В частности, для избежания повторов необходимо иметь список всех ранее присвоенных адресов. Кроме того, если узел перемещен в другую подсеть, то часть адреса с номером подсети должна быть изменена в соответствии с номером новой подсети, а номер узла (остаток по исключении битов с номером подсети) не должен вступать в конфликт с любым другим узлом подсети.
АВТОМАТИЗАЦИЯ НАЗНАЧЕНИЯ
Почему бы не возложить такие рутинные обязанности, как ведение списка и назначение новых IP-адресов, на компьютер? Не нам первым пришла в голову эта мысль. Сравнительно недавно именно для этой цели был разработан протокол динамической конфигурации хоста (Dynamic Host Configuration Protocol - DHCP). Полное описание DHCP вы можете найти в RFC 1541, в этой же статье мы остановимся только на основных моментах.
DHCP разработан на базе Bootstrap Protocol (BOOTP), системы для автоматического получения информации о конфигурации BOOTP-клиентом от BOOTP-сервера при начальной загрузке.
По протоколу DHCP один компьютер в сети назначается сервером BOOTP, все остальные - по крайней мере те, кому нужен IP-адрес - становятся клиентами DHCP (компьютеры, уже имеющие постоянный IP-адрес, могут не приниматься в расчет). Администратор сети должен вначале сконфигурировать сервер. Частью процесса конфигурации является выделение блока IP-адресов для последующего присвоения клиентам.
При появлении нового узла в сети он посылает широковещательный запрос с просьбой о назначении IP-адреса (если, конечно, этот узел может быть клиентом DHCP). В ответ на запрос сервер DHCP находит в таблице адресов свободный адрес и посылает ответ запрашивающему узлу.
На практике процедура несколько сложнее вышеописанной, поскольку запрашивающий клиент должен вначале найти сервер DHCP. Кроме того, протокол построен так, что клиент может обращаться с запросом сразу к нескольким серверам. Остановимся на том, как это происходит.
Клиент DHCP, нуждающийся в адресе, посылает широковещательный пакет DHCPDISCOVER в поисках сервера (см. Рис. 1). Пакет содержит аппаратный адрес запрашивающего клиента, например адрес Ethernet или Token Ring. Затем один или несколько серверов DHCP рассматривают запрос и посылают в ответ пакет DHCPOFFER, содержащий предлагаемый IP-адрес и "время аренды" (срок, в течение которого клиент может пользоваться адресом).
(1x1)
Рисунок 1.
Клиент DHCP согласует "время аренды" IP-адреса посредством обмена
пакетами.
Клиент выбирает адрес из полученных пакетов DHCPOFFER. (Выбор клиента зависит от его назначения - например, он может выбрать адрес с наибольшим временем аренды.) Вслед за тем клиент посылает пакет DHCPREQUEST с адресом выбранного сервера.
Выбранный сервер посылает подтверждение (DHCPACK), и процесс согласования завершается. Пакет DHCPACK содержит оговоренные адрес и время аренды. Сервер помечает выделенный адрес как занятый - до окончания срока аренды этот адрес не может быть присвоен другому клиенту. Клиенту осталось только сконфигурировать себя в соответствии с назначенным адресом и можно приступать к работе в сети.
Отметим еще раз, что на запрос DHCPDISCOVER может ответить несколько серверов. Клиент должен выбрать одно из предложений и послать в ответ пакет DHCPREQUEST с идентификатором выбранного сервера. Другие серверы просматривают пакет DHCPREQUEST и заключают на основе идентификатора сервера, что их предложение было отвергнуто. Таким образом, они знают, что предложенные ими IP-адреса свободны для назначения другим клиентам.
Как упоминалось выше, выбранный сервер завершает согласование отсылкой пакета DHCPACK. В случае если сервер не может принять конфигурацию, он посылает пакет DHCPNAK (отказ в подтверждении), что вынуждает клиента начать процесс согласования заново.
РАЗДАЧА IP-АДРЕСОВ
DHCP позволяет назначать IP-адреса тремя способами. При автоматическом назначении сервер DHCP присваивает запрашивающему клиенту DHCP постоянный IP-адрес. При динамическом назначении сервер DHCP выделяет IP-адрес на ограниченный период времени ("время аренды") или до отказа клиента от адреса - в зависимости от того, что произойдет раньше. При назначении вручную IP-адреса выбираются администратором сети, а сервер DHCP извещает клиента о назначении.
Динамическое назначение полезно в ситуации, когда компьютеры подключаются к сети время от времени. При отключении от сети IP-адрес становится клиенту ненужным; он извещает об этом сервер, так что тот может переназначить адрес нуждающемуся в нем узлу. Динамическое назначение позволяет более эффективно использовать ограниченное число IP-адресов. Группа нерегулярных пользователей, например, может совместно использовать меньший пул IP-адресов, чем если бы у каждого был собственный постоянный адрес.
Динамическое назначение не подходит для всех узлов без разбора. Если адреса сетевых серверов будут часто меняться, то клиентам сети будет весьма непросто их найти. Поэтому в качестве общего правила мы предлагаем использовать статические адреса для серверов и динамические адреса для клиентов.
Как упоминалось в начале статьи, DHCP ведет свое происхождение от BOOTP. Первый отличается от последнего тем, что сервер BOOTP просто хранит конфигурацию клиента BOOTP и сообщает ее при загрузке. DHCP же автоматически конфигурирует клиентов DHCP, используя установленные администратором правила.
При установке DHCP в сети вы должны принять решение о размещении серверов DHCP - например, один сервер в каждой подсети или один центральный сервер на всю сеть. Общение между серверами и клиентами DHCP происходит, как правило, посредством широковещательных пакетов, а значит, если вы решите установить только центральный сервер DHCP, то маршрутизаторы не должны блокировать такие пакеты. BOOTP в подобных ситуациях использует специальных агентов для ретрансляции, впрочем, DHCP тоже. Формат пакетов DHCP почти во всем идентичен формату пакетов BOOTP, это сделано специально для того, чтобы ретранслирующие агенты BOOTP могли пересылать пакеты DHCP.
На Рис. 2 показана простая сеть, состоящая из двух подсетей, где маршрутизатор действует как ретранслирующий агент. Когда клиент DHCP в подсети 1 посылает широковещательный пакет с целью обнаружения сервера DHCP, маршрутизатор пересылает пакет в подсеть 2, в которой находится сервер DHCP. Маршрутизатор также определяет, из какой подсети получен пакет, и включает эту информацию в пакет.
(1x1)
Рисунок 2.
Если в каждой подсети нет своего сервера DHCP, то промежуточные маршрутизаять
роль ретранслирующих агентов, пересылающих пакеты BOOTP и DHCP.
Когда сервер посылает ответный пакет, маршрутизатор пересылает его в первую подсеть, в зависимости от клиента используя уникальный или широковещательный адрес. Клиент DHCP в сети 2 не нуждается в услугах ретранслирующего агента, поскольку он может взаимодействовать непосредственно с сервером DHCP (оба находятся в одной и той же сети).
КОМУ ЭТО НАДО
DHCP - относительно новый протокол: первый RFC появился в 1993 году. Некоторые производители тем не менее уже приняли его и внедряют в свои продукты. Наиболее известный из них, конечно, Microsoft. Так Windows NT 3.5 и выше имеют встроенную поддержку сервера DHCP. Как Windows for Workgroups 3.11, так и Windows 95 могут выступать в качестве клиентов DHCP.
Open Transport компании Apple (наследник MacTCP) включает клиента DHCP. Программное обеспечение управления сетью SolarNet PC Admin компании SunSoft имеет сервер DHCP. Многие TCP/IP-пакеты для Windows сторонних производителей включают клиентов DHCP. К примеру, компания On Technology объявила о создании сервера DHCP для файловых серверов NetWare 3.11 и 4.x, реализованного в виде NLM.
ЖИЗНЬ БЕЗ ЗАБОТ
DHCP может здорово упростить жизнь администраторам сетей TCP/IP. Протокол автоматизирует процесс назначения начального IP-адреса клиенту, тем самым облегчая задачу добавления в сеть новых клиентов. Более того, если клиент перемещается из одной подсети в другую, DHCP осуществляет надлежащую настройку IP-конфигурации клиента. Наконец, динамическое назначение адресов позволяет разделять по времени блок IP-адресов между клиентами, сокращая тем самым общее число необходимых адресов.
С Аланом Франком можно связаться через Internet по адресу: afrank@mfi.com