为什么要使用ARP协议
- OSI模型把网络工作分为七层,彼此不直接打交道,只通过接口(layer interface)。IP地址工作在第三层,MAC地址(硬件地址)工作在第二层。
- 当协议在发送数据包时,需要先封装第三层IP地址,第二层MAC地址的报头,但协议只知道目的节点的IP地址,不知道目的节点的MAC地址(因为在IP层只能看到IP数据报,而链路层只能看到硬件地址),又不能跨第二、三层,所以得用ARP协议服务
- ARP协议就是用来解决在同一局域网内知道IP地址,如何找到对应的硬件地址。从IP地址中解析出硬件地址
ARP协议是第几层协议
- 工作在数据链路层,是网络层协议。
工作过程
- 第一步:首先,每个主机都会有自己的ARP缓存区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系
- 第二步:当源主机要发送数据时,首先检测ARP列表中是否对应IP地址的目的主机的MAC地址
如果有,则直接发送数据。如果没有,就向本网段的所有主机发送ARP数据包,内容:我是IP地址,mac地址,谁是IP地址,mac? - 第三步:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包。如果是,则首先从数据包中取出源主机的IP和mac地址写入到ARP列表中,如果以存在,则覆盖。然后将自己的mac地址写入arp响应包中,告诉源主机自己是它想要找的mac地址
- 第四步:源主机收到ARP响应包后,将目的主机的IP和mac地址写入arp列表,并利用此信息发送数据
如果源主机一直没有收到arp响应数据包,表示arp查询失败。
ARP在生成环境产生的问题及解决办法:
- ARP病毒,ARP欺骗。
- 高可用服务器对之间切换时要考虑ARP缓存的问题。
- 路由器等设备无缝迁移时要考虑ARP缓存的问题,例如:更换办公室的路由器。