Reverse Address Resolution Protocol (RARP)
RARP provides the opposite service to ARP in that it is used when only theethernet address is known and the IP address is needed.
RARP requests are most commonly sent by diskless clients and JumpStartclients during bootup. A diskless client contains no local storage andknows only its own ethernet address. A JumpStart client contains localstorage, but uses the ethernet address to locate the JumpStart boot server (tostart a remote installation of the Solaris operating environment). The clientuses the RARP protocol to broadcast this ethernet address and asks for thecorresponding IP address.
The following fragment of output from the command shows aclient that is booting. The client issues a RARP request to attempt and find itsIP address. The server that is listening for RARP requests responds. The itemsof interest are in bold:...ETHER: ----- Ether Header -----ETHER:ETHER: Packet 5 arrived at 14:35:1.14ETHER: Packet size = 64 bytesETHER: Destination = ff:ff:ff:ff:ff:ff, (broadcast)ETHER: Source = 8:0:20:8e:48:de, SunETHER: Ethertype = 8035 (RARP)ETHER:ARP: ----- ARP/RARP Frame -----ARP:ARP: Hardware type = 1ARP: Protocol type = 0800 (IP)ARP: Length of hardware address = 6 bytesARP: Length of protocol address = 4 bytesARP: Opcode 3 (REVARP Request)ARP: Sender's hardware address = 8:0:20:8e:48:deARP: Sender's protocol address = 255.255.255.255, BROADCASTARP: Target hardware address = 8:0:20:8e:48:deARP: Target protocol address = ?ARP:ETHER: ----- Ether Header -----ETHER:ETHER: Packet 6 arrived at 14:35:1.18ETHER: Packet size = 42 bytesETHER: Destination = 8:0:20:8e:48:de, SunETHER: Source = 8:0:20:b3:41:1b, SunETHER: Ethertype = 8035 (RARP)ETHER:ARP: ----- ARP/RARP Frame -----ARP:ARP: Hardware type = 1ARP: Protocol type = 0800 (IP)ARP: Length of hardware address = 6 bytesARP: Length of protocol address = 4 bytesARP: Opcode 4 (REVARP Reply)ARP: Sender's hardware address = 8:0:20:b3:41:1bARP: Sender's protocol address = 192.168.0.28, ultra10ARP: Target hardware address = 8:0:20:8e:48:deARP: Target protocol address = 192.168.0.21, systemaARP:...
Notice that in the first packet, the type is and theethernet destination address is , which is theethernet broadcast address. Also, the isset to because the IP address is unknown at this point.
Also in the first packet, the receiving boot server knows which ethernetaddress to respond to because the sender's hardware address is the same asthe Target hardware address8:0:20:8e:48:de.
The second packet shows the type is and the is now set to the IP address of the client(). This is the server responding to the client with its IPaddress.
The in.rarpd daemon
The daemon that listens on a server for incoming RARP requests is. The daemon is started at boot time by the script. The script starts the daemon only if thedirectory exists.
The in.rarpd daemon is started by the /etc/rc3.d/S16boot.serverscript. Prior to Solaris 9, in.rarpd was started by a different script,namely, /etc/rc3.d/S15nfs.server. Make sure you are not tricked by thisif it appears in a question on the exam.
When an incoming RARP request is received from a client, the server processrefers to two files to satisfy the request. The first is ,which contains the ethernet address and the corresponding hostname. The secondfile is , which contains the hostname and thecorresponding IP address. Because it references both of these files, is capable of resolving the IP address from the ethernetaddress provided by the client. It is the IP address that is returned to theclient.
The file /etc/hosts is a symbolic link to /etc/inet/hosts. Thelink has been retained for compatibility with Berkeley Software Distribution(BSD) versions of Unix. You should be aware that this link exists.
If you encounter problems with a client that is failing to locate its IPaddress, you can use the command to monitor RARP packets and youcan also run with the option to obtain additionaldebug messages. The following output from running , showsthe messages that are displayed when the server does not know the ethernetaddress:/usr/sbin/in.rarpd: device hme0 ethernetaddress 8:0:20:b3:41:53in.rarpd: device hme0 address 192.168.0.28in.rarpd: device hme0 subnet mask 255.255.255.0in.rarpd: starting rarp service on device hme0 address 8:0:20:b3:41:1bin.rarpd: RARP_REQUEST for 8:0:20:8e:48:dein.rarpd: could not map hardware address to IP addressin.rarpd: RARP_REQUEST for 8:0:20:8e:48:dein.rarpd: could not map hardware address to IP addressin.rarpd: RARP_REQUEST for 8:0:20:8e:48:dein.rarpd: could not map hardware address to IP address
This code shows what happens on the server. The client, however, receives adifferent messagethe following is displayed repeatedly because it is notreceiving a response from the server:Timeout waiting for ARP/RARP packet
The error is normally due to one of the following:
The ethernet address for the client has been entered incorrectly in.
The ethernet address entry for the client does not exist in.
The IP address or hostname entry for the client has been enteredincorrectly in .
The IP address or hostname entry for the client does not exist in.
The daemon is not running on the server.
You can also gain useful information from the debug option of because it can be used to eliminate some of the potentialcauses of problems. The following output shows the messages that are displayedwhen a JumpStart client successfully obtains its IP address:ultra10# in.rarpd -din.rarpd: device hme0 ethernetaddress 8:0:20:b3:41:1bin.rarpd: device hme0 address 192.168.0.28in.rarpd: device hme0 subnet mask 255.255.255.0in.rarpd: starting rarp service on device hme0 address 8:0:20:b3:41:1bin.rarpd: RARP_REQUEST for 8:0:20:8e:48:dein.rarpd: trying physical netnum 192.168.0.0 mask ffffff00in.rarpd: good lookup, maps to 192.168.0.21in.rarpd: immediate reply sentin.rarpd: RARP_REQUEST for 8:0:20:8e:48:dein.rarpd: trying physical netnum 192.168.0.0 mask ffffff00in.rarpd: good lookup, maps to 192.168.0.21in.rarpd: immediate reply sent
The previous code shows that a RARP request has been received () and executes a successful search for theethernet address (). It then returnsthe requested information (the IP address) to the client ().
|RARP, Reverse Address Resolution Protocol|
The RARP protocol is used to translate hardware interface addresses to protocol addresses.
ARP provides a complementary translation from a protocol address to a hardware interface address.
|Hardware type||Protocol type|
|Hardware address length||Protocol address length||Opcode|
|Source hardware address :::|
|Source protocol address :::|
|Destination hardware address :::|
|Destination protocol address :::|
Hardware type. 16 bits.
|3||Amateur Radio AX.25.|
|4||Proteon ProNET Token Ring.|
|10||Autonet Short Address.|
|12||LocalNet (IBM PCNet or SYTEK LocalNET).|
|16||ATM, Asynchronous Transmission Mode.|
|19||ATM, Asynchronous Transmission Mode.|
|21||ATM, Asynchronous Transmission Mode.|
Protocol type. 16 bits.
Hardware address length. 8 bits.
Length of the hardware address in bytes.
Protocol address length. 8 bits.
Length of the protocol address in bytes.
Opcode. 8 bits.
|3||Request Reverse.||RFC 903|
|4||Reply Reverse.||RFC 903|
Source hardware address. Variable length.
Source protocol address. Variable length.
Destination hardware address. Variable length.
Destination protocol address. Variable length.
[RFC 903] A Reverse Address Resolution Protocol.