One approach is to make each machine on the network maintain a table that maps internet addresses to physical addresses. A machine that needs to send a datagram to another machine on the network consults the table to find the destination physical address, and fills this address in the physical header.
A disadvantage of this approach is that if the physical address of a host changes (due to replacement of a hardware interface, for instance) tables of all hosts need to be changed. Moreover, it is difficult to bring a new machine dynamically into the network, which is something we want in this word of mobile computing. Therefore the DARPA Internet uses a different approach called ARP (for Address Resolution Protocol). The idea is very simple: When machine A wants to send a datagram to machine B, it broadcasts a packet that supplies the internet address of B, and requests B's physical address. Host B receives the request and sends a reply that contains its physical address. When A receives the reply, it uses the physical address to send the datagram directly to B.
Each host maintains a cache of recently acquired internet-physical address
This cache is looked up before an ARP packet is sent.
In the above discussion we have assumed that node B knows its internet address. How does a node know its internet address? Machines connected to secondary storage can keep the address on a local file, which the operating system reads at startup. Diskless machines however support only remote files, to access which they need to communicate with some file server. However, they do not know the internet address of the file server either.
One approach, illustrated by the Reverse Address Translation Protocol (RARP), is for a diskless machine to broadcast a packet requesting its internet address. Some server, that serves such requests, locates the internet address of the machine and sends back a message containing the internet address of the requester.