地址解析协议(Address Resolution Protocol,ARP)是通过解析 IP 地址得到数据链路层地址的,是一个在网络协议包中极其重要的网络传输协议。

ARP的作用

将 IP 地址转换为 MAC 地址,ARP 协议在网络层被应用,它是网络层与链路层连接的重要枢纽。
ARP可以将32位IP地址映射为48位的MAC地址。

以太网发数据要知道对方的MAC地址,而在IP层中只知道目标主机的IP地址,这时候使用APR就可以将IP地址转化为MAC地址顺利的发出去。




ARP的工作流程


每台主机或路由器中有一张表,表里面包含着IP地址到MAC地址的映射关系,这张表就叫ARP缓存表。

其运作过程大致可以理解为:
1. 如果主机 A 想发送数据给主机 B,主机 A 首先会检查自己的 ARP 缓存表,查看是否有主机 B 的 IP 地址和 MAC 地址的对应关系,如果有,则会将主机 B 的MAC 地址作为源 MAC 地址封装到数据帧中。如果本地 ARP 缓存中没有对应关系,主机 A 就会向局域网中广播 ARP 请求(包括发送方的 IP 地址、MAC 地址、接收方的 IP 地址),每台主机接收到 ARP 请求后都检查自己的 IP 地址是否与ARP 请求中的接收方 IP 地址相同,若不相同则丢弃 ARP 请求包。

2. 当交换机接受到此数据帧之后,发现此数据帧是广播帧,因此,会将此数据帧从非接收的所有接口发送出去。

3. 当主机 B 接受到此数据帧后,会校对 IP 地址是否是自己的,并将主机 A 的 IP 地 址和 MAC 地址的对应关系记录到自己的 ARP 缓存表中,同时会发送一个 ARP 响应,其中包括自己的 MAC 地址。

4. 主机 A 在收到这个回应的数据帧之后,在自己的 ARP 缓存表中记录主机 B 的 IP地址和 MAC 地址的对应关系。而此时交换机已经学习到了主机 A 和主机 B 的MAC 地址了。


ARP缓存表


当需要发送 IP 数据的时候,主机就会根据目标 IP 地址到 ARP 缓存表中进行查找对应的 MAC 地址,然后通过网卡将数据发送出去。

Win10查看ARP表的命令:arp -a

ARP缓存表的特点


具有寿命性,每个表项的寿命为10分钟,一旦寿命达到就会被删掉。

问题

发送数据包时,没有找到IP地址对应MAC地址,ARP的操作。

- 电脑会先在局域网上广播一个 ARP 请求(目标 MAC 地址为 FF-FF-FF-FF-FF-FF)
- 广播的 ARP 请求发出后,处于同一局域网内的所有主机都会接收到这个请求
- 如果目标 IP 地址与主机自身 IP 地址吻合就会返回一个 ARP 应答,告诉请求者自身的 MAC 地址
- 当我的电脑收到这个 ARP 应答后,就去更新 ARP 缓存表,并且重新将数据发送出去。