Address Resolution Protocol(简称ARP,即地址解析协议),其核心作用是解决网络设备通信时的地址解析问题。当网络设备需要向另一台设备发送数据时,首先需明确对方的网络层地址——IP地址,该地址由网络层提供。但仅拥有IP地址不足以完成数据传输:IP数据报文必须封装成数据帧,才能通过数据链路层进行发送,而数据帧的发送必须包含目的设备的MAC地址,因此发送端还需获取目的MAC地址。
简单来说,通过目的IP地址获取对应目的MAC地址的过程,正是由ARP协议来实现的。为了提高通信效率,设备会将已解析的ARP信息(IP与MAC的映射关系)存储在ARP缓存表中,该缓存表的默认老化时间为1200秒(即20分钟)。
从协议分层来看,ARP协议直接封装在数据链路层之上,其帧类型标识为0x0806。由于它既涉及网络层的IP地址,又依赖数据链路层的MAC地址,因此常被称为“2.5层协议”。

① Hardware Type:网络类型(以太网)
② Protocol Type:协议类型(IP/IPX)
③ Hardware Length:网络长度
④ Protocol Length:协议长度
⑤ Operation Code:可选code值(Response或Request)
⑥ Source Hardware Address:发送者Mac地址
⑦ Source Protocol Address:发送者IP地址
⑧ Destination Hardware Address:目标MAC地址
⑨ Destination Protocol Address:目标IP地址
请求报文,广播地址,用于请求目标IP地址对应的MAC地址。

Request-ARP报文(广播报文)
回复报文,用于被请求端将自己的MAC地址通知到请求端的单播报文。

Replay-ARP报文(单播报文)

CLIENT1想要访问目标CLIENT2,根据自己的IP和子网掩码与运算得出192.168.1.3与自己为同一网段,直接发送ARP广播请求,CLENT2收到ARP请求后,回复自己的MAC地址给CLENT1。


CLIENT1想要访问目标CLIENT2,根据自己的IP和子网掩码与运算得出192.168.2.2与自己处于不同网段,此时发送ARP请求直接请求网关192.168.1.1的MAC地址,R1收到ARP请求后,将192.168.1.1端口的MAC地址回复给CLENT1。

依据ARP协议特性,几乎所有的以太网通信都以ARP解析为开端,因此所有以太网主机设备均支持ARP协议。此外,IP地址到以太网MAC地址的解析过程主要为动态生成,无需网络管理员进行手工干预,极大降低了网络维护成本。
在实际实现过程中,系统会根据ARP报文的具体情况创建或更新ARP表项,只要收到的ARP报文满足以下任一条件,即可触发表项的创建或更新操作:
① ARP报文的源IP地址与入接口IP地址在同一网段,且不是广播地址,目的IP地址是本接口IP地址。
② ARP报文的源IP地址与入接口IP地址在同一网段,且不是广播地址,目的IP地址是本接口的VRRP(Virtual Router Redundancy Protocol)虚拟IP地址。
③ ARP报文的源IP地址与入接口IP地址在同一网段,且不是广播地址,入接口是IPoEoA应用的Virtual-Ethernet接口。
④ ARP报文的目的IP地址是入接口上配置的NAT地址池中的地址。
⑤ 如果收到的ARP报文的源IP地址在入接口的ARP表中已经存在对应表项,也将对ARP表项进行更新。
IP为唯一标识,在同一网段内,每台设备的IP都是唯一的,所以如果两台设置配置了相同的IP地址会出现问题,在配置静态IP时候或从DHCP获取IP地址成功时,主机都会发送基于此IP的免费ARP的MAC地址请求,如果有设备回应,表明IP地址冲突。

ARP攻击:
ARP协议存在安全隐患,易遭受ARP攻击。具体而言,若攻击者发送伪造的ARP报文,且报文中通告的IP地址与MAC地址映射关系错误,主机或网关会将该错误映射更新至自身的ARP缓存表中。当主机向指定目标IP地址发送数据时,会从ARP表中获取错误的MAC地址,并以此封装数据帧,最终导致数据帧无法正确发送,影响网络通信正常进行。
针对此类ARP攻击,若当前网络中的主机数量较少,可采用静态ARP的方式防范,通过手工绑定IP地址与MAC地址的映射关系,避免ARP表被错误信息篡改,保障网络通信安全。
[R1]arp static 10.1.1.1 5489-0001-0001Proxy ARP,即代理ARP,在开启了Proxy ARP功能后(华为设备默认不开启),当路由器接口收到一个ARP请求后,路由器会查找自己的路由表,如果路由表中存在去往ARP请求的MAC地址(IP),路由器会将与其同网段(相当于网关)的接口MAC作为相应回复ARP请求。
Proxy ARP分为三种类型:
① 路由式Proxy ARP
② vlan内代理ARP
③ vlan间代理ARP
① PC1没有配置网关,想要访问目标PC2:

①R1的G0/0/0端口开启Proxy ARP功能:
[Huawei-GigabitEthernet0/0/1]arp-proxy enable② CLENT1访问192.168.2./24的网段,此时由于没有配置网关,于是直接发送AP请求请求192.168.2.2的MAC地址
③ 路由器R1在收到ARP请求后,查找路由表,192.168.2.2存在于路由表192.168.2.0/24的路由条目中,于是发送ARP回复将端口192.168.1.1的MAC作为回应应答CLENT1的请求。
配置命令:
[Huawei-GigabitEthernet0/0/0]arp-proxy enable② 特殊部署网段问题:

① CLIENT1访问192.168.2.2,使用与运算发现192.168.2.2与自己为同网段,直接发送ARP请求请求192.168.2.2的MAC地址
② 在没有开启ARP代理的R1路由器上收到请求192.168.2.2的ARP请求,路由器默认会将此广播包丢弃
③ 在端口G0/0/0上开启arp代理功能之后,路由器R1收到广播包后,会将自己的G0/0/1端口的MAC地址回复给CLENT1
在没有开启arp代理之前默认丢弃arp广播报文:

开启ARP代理:

在接口下使用命令
[Huawei-Vlanif10]arp-proxy inner-sub-vlan-proxy enable
启用Vlan 内的ARP代理功能VLAN内代理ARP主要解决:
① 同vlan中pc互通问题,当实行了端口隔离的设备,隔离二层广播后,将导致arp无法正常解析,发送端无法正常封装数据包的目标MAC地址,此时使用vlan内Proxy ARP便可以解决此问题。
② Mux-Vlan中从Vlan之间互通问题(详见Mux-Vlan)
解决不同Vlan之间对应计算机的三层互通问题,用于Super VLAN间解决子vlan无法互通问题。