This is what I know so far:
IP and MAC addresses are both needed. If you use the analogy of sending a letter, both a physical street address and a logical name are needed to complete delivery. A network operates in much the same fashion.
The network stack is implemented in layers. The most common method used to explain its operation is the OSI model. Toward the bottom of the stack are the physical layer protocols. An example of a physical layer protocol is Ethernet. Ethernet nodes are identified by MAC address. MAC addressing is the method of communication used to communicate on a LAN.
Higher up the stack are logical protocols. An example of a logical protocol is IP. Therefore if IP needed to send information to the gateway router in must pass the data packet down the stack to the NIC. This resolution of a known IP to an unknown physical address is known as ARP. Since the NIC does not know the physical address of the gateway router, it performs an ARP to determine the gateway routers physical address. Once this information is returned, the packet can be addresses with the gateway routers MAC address and the packet can be sent out on the wire. Most systems cache this information so that an ARP does not have to be performed each time a packet is transmitted.
This was first published in August 2003