TCP/IP详解 卷1:协议 第4章 ARP地址解析协议 - IP到MAC地址映射
Executive Summary
核心观点(金字塔原理)
结论先行: ARP是TCP/IP的基础协议,通过高速缓存机制实现IP地址到MAC地址的高效映射,对应用程序透明运行,支持委托ARP和免费ARP等特殊功能。
支撑论点:
- 透明运行: ARP对应用程序和系统管理员透明,自动完成地址解析
- 高速缓存: ARP缓存是核心机制,通过定时器管理表项生命周期,可用arp命令查看和修改
- 特殊功能: 委托ARP用于路由器代答其他接口的ARP请求,免费ARP用于系统启动时检测IP冲突
SWOT 分析
| 维度 | 分析 |
|---|---|
| S 优势 | 对应用透明、高速缓存提高效率、支持动态地址解析、arp命令便于管理 |
| W 劣势 | 缓存表项需要定时清理、ARP广播消耗网络资源、存在ARP欺骗安全风险 |
| O 机会 | 委托ARP支持复杂网络拓扑、免费ARP实现IP冲突检测和故障转移 |
| T 威胁 | ARP欺骗攻击、缓存中毒、广播风暴影响网络性能 |
适用场景
- 网络故障排查时检查ARP缓存(arp -a命令)
- 理解局域网内主机通信的地址解析过程
- 高可用架构中利用免费ARP实现IP漂移
ARP地址解析协议和RARP逆地址解析协议
ARP高速缓存
在大多数的TCP/IP实现中,ARP是一个基础协议,但是它的运行对于应用程序或系统关联元来说一般是透明的,ARP高速缓存在它的运行过程中非常关键,我们可以用arp命令对高速缓存进行检查和操作,高速缓存中的每一项内容都有一个定时器,根据它来删除不完整和完整的表项。arp命令可以显示和修改ARP高速缓存中的内容。还有一些特殊的功能:委托ARP(当路由器对来自于另一个路由器接口的ARP请求进行应答时)和免费ARP(发送自己IP地址的ARP请求一般发生在引导过程中)。
ARP 工作流程
- ARP 请求:当主机 A 要向同一子网内的主机 B 发送数据时,首先检查本地 ARP 缓存是否有 B 的 IP 到 MAC 地址映射。若没有,则广播 ARP 请求包(目标 MAC 设为 FF:FF:FF:FF:FF:FF),包含”谁的 IP 是 x.x.x.x?请告诉 y.y.y.y”
- ARP 应答:目标主机 B 收到 ARP 请求后,单播回复自己的 MAC 地址给主机 A。同时 B 也会将 A 的 IP-MAC 映射加入自己的 ARP 缓存
- 缓存更新:收到 ARP 应答后,主机 A 将映射关系存入 ARP 高速缓存,后续通信直接使用缓存,避免重复广播。缓存条目有生存时间(通常 20 分钟),超时后自动删除
ARP 报文格式
- ARP 报文总长 28 字节(不含以太网首部),包含:硬件类型(以太网=1)、协议类型(IPv4=0x0800)、硬件地址长度(6)、协议地址长度(4)、操作码(请求=1,应答=2)、发送方 MAC、发送方 IP、目标 MAC、目标 IP
- ARP 报文封装在以太网帧中,以太网类型字段值为 0x0806
特殊 ARP 类型
- 免费 ARP(Gratuitous ARP):主机启动时发送目标 IP 为自身 IP 的 ARP 请求,用途有二:一是检测 IP 地址冲突(如果收到应答说明 IP 重复);二是通知其他主机更新 ARP 缓存(用于故障切换场景,如 VRRP/Keepalived 的 IP 漂移)
- 委托 ARP(Proxy ARP):路由器代替目标主机应答 ARP 请求,将自己的 MAC 地址返回给请求方。用于连接不同物理网络但属于同一逻辑子网的主机,使它们可以直接通信
- RARP(逆向 ARP):与 ARP 相反,通过已知的 MAC 地址查询对应的 IP 地址,主要用于无盘工作站启动时获取 IP 地址,现已被 DHCP/BOOTP 取代
ARP 安全问题
- ARP 欺骗(ARP Spoofing):攻击者发送伪造的 ARP 应答,将自己的 MAC 地址与网关的 IP 地址绑定,从而拦截或篡改网络流量(中间人攻击)
- 防御措施:静态 ARP 绑定(
arp -s)、Dynamic ARP Inspection(DAI)、802.1X 端口认证