Bootp (Bootstrap Protocol) – протокол, используемый для автоматической настройки сетевых устройств, таких как компьютеры или другие устройства, подключенные к сети. Bootp позволяет устройствам получить IP-адрес, который им необходим для подключения к сети, а также другие параметры, такие как IP-шлюз или адрес DNS-сервера.
Bootp обычно используется на этапе загрузки устройства, когда оно не имеет никакой информации о сети, в которую оно подключено. Протокол позволяет устройству получить необходимую информацию от специального сервера, который называется Bootp-сервером.
Bootp также используется для загрузки операционных систем на устройства, что делает его полезным инструментом для администраторов сети при управлении большим количеством устройств.
BOOTP, как и RARP, обеспечивает определение с помощью специального сервера IP-адреса клиента по его MAC адресу (например, при загрузке устройства, не имеющего возможности хранить свой собственный IP-адрес), а также позволяет клиентам узнавать другие параметры загрузки (например, имя программы, загружаемой затем с помощью TFTP) и использует UDP в качестве протокола транспортного уровня. Это позволяет использовать маршрутизатор (bootp relay) для передачи запросов и ответов из одного сегмента локальной сети в другой. Протокол DHCP (англ. Dynamic Host Configuration Protocol) является надстройкой над BOOTP (для совместимости с bootp relay) и позволяет серверу выделять IP-адреса клиентам динамически на ограниченный срок.
история
Обслуживающий персонал тех лет столкнулся с проблемами постоянного подключения и перемещения новых устройств, а также с необходимостью изменения сетевой конфигурации для соответствия современным требованиям к сетям. Все это привело к необходимости создания механизма для автоматизации конфигурации сетевых узлов, распределенных операционных систем и сетевого программного обеспечения. Наиболее эффективным способом реализации такого механизма может быть сохранение конфигурационных параметров и образов программного обеспечения на одном или нескольких серверах загрузки (boot server). Во время запуска система взаимодействует с таким сервером, получает от него начальные параметры конфигурации и при необходимости загружает с него нужное программное обеспечение.BOOTP был введен в RFC 951 как замена устаревшему RARP. Первоначально ВООТР разрабатывался для бездисковых рабочих станций. Современные условия привели к необходимости автоматизации загрузки систем, имеющих в ПЗУ только базовые средства для IP, UDP и TFTP. Исходный сценарий загрузки выглядел следующим образом:
- Клиент отправляет в широковещательной рассылке сообщение UDP на загрузочную информацию.
- Сервер возвращает клиенту его IP-адрес и, при необходимости, местоположение файла загрузки.
- С помощью простейшего протокола пересылки файлов TFTP (англ. Trivial File Transfer Protocol) клиент загружает в собственную память необходимое программное обеспечение и начинает работу.
Формат сообщения BOOTP
Для запроса и ответа загрузки используется одинаковый формат сообщения. В запросе некоторые поля имеют нулевые значения.Структура пакета BOOTP:
Смещение сегмента |
Длина, октет |
Описание |
---|---|---|
0 | 1 | Op Код операции |
1 | 1 | HType Тип оборудования |
2 | 1 | HLen Длина аппаратного адреса |
3 | 1 | Hops Количество пересылок |
4 | 4 | XID Идентификатор транзакции |
8 | 2 | Secs Счетчик секунд от момента отправки клиентом первого запроса |
10 | 2 | Не использовалось в RFC 951 Flags — поле флагов в RFC 1542 |
12 | 4 | CIAddr IP-адрес клиента |
16 | 4 | YIAddr IP-адрес, предоставленный клиенту сервером |
20 | 4 | SIAddr IP-адрес сервера |
24 | 4 | GIAddr IP-адрес промежуточного маршрутизатора |
28 | 16 | CHAddr Аппаратный адрес клиента |
44 | 64 | SName Имя хоста сервера |
108 | 128 | File Имя загрузочного файла |
236 | 64 | Vend Область для разработчиков и Дополнительные параметры |
Рассмотрим некоторые параметры подробнее.
Код операции
Код операции (opcode) указывает на тип сообщения:
- 1 — для запроса (BOOTREQUEST);
- 2 — для отклика (BOOTREPLY).
Тип оборудования
Определяет тип используемого сетевого оборудования, используя значения аналогичные полю Hardware Type (HType, HRD) в спецификации протокола ARP.
Некоторые часто используемые значения:
6IEEE 802 Networks15Frame Relay
HType | Описание |
---|---|
1 | Ethernet (10Mb) |
3 | Token Ring |
4 | FDDI |
5 | SONET |
7 | ARCNET |
8 | Fibre Channel |
10 | FireWire |
11 | Infiniband |
16 | Asynchronous Transfer Mode (ATM) |
18 | Fibre Channel |
20 | Serial Line(rs-232/rs-422/rs-423/rs-485/ ИРПС) |
Длина аппаратного адреса
Определяет длину аппаратного адреса в сообщении. Для сетей Ethernet и прочих, использующих IEEE 802, значение этого параметра равно 6.
Аналогичное поле в ARP-пакете — HLN.
Количество пересылок
Данный сегмент используется ретрансляторами для контроля пересылки сообщения. Значение поля устанавливается в 0 перед отправкой и увеличивается на 1 при прохождении через каждый ретранслятор.
Идентификатор транзакции
Идентификатор транзакции (transaction ID) — 32-битное целое число, которое устанавливается клиентом и возвращается сервером. Оно позволяет клиенту сопоставить отклик с запросом. Клиент устанавливает в это поле случайное число для каждого запроса.
Счетчик секунд
Когда клиент отсылает первый запрос на загрузку данных, поле счетчика секунд имеет нулевое значение. Если на запрос не приходит ответа, по завершении тайм-аута клиент снова отправляет запрос, изменяя значение в поле счетчика секунд. Для тайм-аута клиент использует случайный интервал, увеличивающийся до значения 60 с.
Данное поле не имеет специального назначения. Его содержимое может проверять сервер или сетевой монитор для определения длительности ожидания клиентом загрузки по сети. Сервер может использовать значения из поля счетчика секунд для ранжирования запросов по приоритетам, однако в настоящее время в большинстве реализаций это поле игнорируется.