ARP 协议详细总结
目录
ARP协议详细总结
一、核心定义与协议定位
地址解析协议(Address Resolution Protocol,ARP)是TCP/IP协议族的核心基础协议,定义于RFC 826标准,在OSI七层模型中介于数据链路层与网络层之间,是衔接两层通信的关键桥梁。
- 核心功能:在同一广播域(局域网)内,将32位的IPv4逻辑地址解析为48位的MAC物理地址,为以太网数据帧的封装和二层转发提供目标地址依据。
- 核心前提:局域网内的以太网通信,最终必须通过MAC地址完成数据帧的精准交付;网络层仅识别IP地址,ARP协议解决了“已知IP、未知MAC”的地址映射问题。
- 关键限制:ARP仅适用于IPv4网络;IPv6网络中,ARP被基于ICMPv6的邻居发现协议(NDP) 完全替代,NDP解决了ARP的原生安全缺陷,功能更完善。
二、ARP报文标准结构
ARP报文直接封装在以太网数据帧中传输,整体分为以太网帧首部(14字节) 和ARP报文本体(28字节) 两部分,总最小长度42字节,不足64字节的以太网帧会自动填充补齐。
1. 以太网帧首部
| 字段 | 长度 | 核心含义与取值 |
|---|---|---|
| 目的MAC地址 | 6字节 | ARP请求时为广播地址FF:FF:FF:FF:FF:FF;ARP应答时为请求方的单播MAC地址 |
| 源MAC地址 | 6字节 | 报文发送方的本机MAC地址 |
| 帧类型 | 2字节 | 固定为0x0806,标识该帧承载ARP协议报文 |
2. ARP报文本体(28字节)
| 字段 | 长度 | 核心含义与取值 |
|---|---|---|
| 硬件类型 | 2字节 | 标识链路层网络类型,以太网固定为0x0001,令牌环、帧中继等有对应专属编号 |
| 协议类型 | 2字节 | 标识要解析的上层协议类型,IPv4固定为0x0800,与以太网IP报文的帧类型值一致 |
| 硬件地址长度 | 1字节 | 硬件地址的字节长度,以太网MAC地址为6字节,固定取值6 |
| 协议地址长度 | 1字节 | 上层协议地址的字节长度,IPv4地址为4字节,固定取值4 |
| 操作类型(OP) | 2字节 | 标识ARP报文类型:1=ARP请求,2=ARP应答,3=RARP请求,4=RARP应答 |
| 发送端MAC地址 | 6字节 | 报文发送方的本机MAC地址 |
| 发送端IP地址 | 4字节 | 报文发送方的本机IP地址 |
| 目标端MAC地址 | 6字节 | ARP请求时填充00:00:00:00:00:00(地址未知);ARP应答时填充目标主机MAC |
| 目标端IP地址 | 4字节 | 待解析的目标IP地址 |
三、ARP核心工作原理
ARP协议的核心机制是广播请求+单播应答,主机发送IP报文前,会先查询本地ARP缓存,仅当缓存中无对应IP-MAC映射时,才触发ARP解析流程。分为同网段和跨网段两种核心场景。
1. 同一局域网(同网段/同广播域)解析流程
以主机A(192.168.1.10)与主机B(192.168.1.20)通信为例,完整流程分为4步:
- ARP广播请求:主机A构造ARP请求报文,操作类型为1,填充自身IP/MAC、目标IP为192.168.1.20、目标MAC为全0;封装以太网帧,目的MAC为全F广播地址,发送到局域网内所有设备。
- 广播域内设备筛选:局域网内所有主机都会收到该广播帧,逐一比对报文中的目标IP与本机IP;不匹配的设备直接丢弃报文,仅目标主机B匹配成功并保留报文。
- ARP单播应答:主机B构造ARP应答报文,操作类型为2,填充自身IP/MAC、目标IP/MAC为主机A的IP/MAC;封装以太网帧,目的MAC为主机A的单播MAC,直接点对点发送,无需广播。
- 缓存更新与数据发送:主机A收到ARP应答后,提取目标IP与MAC的映射关系,更新到本地ARP缓存;后续将待发送的IP报文封装成以太网帧,直接单播发送给主机B,完成通信。
2. 跨网段(不同广播域)解析流程
核心规则:路由器默认不转发二层广播报文,ARP无法直接跨广播域解析远端主机MAC,跨网段通信时,ARP仅用于解析下一跳(默认网关) 的MAC地址。 完整流程:
- 发送方主机通过子网掩码判断目标IP与本机不在同一网段,查询本地路由表,确定数据转发的下一跳地址(默认网关IP)。
- 发送方查询本地ARP缓存,若网关IP无对应MAC条目,在本地网段发起ARP广播请求,解析网关IP的MAC地址,流程与同网段ARP完全一致。
- 网关回复ARP应答,发送方获取网关MAC地址后,将IP报文封装成帧,目的MAC为网关MAC,发送给网关。
- 网关收到报文后,根据路由表找到远端目标网段的出接口与下一跳地址;若目标主机在直连网段,网关会在目标网段内发起ARP请求,解析目标主机MAC,最终将报文转发给目标主机。
四、ARP缓存机制
ARP缓存(ARP表)是ARP协议高效运行的核心,避免每次通信都重复发起ARP广播,分为动态ARP缓存和静态ARP缓存两类。
1. 动态ARP缓存
- 生成方式:主机通过ARP请求-应答流程自动学习到的IP-MAC映射条目,自动生成、自动老化。
- 老化机制:每个动态条目都有固定生存时间(TTL),超时后自动清除,再次通信需重新解析。不同系统默认老化时间不同:Windows系统为15-30分钟,Linux系统基础可达时间30秒(实际老化时间30-90秒随机浮动),企业交换机/路由器通常为15-20分钟。
- 核心特性:无状态更新,主机收到任何ARP应答(无论是否主动发起请求),都会用报文中的IP-MAC映射更新本地缓存,这是ARP高效性的核心,也是其安全缺陷的根源。
2. 静态ARP缓存
- 生成方式:由管理员手动配置的IP-MAC绑定条目,手动创建、手动删除。
- 核心特性:无老化时间,永久生效,优先级高于动态ARP条目,不会被伪造的ARP报文覆盖更新。
- 适用场景:核心服务器、网关、关键网络设备的IP-MAC绑定,是防御ARP欺骗的基础手段。
五、ARP协议家族(扩展类型)
除了基础的正向ARP,还有多种扩展协议,适配不同网络场景:
1. 免费ARP(Gratuitous ARP)
- 报文特征:特殊的ARP请求报文,发送端IP和目标端IP均为本机IP,目标MAC为全0,以广播形式发送。
- 核心作用: ① IP地址冲突检测:若收到该报文的应答,说明局域网内存在IP地址冲突,触发告警; ② 刷新局域网ARP缓存:主机开机/IP/网卡变更时发送,通知所有设备更新本机的IP-MAC映射; ③ 冗余协议切换:VRRP、HSRP等网关冗余协议,主备切换时发送免费ARP,通知下游主机更新网关MAC,实现流量无缝切换。
2. 反向ARP(RARP, Reverse ARP)
- 核心功能:与正向ARP相反,实现MAC地址→IPv4地址的解析。
- 适用场景:早期无盘工作站,这类设备无存储介质,无法保存自身IP,只能通过MAC地址向RARP服务器请求IP。
- 现状:已被BOOTP、DHCP协议完全替代,DHCP除了IP分配,还能提供网关、DNS、子网掩码等配置,功能更完善。
3. 代理ARP(Proxy ARP)
- 核心原理:路由器/三层设备开启代理ARP后,收到跨网段的ARP请求时,会代替目标主机回复ARP应答,将自身出接口的MAC地址告知请求方。
- 适用场景: ① 未配置默认网关的主机,实现跨网段通信; ② 同一IP网段但划分在不同物理广播域的主机,实现二层互通。
- 注意事项:代理ARP会隐藏真实网络拓扑,可能导致ARP缓存膨胀,存在一定安全风险,非必要不开启。
4. 逆向ARP(Inverse ARP, IARP)
- 核心功能:在帧中继、ATM等NBMA(非广播多路访问)网络中,根据二层虚电路(如帧中继DLCI)解析对端设备的IP地址,建立虚电路与IP的映射。
- 与RARP的区别:RARP是通过自身MAC获取自身IP;IARP是通过二层虚电路获取对端设备IP,应用场景完全不同。
六、安全风险与防御方案
ARP协议的原生设计缺陷(无状态、无身份认证、无条件信任广播报文),导致其存在严重的安全风险,最典型的是ARP欺骗(ARP投毒) 攻击。
1. 核心安全风险:ARP欺骗
- 攻击原理:利用ARP的无状态特性,攻击者向局域网内的主机/网关持续发送伪造的ARP应答报文,将虚假的IP-MAC映射注入目标设备的ARP缓存中。
- 常见攻击效果: ① 中间人攻击:攻击者同时伪造网关IP的MAC和受害主机IP的MAC,让双方的流量都经过攻击者转发,实现数据窃听、篡改、会话劫持; ② 网络中断/拒绝服务:攻击者伪造不存在的MAC地址,或向全网发送虚假ARP报文,导致主机无法找到正确的转发地址,造成局域网断网、广播风暴; ③ 恶意流量劫持:通过ARP欺骗实现DNS劫持、HTTP/HTTPS流量重定向,投放恶意内容。
2. 主流防御方案
| 防御方案 | 实现原理 | 适用场景 |
|---|---|---|
| 静态ARP绑定 | 手动在主机/网关上配置核心IP与MAC的永久静态条目,禁止动态更新,优先级高于动态条目 | 核心服务器、网关,小规模局域网 |
| 动态ARP检测(DAI) | 交换机结合DHCP Snooping生成的IP-MAC-端口绑定表,校验每一个ARP报文的合法性,直接丢弃非法报文 | 中大型企业局域网,接入层交换机 |
| 端口安全 | 交换机端口限制允许接入的MAC地址数量和具体地址,禁止伪造MAC地址的报文通过 | 接入层终端管控,防止非法设备接入 |
| VLAN广播域隔离 | 将局域网划分为多个小的广播域,缩小ARP欺骗的影响范围,隔离攻击风险 | 中大型网络,按部门/业务划分网段 |
| 主机ARP防火墙 | 终端安装ARP防火墙软件,拦截非法ARP报文,校验应答的合法性 | 个人终端、未做网络层管控的局域网 |
七、相关协议对比
| 协议 | 核心功能 | 适用场景 | 现状 |
|---|---|---|---|
| 正向ARP | IPv4地址→MAC地址解析 | 以太网局域网IPv4通信 | 广泛使用,IPv4网络必备 |
| RARP | MAC地址→自身IPv4地址解析 | 早期无盘工作站 | 已淘汰,被DHCP完全替代 |
| 代理ARP | 代理跨网段ARP应答,实现跨网段二层互通 | 无网关主机、跨物理网段同IP通信 | 小众场景使用,不推荐默认开启 |
| NDP(邻居发现协议) | IPv6地址→MAC地址解析,替代ARP、ICMP路由发现、重定向等功能 | IPv6网络 | IPv6网络必备,完全替代ARP |
八、常用运维命令与故障排查
1. 常用ARP运维命令
- Windows系统
arp -a:查看本地所有ARP缓存条目arp -d *:清空本地所有动态ARP缓存arp -s 192.168.1.1 00-11-22-33-44-55:静态绑定IP与MAC地址
- Linux系统
arp -n:查看ARP缓存(数字格式,不解析域名)ip neigh:Linux推荐使用的邻居表(ARP表)查看命令,替代传统arp命令arp -d 192.168.1.1:删除指定ARP条目ip neigh add 192.168.1.1 lladdr 00:11:22:33:44:55 dev eth0 nud permanent:配置永久静态ARP条目
- 企业网络设备
- 华为/H3C:
display arp查看ARP表;arp static 192.168.1.1 0011-2233-4455配置静态ARP - 思科:
show arp查看ARP表;arp 192.168.1.1 0011.2233.4455 arpa配置静态ARP
- 华为/H3C:
2. 常见ARP故障排查思路
- 故障1:同网段主机无法ping通
排查步骤:① 用
arp -a/ip neigh查看ARP缓存,是否有目标IP条目,MAC地址是否正确;② 无条目则检查两端防火墙是否拦截ARP报文、交换机VLAN配置是否正确、是否在同一广播域;③ 条目错误则清空缓存重新解析,检查是否存在IP冲突或ARP欺骗。 - 故障2:同网段可通、无法访问外网 排查步骤:① 查看ARP缓存中网关IP对应的MAC地址,与网关实际MAC对比是否一致;② 若MAC错误,大概率存在ARP欺骗或IP冲突;③ 清空ARP缓存重新解析,检查网关是否开启ARP防护、交换机是否拦截非法ARP报文。
- 故障3:ARP条目频繁刷新、通信不稳定 排查步骤:① 检查局域网内是否存在ARP攻击,开启DAI/端口安全防护;② 检查网络是否存在环路,导致广播报文重复转发;③ 检查主机网卡、交换机端口是否存在硬件故障。
九、核心特性补充说明
- 无状态特性:ARP无需建立连接,无需验证请求合法性,收到应答即更新缓存,这是其高效性的核心,也是安全缺陷的根源。
- 广播域限制:ARP广播报文仅能在同一个广播域内传播,路由器默认不转发二层广播报文,跨网段通信必须依赖网关或代理ARP。
- 二层协议属性:ARP报文直接封装在以太网帧中,不经过IP层封装,无IP头部,是链路层的辅助协议,不属于传统意义上的网络层/传输层协议。
- 明文传输:ARP报文以明文形式传输,无加密、无认证机制,极易被嗅探和伪造,是局域网安全防护的重点对象。