ARP 全解:报文、解析过程、代理 ARP 与攻击防御

本文深入剖析ARP协议核心机制,涵盖28字节报文格式(含EtherType 0x0806、操作码类型、自描述地址长度)、完整解析时序(缓存查询、广播请求、单播应答、NUD状态机)、免费ARP与代理ARP原理及风险。重点分析ARP欺骗、泛洪、MAC洪泛三类内网攻击链,并提出基于主机绑定、DHCP Snooping、DAI、Port Security和VLAN划分的分层防御矩阵。同时对比NDP在IPv6中的演进与攻防新形态。

定位:一篇从零到攻防的 ARP 完整解析。不只是"IP 换 MAC 的协议"——把报文逐字节拆开、把解析时序画清、把代理 ARP 的正反两面说透、把内网横移的核心链路与分层防御讲全。所有字段值、定时器参数、命令均可直接对照实验。


0 · 导读:为什么 ARP 值得"全解"

ARP(Address Resolution Protocol,地址解析协议,RFC 826,1982 年 David C. Plummer)做一件事:在同一个广播域内,把已知的 IP 地址解析为 MAC 地址。它是 IPv4 over Ethernet 的粘合剂——没有它,IP 包连网卡都进不去。

但它值得单独成篇,是因为四个"之最":

维度 ARP 的地位
最基础 每一次跨主机的 IPv4 通信(哪怕访问外网)都先问一次 ARP
最"裸奔" 设计于 1982 年,无认证、无加密、无状态,"我是谁"全靠报文里一张嘴
最致命 内网横向渗透、中间人、流量劫持的第一跳几乎都是 ARP
最易误解 免费 ARP、代理 ARP、RARP、InARP、NDP 互相纠缠,面试重灾区

本篇路线图:

  1. 报文:28 字节逐字段 + 以太帧封装 + 完整十六进制抓包实例;
  2. 解析过程:查表 → 广播请求 → 单播应答 → 缓存更新的完整时序,含缓存状态机与定时器;
  3. 免费 ARP 与探针:被忽视的四个真实用途;
  4. 代理 ARP:原理、两种模式、现代替代、风险;
  5. 协议辨析:RARP / InARP / DHCP / IPv6 NDP;
  6. 攻击:欺骗 / 泛洪 / MAC 洪泛三层攻击链与 MITM 后续利用;
  7. 防御:从主机静态绑定到交换机 DAI 的分层矩阵,每层的成本与边界;
  8. 抓包实战 + 面试高频题。

1 · ARP 报文格式:28 字节的逐字段拆解

1.1 报文结构(Ethernet + IPv4 场景)

ARP 报文本体固定 28 字节,字段长度却由报文自己声明(这是为兼容非 Ethernet/非 IPv4 网络设计的,如令牌环、FDDI、IPX):

# 字段 长度 Ethernet+IPv4 取值 说明
1 Hardware Type (HTYPE) 2 B 0x0001 硬件地址类型:1 = Ethernet
2 Protocol Type (PTYPE) 2 B 0x0800 协议地址类型:与 EtherType 同编码,IPv4 = 0x0800
3 Hardware Addr Length (HLEN) 1 B 0x06 MAC 地址长度:6 字节
4 Protocol Addr Length (PLEN) 1 B 0x04 IP 地址长度:4 字节
5 Operation (OPER) 2 B 0x0001 请求 / 0x0002 应答 见 1.3 操作码全表
6 Sender HA (SHA) HLEN = 6 B 发送方 MAC
7 Sender PA (SPA) PLEN = 4 B 发送方 IP
8 Target HA (THA) HLEN = 6 B 请求时全 0,应答时填充 唯一由对端回填的字段
9 Target PA (TPA) PLEN = 4 B 要解析的目标 IP

合计 2+2+1+1+2+6+4+6+4 = 28 字节。

关键设计: ARP 的地址长度是"自描述"的——HLEN/PLEN 允许同一份报文格式用于 Ethernet/IPv4、Token Ring/IPv4、甚至 FR/IPX 组合。这也是 InARP(帧中继)能复用 ARP 格式的原因(见第 5 节)。

1.2 以太帧封装

┌─────────────────────────── Ethernet II 帧 ───────────────────────────┐
│ 目的 MAC (6B)    源 MAC (6B)    EtherType (2B)    FCS (4B)          │
│ ff:ff:ff:ff:ff  sender_mac     0x0806             CRC-32            │
├─────────────────────────── ARP 载荷 (28B) ───────────────────────────┤
│ HTYPE PTYPE HLEN PLEN OPER SHA SPA THA TPA                          │
└──────────────────────────────────────────────────────────────────────┘

三个必须记住的事实:

  1. EtherType = 0x0806 标识 ARP(RARP 是 0x8035,二者不同);
  2. 请求的目的 MAC 固定 ff:ff:ff:ff:ff:ff(广播);应答一般是单播(发回请求者),也可以是广播;
  3. 以太网最小帧 64 字节 = 14 B 帧头 + 46 B 载荷 + 4 B FCS。ARP 只有 28 B,因此后面要补 18 B 的 0x00 padding——抓包看到的 “trailer” 或 padding 就是这个,不是报文内容。

1.3 操作码全表(面试常考"ARP 有哪些类型")

OPER 值 名称 现状
1 ARP Request 在用
2 ARP Reply 在用
3 RARP Request 已淘汰(DHCP 取代)
4 RARP Reply 已淘汰
5/6 DRARP Request/Reply(动态 RARP) 历史
7 DRARP E
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reset2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值