AAA

RFC 903 — Протокол RARP

Статус документа

В этом документе описывается метод, позволяющий станциям динамически определять свой адрес протокольного уровня (например, IP) по известному аппаратному адресу.

Документ содержит спецификацию стандарта, предложенного сообществу ARPA Internet и является приглашением к дискуссии в целях развития стандарта.

I. Введение

Хосты типа бездисковых станций зачастую не знают свой протокольный адрес в момент загрузки, но им обычно известен аппаратный адрес сетевого интерфейса. Для взаимодействия с протоколами вышележащих уровней (например, IP) хост должен узнать свой протокольный адрес из некого внешнего источника. Проблема заключается в отсутствии стандартного механизма получения адреса.

Разработанный Пламмером (Plummer) протокол ARP [1] предназначен для решения обратной задачи — определения аппаратного адреса хоста по его протокольному адресу. В данном документе описывается протокол обратного преобразования адресов RARP. Как м в случае ARP, предполагается широковещательная сетевая среда, подобная Ethernet.

Перевод на русский язык

II. Вопросы реализации протокола

Ниже приведены рекомендации по реализации протокола RARP.

III. Предлагаемый протокол

Предлагается выполнять преобразование RARP с помощью отдельного протокола канального уровня. Например, для сред Ethernet пакеты RARP будут иметь значение поля Ethertype (которое будет выделено для этого протокола), отличающееся от ARP. Это будет указывать, что преобразования ARP и RARP различаются фундаментально и поддерживаются хостами по-разному. Воздействие на существующие системы минимально — существующие серверы ARP не будут вводиться в заблуждение пакетами RARP. Этот делает RARP самостоятельным протоколом, который может применяться для отображения аппаратных адресов на адреса любых протоколов вышележащего уровня.

Это приближение обеспечивает простоту реализации клиентской части RARP, но разработка RARP-серверов потребует более значительный усилий. Однако, эти трудности не являются непреодолимыми, как показано в Приложении A, где даны наброски двух вариантов реализации протокола для 4.2BSD Unix.

RARP использует такой же формат пакетов, как протокол ARP, а именно:

ar$hrd  (пространство аппаратных адресов) - 16 битов
ar$pro  (пространство протокольных адресов) - 16 битов
ar$hln  (размер аппаратного адреса) - 8 битов
ar$pln  (размер протокольного адреса) - 8 битов
ar$op   (код операции) - 16 битов
ar$sha  (аппаратный адрес отправителя) - n байтов
ar$spa  (протокольный адрес отправителя) - m байтов
ar$tha  (аппаратный адрес получателя) - n байтов
ar$tpa  (протокольный адрес получателя) - m байтов

Поля ar$hrd, ar$pro, ar$hln и ar$pln имеют такой же смысл, как для протокола ARP (см. [1]).

Предположим, что в качестве аппаратного используется 48-битовый адрес Ethernet, а в качестве протокольного — 32-битовый адрес IP. Нам требуется определить адрес IP, соответствующий известному адресу Ethernet. В этом случае для каждого пакета RARP выполняются равенства ar$hrd = 1 (Ethernet), ar$pro = 2048 (Ethertype для пакетов IP), ar$hln = 6, ar$pln = 4.

Протокол использует два кода операций: 3 (request reverse — запрос обратного преобразования) и 4 (reply reverse — отклик на запрос обратного преобразования). Коды операций 1 и 2 имеют такой же смысл, как указано в [1] — пакеты с такими кодами могут передаваться с использованием обычных программ ARP. Пакеты с любыми другими кодами операций являются ошибочными. Как и ARP, данный протокол не использует пакетов not found (не найдено) или error (ошибка), поскольку серверы RARP не обязаны отвечать на полученные запросы. Отправитель запроса RARP должен задавать для себя время ожидания (timeout) отклика на переданный запрос.

Поля ar$sha, ar$spa, $ar$tha и ar$tpa в пакетах RARP интерпретируются следующим образом:

Для пакетов с кодом операции 3 (request reverse):

ar$sha — аппаратный адрес отправителя пакета.
ar$spa — не определено.
ar$tha — аппаратный адрес получателя.
ar$tpa — не определено.

Для пакетов с кодом операции 4 (reply reverse):

ar$sha — аппаратный адрес отвечающего хоста.
ar$spa — протокольный адрес отвечающего хоста.
ar$tha — аппаратный адрес получателя.
ar$tpa — протокольный адрес получатель (то, что было запрошено).

IV. Литература

Приложение A. Два примера реализации протокола для 4.2BSD Unix

Ниже приведены два наброска различных вариантов реализации сервера RARP для 4.2BSD.

Перевод на русский язык

Николай Малых, moc.milib@hkylamn