Введение

Протокол компьютерной сети Bootstrap Protocol (BOOTP) — это компьютерный сетевой протокол, используемый в сетях Internet Protocol для автоматического назначения IP-адреса сетевым устройствам с конфигурационного сервера. BOOTP был первоначально определен и опубликован в 1985 году. Хотя некоторые части BOOTP были фактически вытеснены протоколом динамической конфигурации хоста (DHCP), который добавляет функцию аренды, части BOOTP используются для обеспечения работы протокола DHCP. Некоторые DHCP-серверы также предоставляют устаревшую функциональность BOOTP. Когда компьютер, подключенный к сети, загружается, его IP-стек широковещательно рассылает сетевые сообщения BOOTP с запросом на назначение IP-адреса. Сервер конфигурации BOOTP отвечает на запрос, назначая IP-адрес из пула адресов, предварительно настроенного администратором. BOOTP реализован с использованием протокола пользовательских данных (UDP) для передачи. Порт 67 используется сервером для приема запросов от клиентов, а порт 68 — клиентом для приема ответов от сервера. BOOTP работает только в сетях IPv4. Исторически BOOTP также использовался для Unix-подобных бездисковых рабочих станций для получения сетевого местоположения их загрузочного образа, в дополнение к назначению IP-адреса. Компании использовали его для развертывания предварительно настроенной клиентской установки (например, Windows) на вновь установленные ПК. Изначально для установления начального сетевого соединения требовалось использование загрузочной дискеты, но позже производители сетевых интерфейсов встроили протокол в прошивку интерфейсных карт, а также в системные платы с интегрированными сетевыми интерфейсами, что позволило осуществлять прямую сетевую загрузку.

История

BOOTP был впервые определен в сентябре 1985 года как замена протокола обратного разрешения адресов (RARP), опубликованного в июне 1984 года. Основной причиной замены RARP на BOOTP было то, что RARP являлся протоколом канального уровня. Это затрудняло его реализацию на многих серверных платформах и требовало присутствия сервера в каждой отдельной IP-подсети. BOOTP представил инновацию в виде ретрансляторов, которые пересылали пакеты BOOTP из локальной сети, используя стандартную IP-маршрутизацию, что позволяло одному центральному BOOTP-серверу обслуживать хосты во многих подсетях. Постепенно был разработан расширяющийся набор расширений информации от поставщиков BOOTP, предназначенных для предоставления BOOTP-клиентам необходимой информации о сети, такой как IP-адрес шлюза по умолчанию, IP-адрес сервера имен, доменное имя и т.д. С появлением протокола динамической конфигурации хостов (DHCP), расширения информации от поставщиков BOOTP были включены в качестве опций DHCP, чтобы серверы DHCP могли также обслуживать BOOTP-клиентов.

Случай 1: клиент и сервер в одной сети

Когда клиент BOOTP запускается, у него отсутствует IP-адрес, поэтому он рассылает широковещательное сообщение, содержащее его MAC-адрес. Это сообщение называется "BOOTP-запрос", и его перехватывает сервер BOOTP, который отвечает клиенту следующей необходимой информацией: IP-адрес клиента, маска подсети и адрес шлюза по умолчанию. IP-адрес и имя хоста сервера BOOTP. IP-адрес сервера, на котором хранится загрузочный образ, необходимый клиенту для загрузки операционной системы. Получив эту информацию от сервера BOOTP, клиент конфигурирует и инициализирует свой стек протоколов TCP/IP, а затем подключается к серверу, на котором размещен загрузочный образ. Клиент загружает загрузочный образ и использует полученные данные для загрузки и запуска операционной системы. Протокол динамической конфигурации хоста (DHCP) был разработан как расширение протокола BOOTP. Описание BOOTP содержится в документах Requests for Comments (RFC) 951 и 1084.

Случай 2: клиент и сервер на разных сетях

Проблема с запросом BOOTP заключается в том, что запрос является широковещательным. Широковещательная IP-датаграмма не может пройти через маршрутизатор. Маршрутизатор отбрасывает этот пакет. Для решения этой проблемы необходим посредник (ретранслятор). Один из хостов или маршрутизаторов может быть настроен на уровне приложения для работы в качестве ретрансляционного агента. Ретрансляционный агент знает униicast-адрес сервера BOOTP и прослушивает широковещательные сообщения на порту 67. Когда он получает этот широковещательный пакет, он инкапсулирует сообщение в unicast-датаграмму и отправляет запрос серверу BOOTP. Пакет, содержащий unicast-адрес назначения, маршрутизируется любым маршрутизатором и достигает сервера BOOTP. Ретрансляционный агент, после получения ответа, отправляет его клиенту BOOTP.