rfc-903

A Reverse Address Resolution Protocol

R. Finlayson, T. Mann, J.C. Mogul, M. Theimer
date1984-06 streamLegacy statusINTERNET STANDARD pages4 canonicalhttps://www.rfc-editor.org/rfc/rfc903 doi10.17487/RFC0903
This RFC suggests a method for workstations to dynamically find their protocol address (e.g., their Internet Address), when they know only their hardware address (e.g., their attached physical network address). This RFC specifies a proposed protocol for the ARPA Internet community, and requests discussion and suggestions for improvements.

also

Extracted elements (15)

design-rationale §III

RARP defines no 'not found' or error reply packets because many RARP servers may be present and any is free to respond. The client detects failure via timeout rather than an explicit negative response.

design-rationale §II

RARP deliberately reuses the ARP packet format to enable code sharing with existing ARP implementations, minimizing development overhead and avoiding modifications to hosts that do not participate in RARP.

design-rationale §III

RARP is specified as a separate protocol at the data-link level with its own Ethertype, rather than piggybacking on ARP, because ARP and RARP are fundamentally different operations not supported equally by all hosts. This prevents existing ARP servers from being confused by RARP packets and makes RARP a general hardware-to-protocol address mapping facility.

design-rationale §II

The RARP server database is intentionally maintained outside the operating system kernel, because maintaining such large databases inside the kernel is undesirable or impossible on many hosts. Implementations require out-of-kernel interaction (e.g., a user-space daemon).

design-rationale §III

The requirement that ar$spa be filled with the responder's protocol address in opcode 4 replies is purely for convenience: it provides a valid (hardware, protocol) pair that may allow the requester to skip a subsequent forward ARP lookup for the server.

design-rationale §II

Unlike ARP, where all hosts are peers maintaining small local caches, RARP requires dedicated server hosts to maintain a full database mapping hardware addresses to protocol addresses. This client/server asymmetry is a core design distinction from ARP.

interoperability-note §III

Because RARP is assigned a distinct Ethertype separate from ARP, existing ARP server implementations will not receive or be confused by RARP packets, requiring no changes to ARP hosts that do not implement RARP.

interoperability-note §III

RARP packets with opcodes 1 or 2 carry the same semantics as in ARP and may be passed directly to existing ARP processing code, preserving backward compatibility.

normative-requirement §III SHOULD

The sender of a RARP request packet should timeout if it does not receive a reply within a reasonable amount of time, since there are no negative-acknowledgement or error packets defined.

protocol-element §III

For Ethernet-to-IP resolution, the fixed field values are: ar$hrd=1 (Ethernet), ar$pro=2048 decimal (IP Ethertype), ar$hln=6 (48-bit Ethernet address), ar$pln=4 (32-bit Internet address).

protocol-element §III

In a RARP reply (opcode 4): ar$sha is the responder's hardware address, ar$spa is the responder's protocol address, ar$tha is the target hardware address (echoed from the request), and ar$tpa is the resolved protocol address of the target.

protocol-element §III

In a RARP request (opcode 3): ar$sha contains the sender's hardware address; ar$tha contains the target hardware address (equal to ar$sha when a host seeks its own protocol address); ar$spa and ar$tpa are undefined.

protocol-element §III

RARP defines two new opcodes: 3 ('request reverse') and 4 ('reply reverse'). Opcodes 1 and 2 retain their ARP meanings; any other opcode is undefined.

security-consideration §III

RFC 903 defines no authentication or authorization mechanism for RARP. Any host on the broadcast medium may respond to a RARP request with an arbitrary protocol address, making the protocol inherently vulnerable to spoofing by a malicious or misconfigured server on the same network segment.

security

wire-format §III

RARP reuses the ARP packet format verbatim: ar$hrd (16 bits), ar$pro (16 bits), ar$hln (8 bits), ar$pln (8 bits), ar$op (16 bits), ar$sha (n bytes), ar$spa (m bytes), ar$tha (n bytes), ar$tpa (m bytes), where n and m are given by ar$hln and ar$pln respectively.

cbor