ARP operating mechanism

As shown in Figure 2, Host A and Host B are on the same subnet. Host A sends a packet to Host B as follows:

  1. Host A looks through the ARP table for an ARP entry for Host B. If one entry is found, Host A uses the MAC address in the entry to encapsulate the IP packet into a data link layer frame. Then Host A sends the frame to Host B.

  2. If Host A finds no entry for Host B, Host A buffers the packet and broadcasts an ARP request. The payload of the ARP request contains the following information:

    • Sender IP address and sender MAC address—Host A's IP address and MAC address.

    • Target IP address—Host B's IP address.

    • Target MAC address—An all-zero MAC address.

    All hosts on this subnet can receive the broadcast request, but only the requested host (Host B) processes the request.

  3. Host B compares its own IP address with the target IP address in the ARP request. If they are the same, Host B operates as follows:

    1. Adds the sender IP address and sender MAC address into its ARP table.

    2. Encapsulates its MAC address into an ARP reply.

    3. Unicasts the ARP reply to Host A.

  4. After receiving the ARP reply, Host A operates as follows:

    1. Adds the MAC address of Host B into its ARP table.

    2. Encapsulates the MAC address into the packet and sends the packet to Host B.

Figure 2: ARP address resolution process

If Host A and Host B are on different subnets, Host A sends a packet to Host B as follows:

  1. Host A broadcasts an ARP request where the target IP address is the IP address of the gateway.

  2. The gateway responds with its MAC address in an ARP reply to Host A.

  3. Host A uses the gateway's MAC address to encapsulate the packet, and then sends the packet to the gateway.

  4. If the gateway has an ARP entry for Host B, it forwards the packet to Host B directly. If not, the gateway broadcasts an ARP request, in which the target IP address is the IP address of Host B.

  5. After the gateway gets the MAC address of Host B, it sends the packet to Host B.