ARP协议详解:基本原理与实现机制
ARP协议详解:基本原理与实现机制
ARP(Address Resolution Protocol)协议是计算机网络中的基础知识,用于将IP地址解析为MAC地址。本文将详细介绍ARP的基本原理,包括其报文格式、地址解析过程、老化机制以及动态ARP和静态ARP的区别。
ARP报文格式
ARP请求和应答的报文格式如图1所示。
图1 ARP请求和应答报文格式
主要字段解释如下:
- Hardware Type:硬件地址的类型。对于以太网,该类型的值为“1”。
- Protocol Type:映射的协议地址类型。对于IP地址,该值为0x0800。
- Hardware Length:硬件地址长度。对于ARP请求或应答来说,该值为6。
- Protocol Length:协议地址长度。对于ARP请求或应答来说,该值为4。
- OP:操作类型。1表示ARP请求,2表示ARP应答。
- Ethernet Address of sender:发送方MAC地址。
- IP Address of sender:发送方IP地址。
- Ethernet Address of destination:接收方MAC地址。
- IP Address of destination:接收方IP地址。
ARP地址解析过程
ARP通过以下两个步骤完成地址解析过程。
图2 ARP请求过程
如图2所示,HOSTA和HOSTB在同一网段,HOSTA要向HOSTB发送信息。
首先,HOSTA查看自己的ARP表,确定其中是否包含有HOSTB对应的ARP表项。如果找到了HOSTB对应的MAC地址,则HOSTA直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给HOSTB。
如果HOSTA在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为HOSTA的IP地址和MAC地址,目标IP地址为HOSTB的IP地址,目标MAC地址为全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即HOSTB)会对该请求进行处理。
图3 ARP响应过程
HOSTB比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即HOSTA)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给HOSTA,其中包含了自己的MAC地址。如图3所示,HOSTB向HOSTA发出一个包含其MAC地址的ARP响应报文。
HOSTA收到ARP响应报文后,将HOSTB的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
ARP老化机制
为了提高网络效率并减少错误,ARP协议采用了多种老化机制:
高速缓存
每台主机上都维护着一个高速缓存,存放最近获得的IP地址到MAC地址的映射关系。发送方在每次发送报文时,都先在缓存中查找目标IP地址所对应的MAC地址。如果ARP缓存中有对应的MAC地址,主机就不会再发送ARP请求报文,而是直接将报文发至这个MAC地址。如果ARP缓存中没有对应的MAC地址时,主机才会发送广播的ARP请求报文。
动态ARP表项的老化超时时间
当HOSTA收到HOSTB的ARP回应时,在HOSTA的缓存中会形成HOSTB的IP地址和MAC地址的映射关系。但是,如果HOSTB发生故障或者更换了网卡时,HOSTA没有得到关于HOSTB的任何通告,于是HOSTA仍会继续将报文发送给HOSTB。造成地址解析出现错误的原因就是HOSTA中的映射表的信息没有得到及时的更新。
为了减少地址解析过程中所出现的错误,ARP高速缓存中的表项一般都会设定一个定时器。当达到定时器的动态ARP表项的老化超时时间,设备进行老化探测,如果探测失败,删除该表项;否则,保留该表项。
动态ARP表项的老化探测次数
除了设置定时器中动态ARP表项的老化超时时间,还可以通过设置动态的探测次数来减少地址的解析错误。在将一条动态ARP表项老化之前,系统先进行探测,如果超过设置的探测次数后探测的目标主机仍没有应答,则此ARP表项将被删除。
动态ARP表项的老化探测模式
ARP表项老化之前,接口会发送ARP老化探测报文。老化探测报文可以是单播报文,也可以是广播报文。缺省情况下,接口以广播模式发送ARP老化探测报文。
当对端设备的IP地址不变化而MAC地址频繁更新时,建议使用广播模式发送ARP老化探测报文。
当对端设备MAC地址不变,当前网络带宽资源特别紧缺,且ARP表项的老化时间设置的比较小时,建议使用单播模式发送ARP老化探测报文。
当其他厂商设备与华为设备互联时,其他厂商设备接收到目的MAC地址为广播地址的ARP老化探测报文后,若ARP表项中已存在华为设备的IP地址与MAC地址映射,则丢弃该广播ARP老化探测报文。华为设备由于收不到该探测报文的应答报文,而删除对应的ARP表项,导致网络侧过来的流量不通。这种特殊情况下华为设备需要配置成以单播方式发送ARP老化探测报文,其他厂商设备需要配置成可以响应该单播探测报文。
二层拓扑探测功能
二层拓扑探测功能,是指当二层接口的状态由Down变为Up时,二层接口所属VLAN对应的所有ARP表项的老化超时时间变为0,使设备重新发送ARP探测报文,更新二层接口所属VLAN对应的所有ARP表项。
动态ARP与静态ARP
- 动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、接口Down时会删除相应的动态ARP表项。
- 静态ARP是指IP地址和MAC地址之间有固定的映射关系,由网络管理员手动配置生成,在设备上不能动态调整此映射关系。