Lets say we have 3 devices in the same shared medium : A, B and C.

A wants to send a message to B, so before, it sends an ARP request as a broadcast message. When B receives it, it will update its ARP table with A's MAC address and send a unicast response. C also saw A's broadcast message, so it could also add A's MAC address.

Therefore, I think that A will end up having B's address in its ARP table and vice versa, but I am not sure about what happens with C.

Any help would be appreciated. Thanks in advance!

2 Answers 2


C also saw A's broadcast message, so it could also add A's MAC address.

That depends on the OS. By the RFC, C would only update its ARP table if an entry for A already existed in its ARP table.

RFC 826, An Ethernet Address Resolution Protocol -- or -- Converting Network Protocol Addresses to 48.bit Ethernet Address for Transmission on Ethernet Hardware has pseudocode for what is supposed tp happen, but different OSes (off-topic here) may do it differently:

Packet Reception:

When an address resolution packet is received, the receiving Ethernet module gives the packet to the Address Resolution module which goes through an algorithm similar to the following. Negative conditionals indicate an end of processing and a discarding of the packet.

?Do I have the hardware type in ar$hrd?
Yes: (almost definitely)
  [optionally check the hardware length ar$hln]
  ?Do I speak the protocol in ar$pro?
    [optionally check the protocol length ar$pln]
    Merge_flag := false
    If the pair <protocol type, sender protocol address> is
        already in my translation table, update the sender
        hardware address field of the entry with the new
        information in the packet and set Merge_flag to true.
    ?Am I the target protocol address?
      If Merge_flag is false, add the triplet <protocol type,
          sender protocol address, sender hardware address> to
          the translation table.
      ?Is the opcode ares_op$REQUEST?  (NOW look at the opcode!!)
        Swap hardware and protocol fields, putting the local
            hardware and protocol addresses in the sender fields.
        Set the ar$op field to ares_op$REPLY
        Send the packet to the (new) target hardware address on
            the same hardware on which the request was received.

Each ARP table entry is created or purged on its own. An ARP table entry is created when a host needs to send something to a layer-3 address for which there is no corresponding layer-2 address in the ARP table. An entry in an ARP table will time out and be purged after a period of non-use. It will be recreated the next time the host wants to send something to the layer-3 address.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.