ARP地址解析协议简介、类型、报文格式、地址解析原理,老化机制、常见问题

2025-06-13
来源:

1.ARP协议简介

ARP协议(Address Resolution Protocol),即地址解析协议,是以太网中用于描述目标IP地址和目标主机MAC地址对应映射。

在局域网(LAN)中,当一台主机或三层网络设备(如路由器、三层交换机)需要向另一台设备发送数据时,它需要知道对方的 IP地址(网络层地址)。然而,仅知道IP地址是不够的,因为数据最终要通过物理网络(如以太网)传输,而物理网络依赖的是 MAC地址(数据链路层地址)。

那为什么需要ARP?

1)IP报文必须封装成数据帧

  • 网络层(IP)的数据包必须封装成数据链路层(如以太网帧)才能在物理网络中传输。
  • 帧头中必须包含 目标MAC地址,但发送方通常只知道目标IP地址。

2)IP地址 → MAC地址的映射需求

  • 设备需要一种方法,根据目标IP地址查询对应的MAC地址。
  • ARP就是用来完成这一映射的协议。

3)ARP的作用

  • 查询:通过广播ARP请求,询问“谁拥有这个IP地址?”
  • 响应:目标设备收到请求后,回复自己的MAC地址。
  • 缓存:发送方记录IP-MAC映射,后续通信直接使用,减少重复查询。

所以,ARP协议是局域网通信的关键机制,它解决了 “已知IP地址,如何找到对应的MAC地址” 的问题,确保数据能够正确封装并送达目标设备。没有ARP,基于IP的通信将无法在物理网络中完成

2.ARP协议类型

ARP协议按功能、通信方式、协议版本、应用场景分类如下图:

图片

1)按功能分类

类型描述
ARP(标准ARP)
通过已知IP地址解析对应的MAC地址,用于IPv4网络。
RARP(反向ARP)
通过MAC地址解析对应的IP地址(现已被DHCP替代)。
InARP(逆向ARP)
用于帧中继网络,通过IP地址解析对应的DLCI(数据链路连接标识符)。
Gratuitous ARP(免费ARP)
主机主动广播自己的IP和MAC映射,用于检测IP冲突或更新其他主机的ARP缓存。

2)按通信方式分类

类型描述
请求(Request)
广播发送,用于查询目标IP对应的MAC地址。
应答(Reply)
单播回复,携带查询的IP和MAC映射信息。

3)按协议版本分类

类型描述
IPv4 ARP
基于IPv4的ARP协议,使用广播通信。
NDP(IPv6替代协议)
IPv6中由ICMPv6的邻居发现协议(NDP)替代ARP,实现类似功能。

4)按应用场景分类

类型描述
Proxy ARP(代理ARP)
路由器或设备代为响应ARP请求,常用于不同子网间的通信。
Dynamic ARP(动态ARP)
ARP表项通过请求自动学习,默认超时时间较短(如20分钟)。
Static ARP(静态ARP)
手动配置的固定ARP表项,无超时时间,需谨慎管理。

3.ARP报文格式

ARP请求和应答的报文格式如下图所示:

图片

报文的长度是42字节,前14字节的内容表示以太网首部,后28字节的内容表示ARP请求或应答报文的内容。

报文中相关字段的解释如下表:

字段长度含义
以太网目的MAC
48比特
以太网目的MAC地址。发送ARP请求报文时,该字段为广播的MAC地址0xff-ff-ff-ff-ff-ff
以太网源MAC
48比特
以太网源MAC地址。
帧类型
16比特
数据的类型。对于ARP请求或应答来说,该字段的值为0x0806
硬件类型
16比特
硬件地址的类型。对于以太网,该字段的值为1
协议类型
16比特
发送方要映射的协议地址类型。对于IP地址,该字段的值为0x0800
硬件地址长度
8比特
硬件地址的长度。对于ARP请求或应答来说,该字段值为6
协议地址长度
8比特
协议地址的长度。对于ARP请求或应答来说,该字段值为4
OP
16比特
操作类型。OP的值与操作类型的关系如下:1表示ARP请求报文。2表示ARP应答报文。
源MAC
48比特
源MAC地址。该源MAC地址与以太网首部中的以太网源MAC相同。
源IP
32比特
源IP地址。
目的MAC
48比特
目的MAC地址。发送ARP请求报文时,该字段为全0的MAC地址0x0000-0000-0000
目的IP
32比特
目的IP地址。

4.ARP工作原理

如下图:发送方主机已知目标IP地址,但未知MAC地址,这时发送方主机发送ARP请求广播-->接收方主机回复ARP响应单播-->发送方主机更新ARP缓存

图片

1)ARP请求广播

  • 发送方广播询问:“谁有 IP_B?请告诉 MAC_A”(MAC_A为发送方自身地址)。
  • 交换机将广播帧泛洪到所有端口(除接收端口外)。

2)ARP响应单播

  • 只有IP_B的拥有者(接收方)会响应,其他主机丢弃请求。
  • 接收方单播回复:“IP_B 对应的MAC地址是 MAC_B”。

3)更新ARP缓存

  • 发送方记录 IP_B → MAC_B 的映射到本地ARP缓存表,后续通信直接使用。

【下面通过WIRESHARK软件抓包分析arp地址解析过程】

如下图,主机PC1有IP数据报文发送给另一台主机PC2,它需要知道接收方的逻辑(IP)地址。但是IP地址必须封装成帧才能通过物理网络。这就意味着发送方必须有接收方的物理(MAC)地址,因此需要完成逻辑地址到物理地址的映射。而ARP协议可以接收来自IP协议的逻辑地址,将其映射为相应的物理地址,然后把物理地址递交给数据链路层。

