首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >详解 ARP 协议:原理、分层及攻击防范

详解 ARP 协议:原理、分层及攻击防范

作者头像
ICT系统集成阿祥
发布2026-04-15 19:07:56
发布2026-04-15 19:07:56
130
举报
文章被收录于专栏:数通数通

Address Resolution Protocol(简称ARP,即地址解析协议),其核心作用是解决网络设备通信时的地址解析问题。当网络设备需要向另一台设备发送数据时,首先需明确对方的网络层地址——IP地址,该地址由网络层提供。但仅拥有IP地址不足以完成数据传输:IP数据报文必须封装成数据帧,才能通过数据链路层进行发送,而数据帧的发送必须包含目的设备的MAC地址,因此发送端还需获取目的MAC地址。

简单来说,通过目的IP地址获取对应目的MAC地址的过程,正是由ARP协议来实现的。为了提高通信效率,设备会将已解析的ARP信息(IP与MAC的映射关系)存储在ARP缓存表中,该缓存表的默认老化时间为1200秒(即20分钟)。

从协议分层来看,ARP协议直接封装在数据链路层之上,其帧类型标识为0x0806。由于它既涉及网络层的IP地址,又依赖数据链路层的MAC地址,因此常被称为“2.5层协议”。

1. ARP报文:

① 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地址

(1)Request:

请求报文,广播地址,用于请求目标IP地址对应的MAC地址。

Request-ARP报文(广播报文)

(2)Response:

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

Replay-ARP报文(单播报文)

2. ARP原理:

(1)同网段内获取目标终端MAC地址:

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

(2)不同网段请求网关MAC地址:

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

3. ARP表项的创建与更新:

依据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表项进行更新。

4. 免费ARP:

IP为唯一标识,在同一网段内,每台设备的IP都是唯一的,所以如果两台设置配置了相同的IP地址会出现问题,在配置静态IP时候或从DHCP获取IP地址成功时,主机都会发送基于此IP的免费ARP的MAC地址请求,如果有设备回应,表明IP地址冲突。

5. 静态ARP:

ARP攻击:

ARP协议存在安全隐患,易遭受ARP攻击。具体而言,若攻击者发送伪造的ARP报文,且报文中通告的IP地址与MAC地址映射关系错误,主机或网关会将该错误映射更新至自身的ARP缓存表中。当主机向指定目标IP地址发送数据时,会从ARP表中获取错误的MAC地址,并以此封装数据帧,最终导致数据帧无法正确发送,影响网络通信正常进行。

针对此类ARP攻击,若当前网络中的主机数量较少,可采用静态ARP的方式防范,通过手工绑定IP地址与MAC地址的映射关系,避免ARP表被错误信息篡改,保障网络通信安全。

代码语言:javascript
复制
[R1]arp static 10.1.1.1 5489-0001-0001

6. Proxy ARP:

Proxy ARP,即代理ARP,在开启了Proxy ARP功能后(华为设备默认不开启),当路由器接口收到一个ARP请求后,路由器会查找自己的路由表,如果路由表中存在去往ARP请求的MAC地址(IP),路由器会将与其同网段(相当于网关)的接口MAC作为相应回复ARP请求。

Proxy ARP分为三种类型:

① 路由式Proxy ARP

② vlan内代理ARP

③ vlan间代理ARP

(1)路由式Proxy ARP:

① PC1没有配置网关,想要访问目标PC2:

①R1的G0/0/0端口开启Proxy ARP功能:

代码语言:javascript
复制
[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的请求。

配置命令:

代码语言:javascript
复制
[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代理:

(2)VLAN内Proxy ARP:

在接口下使用命令

代码语言:javascript
复制
[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)

(3)VLAN间Proxy ARP:

解决不同Vlan之间对应计算机的三层互通问题,用于Super VLAN间解决子vlan无法互通问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ICT系统集成阿祥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. ARP报文:
    • (1)Request:
    • (2)Response:
  • 2. ARP原理:
    • (1)同网段内获取目标终端MAC地址:
    • (2)不同网段请求网关MAC地址:
  • 3. ARP表项的创建与更新:
  • 4. 免费ARP:
  • 5. 静态ARP:
  • 6. Proxy ARP:
    • (1)路由式Proxy ARP:
    • (2)VLAN内Proxy ARP:
    • (3)VLAN间Proxy ARP:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档