Протокол RARP (Reverse Address Resolution Protocol), определенный документом RFC 903, позволяет выполнять преобразование физического сетевого адреса в адрес IP, то есть его функция обратна функции протокола разрешения адресов (Address Resolution Protocol, ARP).
Сервер RARP преобразует физический адрес в IP-адрес для клиента, которому не известен собственный IP-адрес. Клиент посылает широковещательное сообщение, пользуясь соответствующими службами физической сети. Широковещательный пакет содержит адрес клиента в физической сети и запрашивает у любой компетентной системы сети IP-адрес, связанный с данным физическим адресом. Сервер RARP отвечает пакетом, содержащим IP-адрес клиента.
Клиент знает свой адрес в физической сети, поскольку этот адрес зашит в интерфейсное устройство Ethernet. В большинстве систем есть команда, с помощью которой это значение можно с легкостью получить. Например, в системе Solaris 8 суперпользователь может набрать такую команду:
It ifconfig dnet0 dnet0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST, IPv4> mtu 1500 index 2 inet 172.16.12.1 netmask ffffffOO broadcast 172.16.12.255 ether 0:0:c0:dd:d4:da
Команда ifconfig позволяет устанавливать и отображать значения настройки сетевых интерфейсов. dnet0 - это имя устройства интерфейса Ethernet. Адрес Ethernet отображается после метки ether. В приведенном примере это адрес 0:0:c0:dd:d4:da.
Сервер RARP ищет IP-адрес для ответа клиенту в файле /etc/ethers. Файл /etc/ethers содержит строки, состоящие из адресов Ethernet и имен узлов клиентов. Например:
2:60:8c:48:84:49 |
clock |
0:0:c0:a1:5e:10 |
ring |
0:80:c7:aa:a8:04 |
24seven |
8:0:5a:1d:c0:7e |
limulus |
8:0:69:4:6:31 |
arthropod |
Чтобы ответить на RARP-запрос, сервер должен также выполнить разрешение имени узла из файла /etc/ethers в адрес IP. С этой целью используется DNS или файл таблицы узлов. Вот такие записи файла hosts узлов могут соответствовать приведенному выше файлу ethers:
clock |
172.16.3.10 |
ring |
172.16.3.16 |
24seven | 172.16.3.4 |
limulus | 172.16.3.7 |
arthropod | 172.16.3.21 |
Имея эти файлы, сервер, получив RARP-запрос с адресом Ethernet 0:80:с7:аа:а8:04, сопоставляет адрес с именем 24seven из файла /etc/ethers. Затем сервер ищет IP-адрес для имени 24seven и возвращает ответ ARP - адрес IP 172.16.3.4.
RARP - полезный инструмент, но позволяет получать только адрес IP. Остается еще целый набор значений, которые приходится указывать вручную. Есть другое, более гибкое средство настройки, - протокол инициализации ВООТР (Bootstrap Protocol), предоставляющий дополнительные значения, помимо адреса IP, и позволяющий получать эти значения по сети.
Определение ВООТР дается документами RFC 951 и RFC 1532. Протокол ВООТР описан в качестве альтернативы RARP: если используется ВООТР, отпадает необходимость в применении RARP. При этом ВООТР - в качестве протокола настройки - имеет ряд преимуществ перед RARP. Он предоставляет гораздо больший объем информации и потенциально позволяет этот объем наращивать. В исходную спецификацию был заложен механизм развития протокола в виде возможности создания разработчиками расширений. Определение подобных расширений впервые было формализовано в RFC 1048, с ходом времени обновлялось, и на сегодняшний день в наиболее полном виде содержится в RFC 2132. Протокол ВООТР и его расширения стали фундаментом протокола динамической настройки узлов DHCP (Dynamic Host Configuration Protocol). Протокол DHCP пришел на смену ВООТР, так что именно этим протоколом вы будете пользоваться в своих сетях.