ARP协议
ARP协议是是一个介于数据链路层和网络层之间的协议。
它工作在网络层。
ARP协议建立了主机IP地址和MAC地址的映射关系
在网络通信时,源主机的应用程序应该知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址。
数据包肯定先被网卡接收到再去处理上层协议的,如果接受到的数据包的硬件地址与本机不符,则直接丢弃。
ARP协议的工作流程
如下图是ARP的工作流程:
1)如果主机A想发送数据给主机B,主机A首先会检查自己的ARP缓存表,查看是否有主机B的IP地址和MAC地址的对应关系,如果有,则会将主机B的MAC地址作为源MAC地址封装到数据帧中。如果没有,主机A则会发送一个ARP请求信息,请求的目标IP地址是主机B的IP地址,目标MAC地址是MAC地址的广播帧(即FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是主机A的IP地址和MAC地址。
2)当交换机接受到此数据帧之后,发现此数据帧是广播帧,因此,会将此数据帧从非接收的所有接口发送出去。
3)当主机B接受到此数据帧后,会校对IP地址是否是自己的,并将主机A的IP地址和MAC地址的对应关系记录到自己的ARP缓存表中,同时会发送一个ARP应答,其中包括自己的MAC地址。
4)主机A在收到这个回应的数据帧之后,在自己的ARP缓存表中记录主机B的IP地址和MAC地址的对应关系。而此时交换机已经知道了主机A和主机B的MAC地址了。
每个主机都维护一个ARP缓存表,可以使用 arp -a 命令查看。缓存表中的表项有过期时间(20分钟),如果20分钟内没有再吃使用某个表项,则该表项失效,下次还要发ARP请求获取目的主机的硬件地址。
ARP数据报的格式