The Reverse Address Resolution Protocol (RARP) is a data link layer protocol that enables a client host, such as a diskless workstation, to discover its Internet Protocol (IP) address by broadcasting its hardware address (e.g., Media Access Control or MAC address) on a local network and receiving the corresponding IP address from a RARP server.[1] Developed in the early 1980s, RARP was particularly useful for bootstrapping devices without local storage, allowing them to obtain network configuration at startup when only the hardware address was known.[1]RARP operates similarly to the Address Resolution Protocol (ARP) but in reverse, utilizing the same basic packet structure defined in RFC 826, with key modifications including distinct operation codes: opcode 3 for RARP requests and opcode 4 for replies.[1] In a typical exchange, the client fills the sender hardware address field with its own MAC address, sets the sender protocol address to all zeros, and broadcasts the packet; the server, maintaining a database of hardware-to-IP mappings, responds unicast with the client's IP address in the target protocol address field.[1] This process requires at least one dedicated RARP server per network segment, which must handle broadcasts and maintain an up-to-date mapping database, often stored externally to the server's kernel for practicality.[1]Despite its simplicity, RARP has significant limitations, including its reliance on link-layer broadcasts, which restricts it to local networks without router support, and the absence of mechanisms for error reporting or addressleasemanagement, leading to potential timeouts without replies.[1] These constraints made implementation challenging, as it necessitated modifications to low-level network drivers.[2] Consequently, RARP was largely superseded by the Bootstrap Protocol (BOOTP) in 1985, which operates over IP and UDP to provide more flexible address assignment and boot file selection without requiring kernel changes.[2] BOOTP was further evolved into the Dynamic Host Configuration Protocol (DHCP) in the 1990s, offering dynamic leasing, centralized configuration, and support for larger networks, rendering RARP obsolete in modern environments.[3]
Fundamentals
Definition and Purpose
The Reverse Address Resolution Protocol (RARP) is a networking protocol designed to enable devices to discover their Internet Protocol (IP) address by broadcasting their Media Access Control (MAC) address to a RARP server.[1] This inverse mapping from layer 2 hardware addresses (such as MAC) to layer 3 protocol addresses (such as IP) serves as the counterpart to the Address Resolution Protocol (ARP), which performs the forward resolution.[1] RARP operates at the network access layer, utilizing broadcast frames to solicit responses from servers that maintain databases of address mappings.[4]Its primary purpose is to facilitate initial network configuration for devices lacking local storage or preconfigured IP addresses, particularly in environments predating dynamic host configuration protocols like DHCP.[1] For instance, diskless workstations or thin clients booting over a network rely on RARP to obtain their assigned IP address during startup, allowing them to proceed with further protocol exchanges such as file transfers or remote booting.[1] This mechanism was essential for early networked systems where manual IP assignment was impractical for resource-constrained hardware.[1]
Comparison with ARP
The Reverse Address Resolution Protocol (RARP) shares several foundational elements with the Address Resolution Protocol (ARP), both designed to facilitate address mapping within local broadcast networks such as Ethernet.[1][5] Both protocols rely on broadcast transmissions for requests, assuming a shared medium where packets reach all devices on the local segment without requiring routing.[1][5] Additionally, they employ similar message formats within the payload, including fields for hardware and protocol types, address lengths, opcodes, and sender/target addresses, enabling efficient encapsulation in Ethernet frames.[1] However, RARP uses EtherType 0x8035 in the Ethernet header, distinct from ARP's 0x0806, to differentiate the protocol at the link layer.[6][5] Both protocols maintain mappings through tables: ARP via dynamic caches on individual hosts that store resolved pairs for reuse, and RARP via centralized databases on dedicated servers that provide authoritative responses.[5][1]Despite these parallels, RARP and ARP differ fundamentally in purpose and mechanics, reflecting their complementary roles in network communication. ARP performs forward resolution, mapping a known protocol address (e.g., IP) to a hardware address (e.g., MAC) to enable packet transmission to a specific destination during ongoing sessions.[5] In contrast, RARP conducts reverse resolution, allowing a device to obtain its own protocol address from its known hardware address, primarily for initial configuration in environments like diskless workstations.[1] Operationally, ARP requests use opcode 1 and elicit unicast replies with opcode 2, directed solely to the requester to minimize network overhead.[5] RARP, however, employs opcode 3 for requests and 4 for replies, also using unicast for responses after the initial broadcast query, but it depends on external servers rather than peer hosts for resolution.[1]A core distinction lies in their usage patterns and network implications. ARP supports repeated, dynamic discoveries essential for sustained data exchange, with caches updated on-demand to adapt to changing topologies.[5] RARP, by design, serves as a one-time bootstrap mechanism, invoked infrequently during device startup to acquire an IP address before further protocols like ARP can take over.[1] This positions RARP as a specialized, server-reliant tool for address acquisition, whereas ARP empowers decentralized, host-driven communication within the local network.[5][1]
Operation
Request and Response Process
The Reverse Address Resolution Protocol (RARP) operates through a straightforward request-response exchange designed to enable a client device to obtain its Internet Protocol (IP) address when it only knows its Media Access Control (MAC) address. The process begins when a client, typically a diskless workstationbooting up, generates a RARP request packet containing its own MAC address in both the sender and target hardware address fields. This request is broadcast across the local network using the Ethernet broadcast address ff:ff:ff:ff:ff:ff, ensuring that all devices on the shared medium receive it.[1]Upon receiving the broadcast request, any RARP server on the network examines the MAC address and consults its internal database, which maps hardware addresses to corresponding IP addresses. If a match is found, the server constructs a RARP reply packet, populating the target protocol address field with the client's assigned IP address while including its own IP address in the sender protocol address field for potential further communication. Unlike the request, the reply is sent as a unicastframe directly to the client's MAC address, allowing targeted delivery without unnecessary network flooding. The client then configures its network interface with the received IP address, enabling subsequent network operations such as mounting remote filesystems.[1]This mechanism employs a simple, Ethernet-layer protocol akin to the User Datagram Protocol (UDP) in its lack of connection establishment, relying instead on direct frame encapsulation without higher-layer involvement. RARP includes no built-in authentication to verify the requester's identity, nor does it provide error packets for unmatched addresses; instead, the client relies on timeouts—typically after several unanswered requests—to detect failure and retry or halt the boot process. Multiple servers may respond if configured, with the client accepting the first valid reply.[1]For instance, in 1980s local area networks, a Sun Microsystems diskless workstation would broadcast a RARP request during boot to a central server, receive its IP address via unicast reply, and proceed to access networked resources like shared storage.[7]
Packet Format
The Reverse Address Resolution Protocol (RARP) packet is encapsulated in an Ethernet frame with an EtherType value of 0x8035, distinguishing it from ARP packets which use 0x0806.[1][6] The payload is a fixed 28-byte structure, mirroring the ARP format defined in RFC 826, consisting of an 8-byte header followed by 20 bytes of address fields.[1][5]The header fields specify the address types and operation, while the subsequent fields hold the hardware (MAC) and protocol (IP) addresses involved in the exchange. For Ethernet and IPv4, the hardware type is 1 (10 bits unused, padded with zeros), the protocol type is 0x0800, the hardware address length is 6 bytes, and the protocol address length is 4 bytes.[1] The opcode field indicates the packet type: 3 for a RARP request and 4 for a reply.[1]In a request packet (opcode 3), the sender hardware address and target hardware address are both set to the requester's 6-byte MAC address, while the sender protocol address and target protocol address are both zeroed (0.0.0.0).[1] This setup allows the server to identify the requester by MAC and respond with the appropriate IP. In a reply packet (opcode 4), the sender hardware and protocol addresses carry the 6-byte MAC and 4-byte IP of the responding server, the target hardware address repeats the requester's MAC from the request, and the target protocol address provides the assigned 4-byte IP for the requester.[1]The following table illustrates the RARP packet structure for Ethernet/IPv4:
The Reverse Address Resolution Protocol (RARP) originated in the early 1980s at Stanford University, driven by the emerging need for diskless workstations to obtain IP addresses dynamically over a network without relying on local storage. This development addressed the bootstrapping challenges in environments where devices knew only their hardware (MAC) addresses, paving the way for efficient network initialization in academic and early commercial computing setups.[8]RARP was created as a foundational solution for such systems, coinciding with the rise of diskless architectures and serving as a precursor to protocols like BOOTP, which built upon its concepts for more robust address assignment. Sun Microsystems, founded by Stanford alumni, integrated RARP into its SunOS operating system to support network booting of low-cost workstations, highlighting its practical role in early UNIX-like deployments.[9]The protocol was formally specified in RFC 903, published on June 1984 by Ross Finlayson, Timothy Mann, Jeffrey Mogul, and Marvin Theimer from Stanford University's Computer Science Department. This document defined RARP as a straightforward extension of ARP (RFC 826), inverting the mapping process to allow a client to broadcast its hardware address and receive its corresponding IP address from a server maintaining a mapping database.[8]RARP emerged specifically to resolve IP assignment in configuration-less environments, such as those without non-volatile storage for static addresses, thereby bridging a gap in network protocols prior to the dominance of dynamic allocation methods.[8]Initial implementations focused on UNIX-like systems for network booting, enabling diskless nodes to join TCP/IP networks—a capability that predated the widespread commercial adoption of TCP/IP in the mid-1980s.[8]
Evolution and Standardization
Following its initial specification in RFC 903, RARP saw rapid integration into operating systems during the mid-1980s, notably in the 4.2BSD Unix release, where example server implementations were provided to enable diskless workstations to resolve IP addresses over Ethernet networks.[8] This adoption extended to other Unix variants and early networking stacks, facilitating broader use in local area networks (LANs) for boot-time address discovery without requiring disk storage on client devices.[8]RARP's design influenced subsequent protocols, particularly the Bootstrap Protocol (BOOTP) outlined in RFC 951 (1985), which extended RARP's core function of mapping hardware addresses to IP addresses by operating at the IP/UDP layer to avoid kernel modifications and add support for server host and boot file identification.[10] While the IETF initially recognized RARP on the early standards track as a proposed protocol under RFC 903, it received no formal updates or revisions beyond this document, remaining limited to its original link-layer scope.[1] Additionally, RARP was incorporated into IEEE 802 specifications for LANs through the assignment of EtherType 0x8035, standardizing its encapsulation in Ethernet frames for protocol identification.[6]As a transitional mechanism, RARP bridged early diskless booting needs until the Dynamic Host Configuration Protocol (DHCP) in RFC 2131 (1997) superseded it by introducing dynamic IP address leasing, relay agent support, and comprehensive configuration options, addressing RARP's limitations in scalability across routed networks.[11] By the late 1980s, network vendors such as Cisco had incorporated RARP support into their routers, starting with software releases around 1988, to ensure compatibility with legacy Unix-based diskless systems in enterprise environments.[12]
Applications and Legacy
Traditional Uses
The Reverse Address Resolution Protocol (RARP) was primarily employed to bootstrap diskless workstations by enabling them to obtain their Internet Protocol (IP) addresses, which were essential for subsequent network file system (NFS) mounting and loading operating system images from central servers. This was particularly vital for early systems lacking non-volatile storage, such as early diskless Sun workstations, including those in the Sun-2 series produced by Sun Microsystems in the early 1980s, where the hardware address (e.g., Ethernet MAC) served as the sole identifier during boot.[13] In this process, a diskless client broadcast a RARP request to acquire its IP address, allowing it to proceed with NFS-based root filesystem mounting from a designated server.[14]During the 1980s, RARP found widespread adoption in academic and research local area networks (LANs), where resource constraints favored centralized computing models over standalone machines.[15] It necessitated dedicated RARP servers, typically hosted on the same machines maintaining ARP tables, to map hardware addresses to pre-assigned IP addresses and respond to broadcast queries from booting clients. This setup supported thin-client architectures, minimizing local hardware to basic processors, memory, and network interfaces while relying on remote servers for operating system kernels, swap space, and application binaries post-IP assignment.A representative example of RARP's application occurred in university computing clusters, where multiple X-terminals utilized the protocol to join the network during initialization before loading graphical applications via NFS from a central host.[14] Such configurations enabled efficient resource sharing in environments like research labs, where dozens of low-cost terminals could access shared computational power without individual disk drives.
Current Status and Alternatives
The Reverse Address Resolution Protocol (RARP) has been largely obsolete since the 1990s, following its replacement by more advanced protocols capable of handling broader network configuration needs. Modern operating systems, including Windows 10 and later versions, do not provide built-in support for RARP, as it was superseded by protocols offering greater flexibility and security.[16] Similarly, Linux kernels post-version 2.3 lack native RARP support, requiring legacy user-space daemons or modules only for rare backward-compatibility scenarios in older environments.[17] As of 2025, RARP is now considered obsolete but may persist in some legacy systems where protocol upgrades are impractical due to hardware constraints.[18]The protocol's limitations, such as reliance on broadcast messages without relay agent support, restricted its scalability across subnets and contributed to its deprecation by the Internet Engineering Task Force (IETF) in favor of standardized alternatives.[19] While not formally designated as "Historic" in IETF standards documents, RARP's RFC 903 has been effectively superseded, with no active development or endorsement in contemporary networking specifications.[20] Migration from RARP typically involves transitioning to static IP configurations for simple setups or adopting dynamic protocols for automated address assignment.Primary alternatives include the Bootstrap Protocol (BOOTP), which extended RARP's functionality with basic subnet support via relay agents as defined in RFC 951, and the Dynamic Host Configuration Protocol (DHCP), which provides comprehensive IP leasing, options for additional parameters, and reverse mapping through the DHCID option in both IPv4 (RFC 2131) and IPv6 (RFC 8415) variants. For IPv6 environments, Stateless Address Autoconfiguration (SLAAC) enables automatic address derivation from MAC addresses without a dedicated server, as outlined in RFC 4862, eliminating the need for RARP-like mechanisms. These successors address RARP's shortcomings by supporting routed networks and centralized management, facilitating seamless integration in modern infrastructures.