Reverse Address Resolution Protocol (RARP) is a network-specific standard protocol. It is described in RFC 903. Some network hosts, such as a diskless workstation, do not know their own IP address when they are booted. To determine their own IP address, they use a mechanism similar to ARP, but now the hardware address of the host is the known parameter, and the IP address is the queried parameter.
The reverse address resolution is performed the same way as the ARP address resolution. The same packet format is used for the ARP.
An exception is the operation code field that now takes the following values−
The physical header of the frame will now indicate RARP as the higher-level protocol (8035 hex) instead of ARP (0806 hex) or IP-(0800 hex) in the Ether type field.
When a framework with a local disk is bootstrapped, it generally accepts its IP address from a configuration document that's read from a disk file. But a system without a disk, including an X terminal or a diskless workstation, needs some other way to accept its IP address.
The feature of RARP is for the diskless framework to read its specific hardware address from the interface card and send a RARP request asking for someone to reply with the diskless systems IP address.
The format of a RARP packet is almost identical to an ARP packet. The only difference is that the frame type is 0X8035 for a RARP request or reply, and the op-field has a value of 3 for a RARP request and 4 for a RARP reply.
The problem with RARP includes its use of a link-layer broadcast, preventing most routers from forwarding a RARP request, and the minimal information returned just the system's IP address. While the RARP concept is easy, the implementation of a RARP server is system dependent.
Some differences arise from the concept of RARP itself−