图片

上图中,我们从PC1发送一个Ping包到PC2

1)PC1发送数据前会先检查自己的ARP缓存表,若有对应IP地址的MAC信息则直接封装到帧里进行发送,若没有则会通过ARP进行获取。

2)PC1会发送ARP Request报文来请求获取PC2MAC地址。由于帧内没有目的MAC地址是不可以进行传输的,所以ARP报文内的目的MAC地址为全F

图片

3)ARP Request目的MAC地址为FF-FF-FF-FF-FF-FF(广播数据帧),所以交换机收到后会直接对该帧进行泛洪(广播)操作,并且学习该IP的MAC地址以及端口号到交换机自己的MAC缓存表

4)所有主机都接受到该ARP Request报文后,都会检查该帧的目的IP地址与自身的IP地址是否匹配,不匹配就直接丢弃,PC2发现与自己IP地址匹配,就会先把PC1的IP与MAC地址信息记录到自己的ARP缓存表之中,然后PC2就会发送ARP Reply报文来进行响应。

图片

5)交换机收到单播数据帧以后,会对该帧进行转发操作,并且学习PC2的MAC地址和端口号到自己的MAC缓存表。

6)PC1收到PC2ARP Reply报文后会检查目的IP与自己IP地址字段是否相同,如果匹配就将回应报文的源IP地址与MAC地址学习到自己的ARP缓存表之中,然后就可以传输信息进行通信。

5.ARP协议老化机制

1)ARP缓存的目的

① 减少广播风暴:如果每次通信都发送ARP广播请求,会极大增加网络负担,影响设备性能。

② 提高效率:缓存IP-MAC映射,避免重复查询,加速通信。

2)ARP缓存的工作方式

① 查询缓存:发送数据前,先检查本地ARP缓存表:

  • 命中:直接使用缓存的MAC地址发送数据。
  • 未命中:才发送ARP广播请求,解析目标MAC地址。

② 动态更新:新学习的ARP条目会被缓存,但不会永久存储。

3)ARP缓存的老化机制

为了保证缓存的有效性,动态ARP条目会定时老化,主要涉及以下参数:

参数作用
老化超时时间
ARP表项在缓存中的存活时间(默认20分钟)。
老化探测次数
在删除表项前,发送ARP请求探测的次数(通常3次)。
老化探测模式
探测报文可以是单播(默认)或广播(最后一次探测通常是广播)。

4)老化探测流程

① 表项超时:当ARP缓存条目达到老化时间后,设备会发送探测报文(ARP请求)。

② 探测方式

  • 单播模式(默认):直接向目标IP发送ARP请求(减少广播影响)。
  • 广播模式(最后一次):如果单播无响应,改用广播探测。

③ 结果处理

  • 收到响应 → 更新ARP表项,重置老化计时器。
  • 无响应 → 超过探测次数后,删除该表项。

5)特殊情况处理

接口Down时:设备会立即删除相关ARP表项,避免使用无效缓存。

MAC地址不变时:可配置始终使用单播探测,减少广播流量。

通过ARP老化机制,网络设备能够在减少广播流量的同时,保持IP-MAC映射的准确性,确保高效、可靠的通信。

6.常见问题

1)ARP表项显示"Incomplete"的原因及处理机制

当执行 display arp 命令时,若 MAC ADDRESS 字段显示 Incomplete,表示该ARP表项是 临时表项(假表项),尚未成功解析目标MAC地址。

图片

① 为什么会出现"Incomplete"表项?

当设备收到一个IP报文,但 ARP缓存中没有对应的MAC地址 时,会触发 ARP Miss 事件。

此时,设备会:

生成临时ARP表项(标记为 Incomplete),发送ARP请求,尝试解析目标MAC地址。

② 临时ARP表项的处理流程

阶段行为结果
ARP请求发送后,未收到响应
匹配该表项的IP报文被丢弃,且不再触发ARP Miss
避免重复请求,减少广播风暴
收到ARP响应
生成正确的ARP表项,替换临时表项
后续通信使用正确的MAC地址
老化超时(默认5秒)
临时表项被自动清除
防止无效表项长期占用缓存

③ 常见场景

  • 目标主机未开机/不存在:ARP请求无响应,临时表项超时后清除。
  • 网络拥塞/丢包:ARP请求或响应丢失,导致表项保持 Incomplete
  • 安全策略拦截:如防火墙禁止ARP流量,导致解析失败。

2)交换机ARP流量过大的原因与处理

当交换机出现ARP流量过大时,通常由以下原因导致:网络环路(未启用STP引发广播风暴)、ARP攻击或扫描(病毒或探测工具)、IP地址冲突(重复IP触发免费ARP)以及设备频繁上下线(无线漫游或网络不稳定)。

快速排查时,可通过命令行检查(如display arp查看异常条目、display interface定位高流量端口),并结合抓包分析(过滤ARP报文,关注重复请求或异常响应)。解决方案包括:针对网络环路启用STP/MSTP,防御ARP攻击配置DAI,检查DHCP配置解决IP冲突,优化网络连接以稳定设备状态。

为预防此类问题,建议启用端口安全(MAC绑定)、设置ARP速率限制,并定期监控ARP表。若异常持续,应使用专业工具(如Wireshark)深入分析流量。


分享
下一篇:这是最后一篇
上一篇:这是第一篇
写评论...