IPv6 的 NDP 是什么?它和 IPv4 的 ARP 有什么区别?
简化版
NDP,Neighbor Discovery Protocol,是 IPv6 中用于邻居发现、地址解析、路由器发现、前缀发现、重复地址检测等功能的协议。
IPv4 用 ARP 把 IP 映射到 MAC,IPv6 不再使用 ARP,而是基于 ICMPv6 的 Neighbor Solicitation 和 Neighbor Advertisement 完成类似地址解析。
NDP 功能比 ARP 更丰富,但也需要防护伪造邻居通告、路由器通告攻击等问题。
详细版
IPv6 地址解析大致流程:
Host A -> Neighbor Solicitation: 谁拥有某个 IPv6 地址?
Host B -> Neighbor Advertisement: 这个地址对应我的 MAC。
NDP 使用 ICMPv6 消息,不是 ARP 以太网类型。
它还包括:
- Router Solicitation。
- Router Advertisement。
- Neighbor Solicitation。
- Neighbor Advertisement。
- Redirect。
NDP 支持 SLAAC、默认网关发现、链路前缀发现等 IPv6 基础能力。
所以面试不能只说“NDP 等于 ARP”,更准确是“NDP 包含 ARP 类似能力,但范围更大”。
完整版教学
1. 先说明 IPv6 为什么没有 ARP
IPv4 地址解析使用 ARP。
IPv6 重新设计了邻居发现机制。
它把地址解析、路由器发现、前缀发现等能力统一放进 NDP。
NDP 基于 ICMPv6。
NDP 可以看作 IPv6 局域网控制平面的核心协议之一。
2. NDP 的主要消息类型
常见 ICMPv6 消息包括:
| 消息 | 作用 | 类比理解 |
|---|---|---|
| Router Solicitation | 主机询问路由器 | 找网关 |
| Router Advertisement | 路由器通告前缀和默认路由 | 发网络配置 |
| Neighbor Solicitation | 查询邻居链路层地址 | 类似 ARP Request |
| Neighbor Advertisement | 回答邻居链路层地址 | 类似 ARP Reply |
| Redirect | 告诉主机更优下一跳 | 路由优化 |
这些消息共同支撑 IPv6 本地链路通信。
3. 地址解析流程
Host A 要访问同链路 Host B。
Host A 需要知道 B 的 MAC。
它发送 Neighbor Solicitation。
NS: Who has 2001:db8::20?
Host B 回 Neighbor Advertisement。
NA: 2001:db8::20 is at bb:bb:bb
然后 Host A 就能封装二层帧发送。
4. 路由器发现和前缀发现
IPv6 主机可以通过 Router Advertisement 获取网络信息。
RA 里可能包含:
- 默认网关。
- 网络前缀。
- 是否使用 SLAAC。
- 是否使用 DHCPv6。
- MTU。
这让 IPv6 主机可以自动配置地址和默认路由。
IPv4 中这些能力通常由 ARP、DHCP、手动配置等分散完成。
5. 重复地址检测
IPv6 主机配置地址前,会做 DAD。
DAD 全称 Duplicate Address Detection。
主机会询问:
这个 IPv6 地址有人用吗?
如果收到回应,说明地址冲突。
这能避免同一链路上两个主机使用相同 IPv6 地址。
6. NDP 安全风险
NDP 也可能被伪造。
风险包括:
- 伪造 Router Advertisement,让主机使用恶意网关。
- 伪造 Neighbor Advertisement,污染邻居缓存。
- DAD DoS,让主机以为地址冲突。
- Redirect 欺骗。
防护方式包括 RA Guard、ND Inspection、网络隔离和安全配置。
7. 常见误区与追问
- 误区:NDP 就只是 IPv6 版 ARP。 NDP 包含地址解析,但还负责路由器发现、前缀发现、DAD 等。
- 误区:IPv6 没有广播就没有邻居发现。 IPv6 使用多播和 ICMPv6 完成邻居发现。
- 误区:ICMPv6 可以随便禁用。 NDP 依赖 ICMPv6,乱禁会导致 IPv6 基础功能异常。
- 追问:RA 有什么作用? 通告默认路由、前缀、MTU 和自动配置相关信息。
- 追问:DAD 解决什么问题? 检测同链路 IPv6 地址冲突。
- 追问:RA Guard 防什么? 防止非法设备发送伪造路由器通告。
8. 加强记忆
NDP 记成 IPv6 的“邻居和路由器发现管家”。
它不只是找 MAC,还帮主机发现网关、前缀和地址冲突。