ARP协议基本概念及一般情况下的A发起请求,B应答的情况略过。
无端ARP/免费ARP:
顾名思义,没有发起端或者接受端的ARP,也可以理解为无端(非正常情况)下发起的ARP,有以下几种使用场景:
1、L2地址发生变化:A主机中有B主机的MAC地址与IP地址映射,但是此时B的MAC地址变了,但是A不知道,此时A发送给B的报文全部会不可达,直到A收到来自B的报文,更新ARP表,或者ARP表老化时间到了,A重新发起ARP请求给B,重新获取B的MAC地址。在此期间会经历一段ARP的黑洞时间。
2、重复地址检测:在一个大型网络中,可能由于存在多个地址池重叠的DHCP服务器或者手工配置等原因,导致不同设备具有相同的L3地址。此时可以通过无端ARP来检测重复地址:即发出一个目的地址为自己的ARP请求,如果存在重复地址则会收到应答,不存在则收不到。
3、虚拟ip:在某些网络中,设备可能存在备份设备,当主设备宕机后,备用设备接管工作,当备用设备接管工作后,由于备用设备的L3地址与主设备的不同,此时流量包无法到达备用设备,此时备用设备发起无端ARP,通告给其他设备,使其更新ARP缓存,使流量可达。
黑洞ARP:
匹配到黑洞表项(首包触发或者手动配置)的报文全部丢弃,用于防攻击,攻击者一直触发ARP请求,或者网络故障,一直收不到ARP应答,会每包都触发ARP请求,占用大量cpu资源。
首包触发原理:当收到一个报文,查arp表发现没有对应表项,则发起arp请求,同时下发一条arp表项,表项中mac为全0,接口信息等设置成无效值,这样报文在收到arp应答之前,相同的报文会直接被丢弃。
ARP代答:
开启了arp代答的接口或者设备,收到目的地非自身的arp请求时,如果路由可达,则回复ARP代答封包,目的mac为自身mac。