ARP(地址解析协议)与NDP(邻居发现协议)
- ARP(Address Resolution Protocol,地址解析协议)用于IPv4 网络:根据目标 IPv4 地址,查询对应的二层 MAC 地址。
- NDP(Neighbor Discovery Protocol,邻居发现协议)用于IPv6 网络:完全替代 IPv4 的 ARP,同时额外集成网关发现、重复地址检测、路由前缀通告等功能
目录
ARP 详解(IPv4)
基础标准 ARP(正向地址解析,IPv4 核心)
免费 ARP(Gratuitous ARP)
代理 ARP(Proxy ARP)
RARP 反向地址解析协议
作用:和 ARP 完全反向
ARP报文
NDP 详解(IPv6,无广播,全部单播 / 组播)
1. NDP 五大核心报文(ICMPv6 类型)
2. NDP 额外能力(ARP 没有)
ARP 详解(IPv4)
1. 核心报文两种
(1)ARP Request(ARP 请求)
- 常规场景(未知对端 MAC):二层目标 MAC
FF:FF:FF:FF:FF:FF→广播报文作用:在整个 VLAN 广播询问 “谁是这个 IP,请回复你的 MAC”- 特殊场景(交换机 MAC 老化探测、邻居保活):单播 ARP 请求 二层目标 MAC 填已知对端 MAC →单播报文,仅探测单台设备是否在线
(2)ARP Reply(ARP 响应)
永远是单播报文:目标 MAC 直接填写请求方主机 MAC,一对一回复,不广播。
2. 补充:免费 ARP(Gratuitous ARP)
主机开机 / 改 IP 主动发送,宣告自己 IP 与 MAC 映射,分两种:
- 目标 MAC 全 F:广播免费 ARP
- 目标 MAC 为本机:单播免费 ARP
3. 工作局限
仅完成 IP→MAC 解析;网关发现、地址冲突检测需要额外报文(如广播),功能单一
基础标准 ARP(正向地址解析,IPv4 核心)
作用
已知IPv4 地址,查询对应二层 MAC 地址;分为请求、响应两种报文
- ARP Request 请求
- 常规场景:二层目标 MAC
FF:FF:FF:FF:FF:FF→广播,全网询问目标 IP 的 MAC - 保活探测:交换机单播 ARP 探测主机在线,目标 MAC 填终端真实 MAC →单播
- 字段:源 IP / 源 MAC、目标 IP、目标 MAC 全 0
- 常规场景:二层目标 MAC
- ARP Reply 响应
- 永远单播发送,直接回复请求主机的 MAC,不广播
- 字段:填充完整目标 MAC,告知对方本机 IP-MAC 映射
转发规则
同网段主机收到广播 ARP 请求,匹配目标 IP 则回复;不匹配直接丢弃
免费 ARP(Gratuitous ARP)
核心特点
主机主动发送ARP 请求,目标 IP = 本机自身 IP,不需要别人回复,两大用途:IP 冲突检测、更新全网 ARP 表
- 两种发送形式
- 广播免费 ARP:目标 MAC 全 F,网段所有设备接收
- 单播免费 ARP:目标 MAC 为本机 MAC,仅更新对端 ARP 缓存
- 典型场景
- 设备开机、网卡重启、手动修改 IP
- 服务器主备切换(VRRP 故障切换,快速刷新全网 MAC 映射)
- 冲突检测逻辑:若收到本机 IP 的 ARP 回复,代表网段存在 IP 冲突
和普通 ARP Request 区别
普通 ARP:目标 IP 是别人,目的是获取对方 MAC; 免费 ARP:目标 IP 是自己,目的是宣告自己、检测冲突
代理 ARP(Proxy ARP)
适用场景
两台主机不在同一网段、无网关路由,但中间路由器开启代理 ARP,伪装成对端回复 ARP
- 工作流程 主机 A 发送广播 ARP 请求,询问跨网段主机 B 的 IP; 中间路由器拥有去往 B 的路由,代替 B 回复 ARP Reply,回复 MAC 是路由器自身接口 MAC; A 后续所有流量发给路由器,路由器再转发给 B
- 典型使用环境
- 子网划分不规范,主机掩码配置错误
- 老旧设备不支持网关,无法配置默认路由
- 简单跨网段互通,不配置三层网关
- 优缺点 ✅ 无需修改终端 IP / 掩码,实现跨网段互通 ❌ 消耗路由器 CPU,广播泛洪范围变大,容易产生 ARP 表溢出
关键区分
普通 ARP:同网段主机互相应答; 代理 ARP:三层设备代替跨网段主机应答 ARP 请求
RARP 反向地址解析协议
作用:和 ARP 完全反向
已知本机 MAC 地址,查询对应的 IPv4 地址
- 适用设备:无盘工作站、瘦客户机、工业终端(开机只有 MAC,没有配置 IP)
- 工作流程 终端发送广播 RARP 请求,携带自身 MAC; 内网 RARP 服务器存有 MAC-IP 映射表,单播回复分配的 IP
- 现状淘汰 现代网络全部用DHCP替代 RARP,RARP 几乎不再使用
ARP:IP → MAC;RARP:MAC → IP
ARP报文
二层以太网头部
| 字段 | 长度 | 说明 |
|---|---|---|
| 目标 MAC | 6 字节 | 请求:全 F 广播;响应:请求方主机 MAC |
| 源 MAC | 6 字节 | 发送方网卡 MAC |
| 类型字段 | 2 字节 | 0x0806= ARP 报文(区分 IP 报文 0x0800) |
ARP 载荷头部(固定 28 字节)
- 硬件类型:2 字节,
1= 以太网 - 协议类型:2 字节,
0x0800= IPv4 - 硬件地址长度:1 字节,以太网 MAC 固定 6
- 协议地址长度:1 字节,IPv4 固定 4
- 操作码 Opcode(核心区分请求 / 响应)
1= ARP Request 请求2= ARP Reply 响应3= RARP Request4= RARP Reply
- 发送端 MAC SHA:6 字节,源 MAC
- 发送端 IP SPA:4 字节,源 IPv4
- 目标 MAC THA:6 字节,请求时填全 0;响应填目标主机 MAC
- 目标 IP TPA:4 字节,要解析的目标 IPv4
| 类型 | 核心功能 | 报文特征 |
|---|---|---|
| ARP(标准) | IP 查 MAC,同网段互通 | Request 广播;Reply 单播 |
| 免费 ARP | 宣告本机 IP、检测 IP 冲突 | 目标 IP = 本机 IP,主动发送 |
| 代理 ARP | 路由器代跨网段主机回复 ARP | 三层设备冒充目标主机回包 |
| RARP | MAC 查 IP,无盘设备获取地址 | 已淘汰,由 DHCP 替代 |
NDP 详解(IPv6,无广播,全部单播 / 组播)
IPv6 取消二层广播,NDP 所有报文基于IPv6 组播或单播传输,没有广播帧
1. NDP 五大核心报文(ICMPv6 类型)
- NS 邻居请求 Neighbor Solicitation(替代 ARP Request)作用:查询 IPv6 对应的 MAC 地址 目标 IPv6:请求节点组播地址 FF02::1:FFXX:XXXX(组播) 等价 IPv4 的广播 ARP 请求,但底层是组播,不会泛洪所有设备
- NA 邻居通告 Neighbor Advertisement(替代 ARP Reply)
- 主动回复 NS:单播,发给 NS 发送方
- 主动宣告本机地址(重复地址检测 DAD):组播发送
- RS 路由器请求 Router Solicitation终端上线,组播询问网段网关
- RA 路由器通告 Router Advertisement网关周期性组播下发前缀、网关、DNS 信息(IPv6 自动组网关键)
- Redirect 重定向报文网关单播告知终端更优下一跳
2. NDP 额外能力(ARP 没有)
- DAD 重复地址检测:开机自动检测网段是否有相同 IPv6,避免 IP 冲突
- 无状态地址自动配置(SLAAC):依靠 RA 报文自动生成 IPv6,无需 DHCPv6
- 网关、前缀、DNS 统一下发
- 邻居可达性探测,替代单播 ARP 保活
| 对比项 | ARP(IPv4) | NDP(IPv6) |
|---|---|---|
| 适用网络 | IPv4 | IPv6,彻底取代 ARP |
| 传输载体 | 二层广播 / 单播 | 无广播,仅组播、单播 |
| 查询报文 | ARP Request(广播为主) | NS 邻居请求(请求节点组播) |
| 回复报文 | ARP Reply(永远单播) | NA 邻居通告(单播回复 / 组播主动宣告) |
| 核心功能 | 仅 IP→MAC 地址解析 | 地址解析 + 网关发现 + DAD 冲突检测 + 自动地址配置 |
| 二层目标特征 | 广播 MACFF:FF:FF:FF:FF:FF | IPv6 请求节点组播 MAC33:33:FF:xx:xx:xx |
| 冲突检测 | 依靠免费 ARP 广播 | 内置 DAD 机制,标准化流程 |
- IPv4 ARP 请求绝大多数是广播,探测保活 ARP 请求是单播;ARP 响应一定单播。
- IPv6 没有广播,不存在广播型地址解析,全部靠 NDP 组播 NS 报文实现 ARP 同等功能。
- NDP = ARP + 网关发现 + IP 冲突检测 + 自动配置,功能远强于 ARP。
- 二层 MAC 区分: ARP 广播帧目标 MAC 全 F; NDP 组播报文 MAC 以
33:33开头,属于 IPv6 专属组播 MAC