.. title: ARP messages: Request, Reply, Probe, Announcement .. slug: arp-messages .. date: 2016-01-26 20:46:00 .. tags: network .. description: ARP, as originally specified in [RFC 826](http://tools.ietf.org/html/rfc5227), had two message types: `REQUEST` and `REPLY`. But besides that one can hear of two "other" ARP messages: `PROBE` `ANNOUNCEMENT`, the latter also called "**gratuitous ARP**". They happen when a host send the **reply** message not in response to any preceding request; this has been formalized in [RFC 5227](http://tools.ietf.org/html/rfc5227). One may find confusing that: * The two "new" messages do not extend the protocol. In particular, they do not introduce new ARP message types. How can we speak about "new messages"? * Source and destination MAC addresses are present in the MAC headers, but there are also "**Source Hardware Address**" and "**Target Hardware Address**" fields in the ARP body. Why this duplication? These two questions are related. The table below shows the **MAC headers** and (relevant) **ARP protocol fields** for each of the four messages. The differences help to understand how each field is used.
Message | Sent when the host... | MAC headers | ARP body | |||||
src MAC | dst MAC | message type | Source Hardware Address | Source Protocol Address | Target Hardware Address | Target Protocol Address | ||
request | wants to send an IP packet, but does not know the MAC address of the destination | own | broadcast | REQUEST | own | own | 0 | destination's |
reply | receives an ARP request to an IP address this host owns | own | destination's, or broadcast1 | REPLY | own | own | requestor's | requestor's |
probe (RFC 5227, 2.1) | configures a new IP address for an interface | own | broadcast | REQUEST2 | own | 03 | 0 | probed |
announcement (RFC 5227, 2.3) | after a probe, concludes that it will use the probed address | own | broadcast | REQUEST2 | own | new own | 0 | new own |