Skip to content

ARP 协议

ARP(Address Resolution Protocol,地址解析协议)用于把 IP 地址解析为 MAC 地址(也就是「已知对端 IP,求对端网卡硬件地址」)。它工作在 TCP/IP 模型的网络接口层 / 链路层与网络层交界处(严格说属于链路层,但为配合 IP 通信而存在),是局域网通信不可或缺的一环。

为什么需要它?网络层用 IP 寻址(逻辑地址),但数据帧在**二层(以太网)**实际是靠 MAC 地址 投递的。发包前必须知道下一跳/目的主机的 MAC,ARP 就是做这个「翻译」。


一、ARP 的工作流程

假设主机 A(192.168.1.10)要给同网段主机 B(192.168.1.20)发包,但只知道 B 的 IP:

  1. 查缓存:A 先看本地 ARP 缓存表 是否已有 192.168.1.20 → MAC 的映射,有则直接用。
  2. ARP 请求(广播):没有缓存时,A 在局域网内广播一个 ARP Request:「谁的 IP 是 192.168.1.20?请把你的 MAC 告诉我」。
  3. ARP 应答(单播):只有 B 认领该 IP,向 A 单播回 ARP Reply,带上自己的 MAC。
  4. 写缓存:A 把 192.168.1.20 ↔ MAC 写入 ARP 缓存(有老化时间,通常几分钟),之后直接通信。
A ──广播──> [ 谁有 192.168.1.20? ] ──> 全网
B ──单播──> [ 我是 192.168.1.20,MAC=xx:xx ] ──> A

跨网段时:A 发现目标不在同一子网,会把包发给默认网关的 MAC(同样通过 ARP 解析网关 IP),由路由器转发——所以「跨网段通信」依然要先 ARP 到网关。


二、报文格式(以太网 ARP)

 0               1               2               3
 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 硬件类型(1=以太网) | 协议类型(0x0800=IPv4) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 硬件地址长度(6)  | 协议地址长度(4)  |     操作 Opcode          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    发送方 MAC(6 字节)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               发送方 IP(4 字节)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    目标 MAC(6 字节)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               目标 IP(4 字节)                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 操作 Opcode1 = ARP 请求(Request),2 = ARP 应答(Reply)。请求时「目标 MAC」填全 0(未知)。
  • 硬件类型 1 表示以太网;协议类型 0x0800 表示要解析的是 IPv4 地址。

三、ARP 缓存与常用命令

  • 缓存条目有过期时间,超时或 IP 变更后会重新解析。
  • 查看/管理缓存:
    • Windows / Linux:arp -a(查看);arp -d(删除某条)。
    • Linux 还可:ip neigh(更现代的邻居表查看)。

四、安全:ARP 欺骗(ARP 毒化)

ARP 本身没有认证,任何主机都能声称「我是 192.168.1.1(网关)」。攻击者据此伪造 ARP 应答,把自己伪装成网关/受害者,实现:

  • 中间人攻击(MITM):劫持、窃听、篡改局域网内流量。
  • 断网/黑洞:伪造映射使流量发往不存在的 MAC。

防护手段:静态 ARP 绑定、交换机端口安全 / DHCP Snooping + 动态 ARP 检测(DAI)、网络分段与加密(HTTPS/VLAN)。


五、相关协议

  • RARP:反向 ARP,由 MAC 求 IP(已被 BOOTP/DHCP 取代)。
  • 代理 ARP:路由器代答 ARP,让不同子网主机「以为」在同一网段。
  • IPv6 的 NDP:IPv6 不再使用 ARP,而是用 NDP(邻居发现协议,基于 ICMPv6) 完成地址解析、重复地址检测等。

六、与 ICMP / TCP 的层次关系

协议层次职责
ARP链路层 / 网络层交界IP ↔ MAC 地址解析
ICMP网络层(L3)差错与控制报文(ping/traceroute)
TCP / UDP传输层(L4)端到端可靠/不可靠传输

简单记忆:要发包先靠 ARP 找到 MAC(二层),要诊断网络靠 ICMP(三层),要传数据靠 TCP/UDP(四层)。

最近更新