ARP全称Address Resolution Protocol,中文译为地址解析协议。它工作在OSI模型的数据链路层与网络层之间。RFC 826对ARP的定义非常明确:将三十二位的IPv4地址动态映射为四十八位的MAC地址。这一定位决定它是逻辑寻址与物理寻址之间的桥梁。
要理解ARP存在的必要性,需要先厘清两种地址体系。IP地址是网络层逻辑地址具有全局唯一性和可路由性可穿越多个网络。MAC地址是数据链路层的物理地址,固化在网卡中,只能在同一个局域网广播域内使用。当主机向同一局域网内的另一主机发送数据时,发送方知道目标IP地址,但封装以太网帧必须填写目标MAC地址。ARP的核心使命就是完成IP地址到MAC地址的转换查询。
ARP协议的位置可以类比邮政系统。IP地址相当于收件人的门牌号MAC地址相当于身份证号码。邮政系统通过门牌号把信送到大楼但递到具体人还需身份证。ARP职责就是在知道门牌号的情况下查到身份证号它是逻辑网络与物理硬件的翻译官。
从协议栈层次关系看ARP报文直接封装在以太网帧中传输帧类型字段值为0x0806。这意味着ARP是IP同层且功能互补的协议。IP负责跨网路由转发ARP只在本网段工作。当数据包需跨越路由器转发时,ARP只在每一跳的局域网段内独立运行,路由器每一跳都重新执行ARP查询获取下一跳MAC地址。这一机制保证ARP广播不跨越网络边界。
ARP是一个无状态协议,不维护连接也不进行会话管理。每次地址解析请求都是独立事件协议不记录历史。操作系统维护ARP缓存表提升效率但协议层面不要求状态同步。无状态设计使ARP极其高效也为安全攻击留了可乘之机因无法验证ARP应答真实性。
ARP协议由David Plummer于一九八二年在RFC 826中提出至今稳定运行超四十年。虽IPv6引入NDP替代ARP但IPv4仍广泛使用。软考网工对ARP考查涵盖原理、报文格式、缓存机制、代理ARP、免费ARP及欺骗防御等多个层面。
ARP工作机制围绕请求和应答两个操作展开。源主机需获取目标MAC地址时,在局域网中广播ARP请求报文,询问谁拥有指定IP地址。拥有该IP的主机收到请求后以单播方式回应ARP应答,告知自己的MAC地址。这一问一答包含丰富的技术细节。
ARP报文由九个字段组成总长二十八字节。硬件类型字段占两字节以太网值为1。协议类型字段占两字节IPv4值为0x0800。硬件地址长度字段占一字节以太网MAC为6。协议地址长度字段占一字节IPv4为4。操作类型字段占两字节1表示请求2表示应答。前五字段构成固定头部后四字段为可变长地址信息。
发送方硬件地址和发送方协议地址分别填入源主机的MAC和IP。目标硬件地址字段在ARP请求中填充全零,在ARP应答中填入应答方MAC。目标协议地址填入被查询的目标IP。整个结构设计的精妙处在于把请求者地址和被查询地址放在同一报文中,接收方处理请求时可直接提取发送方IP-MAC映射关系,无需额外查询。这个设计也解释了ARP天然支持免费ARP的原因。
源主机构造完ARP请求后以广播MAC地址FF-FF-FF-FF-FF-FF作为目标将以太网帧发送到局域网。交换机将广播帧转发到除接收端口外的所有端口每台主机检查目标IP是否匹配,匹配者构造ARP应答以单播发送给源主机,操作类型设为2并填入自己的MAC。不匹配者丢弃请求。
应答处理中收到应答的主机将IP-MAC对应关系写入ARP缓存表,并以此MAC封装以太网帧。一个易被忽视的细节是:收到ARP请求的主机会顺便缓存发送方的IP-MAC映射。因为发送方既已发出请求说明即将通信,目标主机预先把映射缓存好可省去后续查询开销。这个优化的副作用是任何收到ARP请求的主机都会无条件缓存发送方映射,为ARP欺骗创造了条件。
在现代操作系统中,ARP以内核模块形式实现,应用程序无需感知ARP的存在。当应用调用套接字发送数据时,协议栈在IP层确定下一跳后若缓存无对应条目,内核自动发送ARP请求并阻塞等待应答,过程对上层透明。这种实现保证了编程简洁性,但也意味着应用层无法直接控制ARP行为。
ARP缓存表是操作系统为提高地址解析效率维护的动态映射表,记录最近解析过的IP-MAC对应关系。缓存的引入大幅降低ARP请求的广播频率。Windows系统可通过命令arp -a查看ARP缓存表,Linux系统同样使用arp -a或ip neigh show命令。缓存表每一项都有状态和生命周期,理解这些机制对故障排查至关重要。
ARP缓存条目分为四种状态。动态条目是正常请求应答学习到的映射有有限生存时间到期自动删除。静态条目由管理员手动配置,不过期也不被动态学习覆盖,常用于绑定网关地址。未解析条目是已发送请求但未收到应答的过渡状态,超时后操作系统向应用层返回不可达错误。过期条目是生存时间已耗尽但未被回收的条目,重新通信时会被优先尝试刷新。
动态条目生存时间在RFC中无严格规定不同操作系统默认值不同。Windows默认超时约两分钟Linux在一到三十分钟间可配置。动态条目生存过半后若未被使用操作系统主动发送ARP请求验证有效性此机制叫单播轮询。目标正常回应则重置生存时间,连续无应答则标记失效。这种主动探测保证缓存信息始终与实际网络状态一致。
ARP缓存表大小受内存限制。大规模局域网中大量主机通信时缓存表可能迅速膨胀。满载时操作系统按最近最少使用算法淘汰最不活跃条目。LRU算法合理因热度高的主机被频繁访问长时间未通信的主机缓存映射也大概率过时。
ARP缓存管理中投毒是重大问题。攻击者发送伪造ARP应答报文,向目标主机ARP缓存注入错误IP-MAC映射。系统接收ARP应答时无论是否发送过对应请求都会更新缓存。这种无验证信任机制是ARP缓存投毒攻击成功的根本原因。这也解释了为何安全要求高的网络环境选择配置静态ARP条目或部署动态ARP检测。
ARP缓存表也存在于路由器和三层交换机上。路由器每个接口维护独立ARP缓存表,用于解析直连网段下一跳MAC地址。三层交换机在软件转发模式下需要ARP缓存封装以太网帧,硬件转发模式下ASIC芯片内部维护等价ARP功能的硬件转发表。理解缓存表在不同设备上的存在形态,有助于在故障排查时准确定位问题。
ARP协议除标准请求应答外还有两种特殊机制:免费ARP和代理ARP。免费ARP英文为Gratuitous ARP简称GARP。代理ARP英文为Proxy ARP。两者虽基于ARP框架,但触发条件和使用场景截然不同。
免费ARP是主机主动广播ARP请求,目标IP地址正是发送方自己的IP。此报文有两个功能。第一是IP地址冲突检测,主机配置IP准备接入网络时发送免费ARP询问是否已有其他主机使用此地址,若收到应答说明存在冲突。第二是更新网络中其他主机ARP缓存,主机MAC地址变化时如更换网卡或VRRP虚拟MAC切换,免费ARP强制刷新其他主机缓存。
VRRP协议中免费ARP的应用是高频考点。VRRP定义的虚拟路由器由多台物理路由器组成,共享虚拟IP和虚拟MAC。主路由器故障时备份路由器接管虚拟IP,新主路由器发送免费ARP更新交换机和主机缓存,将虚拟IP映射到新物理MAC。此过程叫MAC地址迁移,是VRRP实现无缝故障切换的关键。理解免费ARP在VRRP中的作用有助于应对考试和网络工程实践。
代理ARP是路由器代替不在同一物理网段的目标主机响应ARP请求。典型场景是早期非子网化网络中不同子网主机误以为在同一广播域。主机广播ARP请求查询目标IP时,路由器发现目标IP属另一子网且自己知道路由,便以自己的MAC响应并承诺代为转发。请求方视角中以为目标在本地局域网,实际所有数据包被路由器接收并路由到真实远程目标。
代理ARP历史上是解决子网兼容性的临时方案,随CIDR普及和子网划分规范化使用场景逐渐减少。现代网络中正确子网划分、默认网关配置及动态路由协议已解决代理ARP的问题。但在教材中它仍是独立知识点,考试中常以工作场景和报文特征命题。考生须区分普通ARP、免费ARP和代理ARP的触发条件及应答行为差异。
代理ARP在特定场景仍有价值。VPN部署中远程接入用户用虚拟适配器获取与内网不同网段IP时,若VPN网关不支持路由模式,代理ARP可作为权宜之计。防火墙透明模式下两侧主机需二层通信时,代理ARP也是可选方案。了解其历史背景和局限有助于网络工程师设计合理方案。
ARP协议不是单一协议,围绕地址解析功能RFC定义了多种变体。除基本IPv4 ARP外还有反向ARP即RARP、逆向地址解析协议即InARP及IPv6的邻居发现协议NDP。这些协议虽名称和细节不同,本质上都在解决同个问题:如何已知一种地址形式获取另一种。
反向ARP定义于RFC 903,解决无盘工作站启动时的地址获取。无盘工作站没本地存储器保存IP配置,只知自己的MAC却需获取IP接入网络。RARP服务器维护MAC到IP映射表,无盘工作站启动时广播RARP请求,服务器返回对应IP。RARP缺陷在于只返回IP无法提供子网掩码、默
本篇完!