一、概述
1.主机有数据要发送给另一台主机时需要知道对方的IP地址和物理MAC地址,此时地址解析协议ARP可实现将IP地址解析为MAC地址。
2.ARP表用于存储IP地址和MAC地址的映射关系,一般ARP表项包括动态ARP表项、静态ARP表项。
二、静态、动态ARP表项
1、静态ARP表项
1.静态ARP表项是手工建立的IP地址和MAC地址之间固定的映射关系,限制本端设备和指定IP地址的对端设备通信时只使用指定的MAC地址。
2.一般在网关设备上配置静态ARP表项,静态ARP表项不会被老化,不会被动态ARP表项覆盖。
3.攻击报文无法修改本端设备的ARP表中IP地址和MAC地址的映射关系,从而保护了本端设备和对端设备间的正常通信。
2、动态ARP表项
1.动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化、被新的ARP报文更新,也可以被静态ARP表项覆盖。
2.动态ARP适用于拓扑结构复杂、通信实时性要求高的网络,当网络中存在ARP攻击时,设备中动态ARP表项会被老化、被更新成错误的ARP表项。
三、ARP解析过程
【第一步】
主机A查找【本地缓存ARP表】,确定是否包含主机C对应的ARP表项:
如果:
找到了主机C对应的MAC地址,则主机A 直接利用 ARP表中的MAC地址,对数据报文进行帧封装,并将数据报文发送给主机C。
【第二步】
如果:
找不到主机C对应的MAC地址,则先缓存该数据报文,并以广播方式发送一个ARP请求报文。
1.ARP请求报文中的源MAC地址和源IP地址为主机A的MAC地址和IP地址。
2.目的MAC地址为全0的MAC地址,目的IP地址为主机C的IP地址。
3.交换机收到ARP请求报文后,将该ARP请求报文在同一广播域内转发,同一广播域内的主机B和C都能接收到该ARP请求报文,但只有被请求的主机C会对该ARP请求报文进行处理。
4.主机C比较自己的IP地址和ARP请求报文中的目的IP地址,当两者相同时,将ARP请求报文中的源IP地址和源MAC地址(即A的IP地址和MAC地址)存入自己的ARP表中,之后以单播方式发送ARP 应答报文给主机A。
5.在ARP应答报文内容中,源MAC地址和源IP地址为C的MAC地址和IP地址,目的MAC地址和目的IP地址为A的MAC地址和IP地址。
6.交换机收到ARP应答报文后,将该ARP应答报文转发给主机A,主机A收到ARP应答报文后,将主机C的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将数据报文进行帧封装,并将数据报文发送给主机C。
四、ARP老化过程
为了保证高速缓存中ARP表项的准确性,设备会对动态ARP表项进行老化和更新。
【老化过程】
1.主机或设备每次发送报文时,会先在本地高速缓存中查找目的IP地址所对应的MAC地址。
如果:
高速缓存中有对应的MAC地址,主机或设备不会再发送ARP请求报文,而是直接将报文发至这个MAC地址。
如果:
高速缓存中没有对应的MAC地址,主机或设备才会广播发送ARP请求报文,进行ARP地址解析。
【老化参数】
动态ARP表项到达老化超时时间后,设备会发送老化探测报文,设备发送的老化探测报文可以是单播报文,也可以是广播报文。
如果:
主机能收到ARP应答报文,则更新该动态ARP表项,本次老化探测结束。
如果:
1.超过设置的老化探测次数后仍没有收到ARP应答报文,则删除该动态ARP表项,本次老化探测结束。
2.缺省情况下,设备只在最后一次发送ARP老化探测报文是广播模式,其余均为单播模式发送,当对端设备MAC地址不变时,可以配置接口以单播模式发送ARP老化探测报文。
3.当接口Down时设备会立即删除相应的动态ARP表项。
五、免费ARP报文
【作用】
1.发送者请求自己的 IP地址对应的MAC地址,通常在主机启动时发送,用于宣告自己的IP地址和MAC地址,以便其他网络设备更新其ARP缓存表。
2.免费ARP报文中的目标IP地址是发送者自己的 IP地址,普通ARP请求报文中的目标IP地址是其他主机的 IP地址,设备接口UP时主动对外发送免费ARP报文。
【产生情况】
1.正常情况下不会收到 ARP应答,如果收到,则表明本网络中存在与自身IP地址重复的地址,如果检测到IP地址冲突,设备会周期性的广播发送免费ARP应答报文,直到冲突解除。
2.发送方更换了网卡后MAC地址变化,为了能够在动态ARP表项老化前通告网络中其他设备,发送方可以发送一个免费ARP。
3.在VRRP备份组主备发生变换:发生主备变换后MASTER设备会广播发送一个免费ARP报文来通告发生了主备变换。