NDP 是 IPv6 的基础支撑协议,基于 ICMPv6 消息完成地址解析、路由器发现、地址自动配置与重复地址检测等功能,在 IPv6 网络中取代了 IPv4 的 ARP 和部分 ICMP 功能。

| 中文名 | 邻居发现协议 |
| 标准文档 | RFC 4861 |
| 承载协议 | ICMPv6 |
| 消息类型 | RS / RA / NS / NA / Redirect |
| 取代对象 | ARP、ICMP 路由器发现 |
NDP(Neighbor Discovery Protocol,邻居发现协议)是 IPv6 体系中链路本地通信的核心协议,定义于 RFC 4861。它基于 ICMPv6 报文,让同一链路上的节点互相发现、解析对方的链路层地址、寻找路由器并维护邻居可达性信息,整体取代了 IPv4 中的 ARP、ICMP 路由器发现和 ICMP 重定向机制。
IPv6 设计时希望用统一框架解决 IPv4 中分散在多个协议里的链路管理功能。NDP 使用五种 ICMPv6 消息类型:路由器请求(RS)、路由器通告(RA)、邻居请求(NS)、邻居通告(NA)和重定向(Redirect)。这些消息通常发往精心设计的组播地址而非全网广播,例如被请求节点组播地址,只有目标相关的少数主机需要处理,效率优于 ARP 的全网广播。
与 ARP 一样,NDP 默认不做认证,攻击者可伪造 RA 冒充网关(RA 欺骗)或伪造 NA 劫持流量。防护手段包括交换机上的 RA Guard 功能,以及基于密码学的 SEND(安全邻居发现)协议,后者因部署复杂普及有限。
问:IPv6 为什么不用 ARP?答:ARP 依赖广播且独立于 IP 之上,IPv6 将其职能并入 ICMPv6 组播框架,减少无关主机干扰,并与地址自动配置等功能统一。
问:NDP 和 DHCPv6 冲突吗?答:不冲突。RA 中的标志位决定主机用 SLAAC 还是 DHCPv6 获取地址与 DNS 等信息,两者可以配合使用。
问:如何查看邻居表?答:Linux 使用 ip -6 neigh 命令,Windows 使用 netsh interface ipv6 show neighbors,相当于 IPv4 下查看 ARP 表。

| 中文名 | 邻居发现协议 |
| 标准文档 | RFC 4861 |
| 承载协议 | ICMPv6 |
| 消息类型 | RS / RA / NS / NA / Redirect |
| 取代对象 | ARP、ICMP 路由器发现 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