ARP协议的工作原理
一、ARP的定义
ARP协议(地址解析协议):根据IP地址以广播方式获取与其对应的目标主机MAC地址,并将MAC地址存入ARP缓存表。
注意:IP地址是可变的,而MAC地址(即物理地址)是唯一的。
二、ARP的工作原理
1、在PC1给PC2发送数据之前,先查看PC1的缓存表中是否有目标主机PC2的MAC地址记录。(若没有)
2、PC1发送ARP请求报文(广播),用来查找目标主机IP所对应的MAC地址。由于不知道目标主机的MAC地址,所以目标MAC地址设置为广播地址0xFFFFFFFFFFFF,此报文便会发送给局域网中的所有主机设备。
3、所有主机在收到ARP请求消息后,由于请求的目标IP地址与PC2的IP地址匹配上了,故目标主机PC2回复ARP应答报文给PC1(单播);而其它不匹配的主机则丢弃该ARP请求。
4、PC1更新ARP缓存,将目标主机的IP地址与MAC地址的对应关系存储在ARP缓存表中,并使用目标主机的MAC地址发送数据目标主机。(在缓存表里的MAC地址可以用来直接发送数据,而不用在广播查找MAC地址了)
三、ARP报文在链路层进行封装
ARP报文不是直接在网络层上发送的,它还是需要向下传输到数据链路层,所以当ARP报文传输到数据链路层之后,需要再次进行封装。以以太网为例,ARP报文传输到以太网数据链路层后会形成ARP帧。ARP帧如下图所示,他就是在ARP报文前面加了一个以太网首部。
- 目的MAC地址:为广播MAC地址(FF-FF-FF-FF-FF-FF),其目标主机是网络上的所有主机。
- 源MAC地址:为发送ARP帧的源MAC地址。
- 帧类型:这里用来标识帧封装的上层协议,因为本帧的数据部分是ARP报文,所以直接用ARP的协议号 0x0806。(若是IP协议号,为0x0800)