ARP 协议:地址解析的幕后英雄

作者:Yolo 发布时间: 2026-06-24 阅读量:7

ARP 协议:地址解析的幕后英雄

系列文章:这是网络协议系列的第 8 篇,前 7 篇已覆盖 HTTP、HTTPS、TCP、UDP、IP、IPv6 和 ICMP。本文深入链路层,探索 ARP 协议如何完成 IP 地址到 MAC 地址的映射。


一、为什么需要 ARP?

想象你寄快递:知道收件人的门牌号(IP 地址),但快递员最终需要找到具体的房子(MAC 地址)才能送达。ARP(Address Resolution Protocol,地址解析协议)就是网络世界的"地址翻译官"——把逻辑 IP 地址映射为物理 MAC 地址

在以太网中,数据帧的实际传输依赖 MAC 地址。当你的设备需要与局域网内的另一台设备通信时,ARP 就是那个不可或缺的中间人。


二、ARP 的工作原理

2.1 基本流程

ARP 的工作过程简单直接,分为两个核心步骤:

  1. ARP 请求(广播):主机 A 想知道 IP 为 192.168.1.10 的设备 MAC 地址,于是在局域网内广播:"谁是 192.168.1.10?告诉我你的 MAC 地址!"
  2. ARP 响应(单播):目标主机 B 收到请求后,单播回复:"我是 192.168.1.10,我的 MAC 是 AA:BB:CC:DD:EE:FF"

2.2 报文格式

字段 长度 说明
硬件类型 2 字节 以太网值为 1
协议类型 2 字节 IPv4 为 0x0800
硬件地址长度 1 字节 MAC 地址长度 = 6
协议地址长度 1 字节 IPv4 地址长度 = 4
操作码 2 字节 1=请求,2=响应
发送方 MAC 6 字节 请求者的 MAC
发送方 IP 4 字节 请求者的 IP
目标 MAC 6 字节 请求时填 0
目标 IP 4 字节 要查询的 IP

2.3 ARP 缓存

为了避免频繁广播,操作系统会维护一张 ARP 缓存表

# Linux/macOS 查看 ARP 缓存
$ arp -a
? (192.168.1.1) at aa:bb:cc:dd:ee:ff on en0
? (192.168.1.105) at 11:22:33:44:55:66 on en0

# Windows
> arp -a
Interface: 192.168.1.100 --- 0x12
  Internet Address      Physical Address      Type
  192.168.1.1           aa-bb-cc-dd-ee-ff     dynamic
  192.168.1.105         11-22-33-44-55-66     dynamic

缓存条目有生存时间(通常几分钟到几小时),过期后需要重新 ARP 查询。


三、ARP 的变种

3.1 代理 ARP(Proxy ARP)

路由器代替其他主机响应 ARP 请求,常用于:

  • 不同子网间的通信
  • 没有配置默认网关的老旧设备
  • 某些 VPN 场景

3.2 无偿 ARP(Gratuitous ARP)

主机主动广播自己的 IP 和 MAC 映射,不期待回复。用途:

  • IP 冲突检测:刚配置 IP 时广播,如果有人回复说明 IP 已被占用
  • 更新 ARP 缓存:更换网卡后通知局域网更新缓存
  • HA 切换:主备切换时快速更新 MAC 映射

3.3 RARP(反向 ARP)

与 ARP 相反,已知 MAC 地址查询 IP 地址。已被 DHCP 取代,基本淘汰。


四、ARP 的安全问题

4.1 ARP 欺骗(ARP Spoofing)

由于 ARP 没有认证机制,攻击者可以伪造 ARP 响应:


攻击者告诉主机 A:"192.168.1.1 的 MAC 是我"
攻击者告诉网关:"192.168.1.100 的 MAC 是我"
→ 流量全部经过攻击者(中间人攻击)

防御措施

  • 静态 ARP 绑定:关键设备绑定静态 ARP 条目
  • 动态 ARP 检测(DAI):交换机验证 ARP 报文合法性
  • ARP 防火墙:检测异常的 ARP 流量

4.2 常见攻击工具

  • Ettercap:经典的中间人攻击框架
  • arpspoof(dsniff 套件):简单的 ARP 欺骗工具
  • BetterCAP:现代化的网络攻击和监控框架

五、ARP 与网络分层


应用层      HTTP/HTTPS/FTP/DNS...
传输层      TCP/UDP
网络层      IP/ICMP/IGMP
链路层      ARP ← 就在这里!
物理层      以太网/Wi-Fi

有趣的是,ARP 虽然工作在链路层,但它直接为网络层(IP)服务,可以说是"跨层"协议。


六、IPv6 时代的替代者:NDP

ARP 是为 IPv4 设计的。IPv6 不再使用 ARP,而是用 NDP(Neighbor Discovery Protocol,邻居发现协议),它是 ICMPv6 的一部分,功能更强大:

功能 ARP (IPv4) NDP (IPv6)
地址解析 ARP 请求/响应 邻居请求/通告
路由器发现 DHCP 或静态配置 路由器请求/通告
重复地址检测 无偿 ARP 邻居请求
重定向 ICMP 重定向 ICMPv6 重定向

七、实战:抓包分析 ARP

使用 Wireshark 或 tcpdump 抓包:

# 只抓 ARP 包
$ sudo tcpdump -i eth0 arp

# 输出示例
ARP, Request who-has 192.168.1.1 tell 192.168.1.100, length 28
ARP, Reply 192.168.1.1 is-at aa:bb:cc:dd:ee:ff, length 28

Wireshark 中过滤 ARP 包:直接在过滤器输入 arp


八、总结

特性 说明
全称 Address Resolution Protocol
工作层级 链路层(为网络层服务)
核心功能 IP 地址 → MAC 地址映射
通信方式 请求广播,响应单播
安全问题 ARP 欺骗(无认证机制)
IPv6 替代 NDP(邻居发现协议)

ARP 是网络通信中最基础却最容易被忽视的协议之一。没有它,IP 数据包根本无法在局域网内送达。理解 ARP,就是理解网络数据包"最后一公里"的投递过程。


📚 系列索引

  1. HTTP 协议详解
  2. HTTPS 协议详解
  3. TCP 协议详解
  4. UDP 协议详解
  5. IP 协议详解
  6. IPv6 协议详解
  7. ICMP 协议详解
  8. ARP 协议详解(本文)