The powerful features that add to the utility and flexibility of TCP/IP also add to its complexity. TCP/IP is not as easy to configure as some other networking systems. TCP/IP requires that the configuration provide hardware, addressing, and routing information. It is designed to be independent of any specific underlying network hardware, so configuration information that can be built into the hardware in some network systems cannot be built-in for TCP/IP. The information must be provided by the person responsible for the configuration. This assumes that every system is run by people who are knowledgeable enough to provide the proper information to configure the system. Unfortunately, this assumption does not always prove correct.
Configuration servers make it possible for the network administrator to control TCP/IP configuration from a central point. This relieves the end user of some of the burden of configuration and improves the quality of the information used to configure systems.
TCP/IP has three protocols that simplify the task of configuration: RARP, BOOTP, and DHCP. We begin with RARP, the oldest and most basic of these configuration tools.
RARP, defined in RFC 903, is a protocol that converts a physical network address into an IP address, which is the reverse of what Address Resolution Protocol (ARP) does. A Reverse Address Resolution Protocol server maps a physical address to an IP address for a client that doesn't know its own IP address. The client sends out a broadcast using the broadcast services of the physical network.  The broadcast packet contains the client's physical network address and asks if any system on the network knows what IP address is associated with the address. The RARP server responds with a packet that contains the client's IP address.
The client knows its physical network address because it is encoded in the Ethernet interface hardware. On most systems you can easily check the value with a command. For example, on a Solaris system the superuser can type:
# ifconfig le0 le0: flags=63<UP,BROADCAST,NOTRAILERS,RUNNING> inet 126.96.36.199 netmask ffffff00 broadcast 188.8.131.52 ether 8:0:20:e:12:37
The ifconfig command can set or display the configuration values for a network interface.  le0 is the device name of the Ethernet interface. The Ethernet address is displayed after the ether label. In the example, the address is 8:0:20:e:12:37.
The RARP server looks up the IP address that it uses in its response to the client in the /etc/ethers file. The /etc/ethers file contains the PC's Ethernet address followed by the PC's hostname. For example:
2:60:8c:48:84:49 hazel 0:0:c0:a1:5e:10 hickory 0:80:c7:aa:a8:04 acorn 8:0:5a:1d:c0:7e cashew 8:0:69:4:6:31 pistachio
To respond to a RARP request, the server must also resolve the host name found in the /etc/ethers file into an IP address. Domain name service or the hosts file is used for this task. The following hosts file entries could be used with the ethers file shown above.
hazel 172.16.3.10 hickory 172.16.3.16 acorn 172.16.3.4 cashew 172.16.3.7 pistachio 172.16.3.21
Given these sample files, if the server receives an RARP request that contains the Ethernet address, 0:80:c7:aa:a8:04, it matches it to acorn in the /etc/ethers file. The server uses the name acorn to look up the IP address. It then sends the IP address 172.16.3.4 out as its ARP response.
RARP is a useful tool, but it provides only the IP address. There are still several other values that need to be manually configured. BOOTP is a more flexible configuration tool that provides more values than just the IP address and can deliver those values via the network.