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 │
└───────────────────────────────────────────┘