Skip to content

ARP 协议 ​

Address Resolution Protocol,用于把 IP 地址转化成 MAC 地址 —— 假设在一次发送中,A 知道 B 的 IP,但是在使用以太网发送的时候,以太网帧必须要求填写 MAC 地址,于是会使用一次 ARP 来得到目标的 MAC 地址

其原理也非常简单 —— 先通过路由解析知道了目标 IP 就在当前的局域网内,然后在自己所在的网络内广播,广播内容包含了目标的 IP 地址,然后每个设备会进行检查,如果匹配则返回一个应答。

不过如果对于每一次的请求都进行所在网络内的的广播,在大量的请求同一个设备的时候显得比较愚蠢,于是会先进行一次 Cache 的查询 —— 对于一次请求,先在 Cache 中查询是否已经有这个 IP 对应的 MAC 地址记录,如果有则直接返回;如果没有则进行广播,同时把广播结果记录进 Cache 中

其固定的报文格式 ——

0                   15 16                  31
┌─────────────────────┬─────────────────────┐
│ Hardware Type       │ Protocol Type       │
│ 16 bit              │ 16 bit              │
├──────────┬───────────┬────────────────────┤
│ HLEN     │ PLEN      │ Operation          │
│ 8 bit    │ 8 bit     │ 16 bit             │
├──────────┴───────────┴────────────────────┤
│ Sender Hardware Address                   │
│ Sender MAC                                │
├───────────────────────────────────────────┤
│ Sender Protocol Address                   │
│ Sender IPv4                               │
├───────────────────────────────────────────┤
│ Target Hardware Address                   │
│ Target MAC                                │
├───────────────────────────────────────────┤
│ Target Protocol Address                   │
│ Target IPv4                               │
└───────────────────────────────────────────┘

Released under the MIT License.