Networking 101 : ARP (Address Resolution Protocol).

The logical address and the hardware address:

The IP address is the logical address of the network interfaces, it is a "software address".
At the bottom layer, the network interface is identified by its hardware address (MAC address for Ethernet cards).
The hardware address and the logical IP address are two different identifiers for the same piece of hardware
To be able to use the IP address, we map the hardware addresses to the logical IP address using the Address Resolution Protocol (ARP) The mapping is kept in an ARP cache.

Example (ARP cache for host : 

ARP Packets:

ARP frames live in the local LAN segment and they cant go through routers.
Below some of the information carried in the ARP  messages:
  • Type of Hardware : Ethernet MAC address for example.
  • Type of Protocol : IP protocol as en example.
  • Sender hardware and protocol address : IP and MAC address for example.
  • Target hardware and protocol address : IP and MAC address for example.

The Source host ( wants to communicate with Host C, it checks for the address of Host C in its ARP table, When it doesn't find the address, it sends an ARP request as a broadcast(to all the hosts) on the LAN.

The ARP request contains the IP address for which the source Host is looking for the corresponding Ethernet address.
All machines on the network receive the request and the device with the requested IP address sends back a reply with the hardware address.
The source system and the destination will both cache the Hardware address/IP address mapping in the ARP table. 

The hardware address is in the ARP cache:

If Source host ( finds the below mapping in its ARP cache for Host C " at 01-FF-Z4-G7-RF-CD" , it uses it to get the hardware addresss to be able to communicate with Host C without the need to ask all the host of the network.

ARP cache: a table with mappings between IP addresses and Ethernet addresses.

Hardware address for a host in the ARP cache:

If the hardware address of a host is in the cache we can display it using the below command:


Leave as a comment: