Reverse ARP
Reverse ARP (RARP, обратный ARP) — это сетевой протокол канального уровня, предназначенный для определения IP-адреса устройства по его известному MAC-адресу. В отличие от протокола ARP (Address Resolution Protocol), который решает обратную задачу (по IP-адресу находит MAC-адрес), RARP использовался в ранних компьютерных сетях для автоматической настройки бездисковых рабочих станций, которым требовалось узнать собственный IP-адрес при загрузке.
История и предпосылки
Протокол RARP был разработан в начале 1980-х годов и описан в RFC 903 (1984 год). Его появление было связано с необходимостью автоматической конфигурации сетевых устройств, не имеющих собственных постоянных запоминающих устройств (например, бездисковых станций X-терминалов или специализированных рабочих станций). Такие устройства при включении не могли хранить IP-адрес локально, поэтому им требовался механизм для его запроса у сервера.
RARP стал одним из первых протоколов, реализующих идею «динамической конфигурации» сети, но впоследствии был вытеснен более совершенными протоколами — BOOTP (Bootstrap Protocol) и DHCP (Dynamic Host Configuration Protocol), которые предоставляли больше возможностей (передача маски подсети, шлюза по умолчанию, DNS-серверов и т. д.).
Принцип работы
Протокол RARP работает на канальном уровне (уровень 2 модели OSI) и использует те же форматы кадров, что и ARP. Основное отличие — в типе операции (opcode) и направлении разрешения адресов.
- Инициализация запроса: Устройство (например, бездисковая станция) при загрузке отправляет широковещательный RARP-запрос (broadcast) на MAC-адрес FF:FF:FF:FF:FF:FF. В этом запросе указывается собственный MAC-адрес устройства в поле «Адрес отправителя (аппаратный)», а поле «Адрес отправителя (сетевой)» остаётся пустым (нулевым).
- Ответ сервера: RARP-сервер, который обслуживает сегмент сети, получает этот широковещательный кадр. Он ищет в своей таблице (обычно статически настроенном файле, например,
/etc/ethersв Unix-системах) соответствие между MAC-адресом и IP-адресом. Если соответствие найдено, сервер отправляет RARP-ответ (unicast) обратно запрашивающему устройству, указывая в поле «Адрес отправителя (сетевой)» назначенный IP-адрес. - Применение: Получив ответ, устройство устанавливает свой IP-адрес и может продолжить загрузку (например, загрузить операционную систему с сетевого диска).
Формат пакета RARP
Формат пакета RARP идентичен формату ARP, различаются только значения полей:
| Поле | Размер (байт) | Описание |
|---|---|---|
| Тип аппаратного адреса (HTYPE) | 2 | Обычно 1 для Ethernet |
| Тип протокола (PTYPE) | 2 | Обычно 0x0800 для IPv4 |
| Длина аппаратного адреса (HLEN) | 1 | 6 для Ethernet |
| Длина сетевого адреса (PLEN) | 1 | 4 для IPv4 |
| Операция (OPER) | 2 | 3 — RARP-запрос, 4 — RARP-ответ |
| Аппаратный адрес отправителя (SHA) | 6 | MAC-адрес запрашивающего устройства |
| Сетевой адрес отправителя (SPA) | 4 | IP-адрес сервера (в запросе — нули) |
| Аппаратный адрес получателя (THA) | 6 | MAC-адрес запрашивающего устройства (в запросе — нули) |
| Сетевой адрес получателя (TPA) | 4 | IP-адрес запрашивающего устройства (в запросе — нули) |
Ограничения и недостатки
RARP имел ряд фундаментальных ограничений, которые привели к его вытеснению:
- Работа только на канальном уровне: RARP не может маршрутизироваться между подсетями, так как его широковещательные запросы не проходят через маршрутизаторы. Для обслуживания нескольких сегментов требовалось устанавливать RARP-сервер в каждом физическом сегменте.
- Статическая конфигурация: Сервер RARP требовал ручного ведения таблицы соответствия MAC-IP, что было трудоёмко при большом количестве устройств.
- Отсутствие дополнительной информации: RARP передавал только IP-адрес, не предоставляя маску подсети, шлюз по умолчанию, DNS-серверы и другие параметры, необходимые для полноценной работы в сети.
- Зависимость от Ethernet: Протокол изначально был разработан для Ethernet и не поддерживал другие технологии канального уровня (Token Ring, FDDI и т. д.) без расширений.
Сравнение с ARP и другими протоколами
| Характеристика | ARP | RARP | BOOTP/DHCP |
|---|---|---|---|
| Назначение | Определение MAC по IP | Определение IP по MAC | Полная конфигурация сети |
| Уровень OSI | Канальный (L2) | Канальный (L2) | Прикладной (L7) поверх UDP |
| Маршрутизация | Нет (широковещание в подсети) | Нет (широковещание в подсети) | Да (через ретрансляторы) |
| Дополнительные параметры | Нет | Нет | Маска, шлюз, DNS, домен и др. |
| Динамическое назначение | Нет | Нет | Да (пулы адресов) |
| RFC | RFC 826 (1982) | RFC 903 (1984) | RFC 951 (1985), RFC 2131 (1997) |
Применение
В современных сетях RARP практически не используется. Он был актуален в 1980-х — начале 1990-х годов для бездисковых станций (например, Sun Microsystems, DEC, Hewlett-Packard), которые загружали операционную систему с сервера по протоколу TFTP. С появлением BOOTP (1985) и DHCP (1993) RARP был полностью вытеснен. В современных операционных системах (Linux, Windows, macOS) поддержка RARP либо отсутствует, либо реализована только для обратной совместимости.
Однако принцип «обратного разрешения адресов» нашёл применение в других технологиях. Например, протокол ARP может использоваться в обратном направлении (Inverse ARP, InARP) в сетях Frame Relay и ATM для определения IP-адреса по известному адресу канального уровня (DLCI или VPI/VCI). Также существует протокол Reverse Address Resolution Protocol (RARP) в контексте IPv6 (NDP — Neighbor Discovery Protocol), который выполняет аналогичные функции, но с более широкими возможностями.
Интересные факты
- В RFC 903 протокол называется «A Reverse Address Resolution Protocol», хотя в литературе закрепилось название «Reverse ARP».
- RARP-серверы часто реализовывались как часть более крупных серверных пакетов (например, в составе SunOS или BSD Unix).
- В некоторых реализациях RARP-сервер мог обслуживать несколько сегментов сети, если на маршрутизаторе была включена поддержка proxy-RARP (аналог proxy-ARP), что позволяло отвечать на запросы из других подсетей.
Источники
- RFC 903 — A Reverse Address Resolution Protocol (1984).
- RFC 826 — An Ethernet Address Resolution Protocol (1982).
- Стивенс У. Р. «TCP/IP. Иллюстрированное руководство. Том 1. Протоколы» (2003).
- Таненбаум Э., Уэзеролл Д. «Компьютерные сети» (5-е издание, 2012).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →