【杂记-浅谈NDP邻居发现协议】

发布于:2024-06-27 ⋅ 阅读:(22) ⋅ 点赞:(0)

一、NDP协议概述

1、NDP,Neighbor Discovery Protocol,即邻居发现协议,是IPv6协议体系中的一个基础协议,它通过使用ICMPv6报文实现了一系列的功能,包括无状态自动配置、重复地址检测(DAD)、地址解析、邻居不可达检测(NUD)和路由器重定向等。
2、NDP协议在IPv6网络中被广泛应用于地址解析、路由器发现、前缀发现、参数发现等多个方面。它使得IPv6网络的部署和管理变得更加便捷和高效。
3、NDP通过一系列的ICMPv6报文类型实现了节点间的相互发现和通信,极大地提升了IPv6网络的自动化程度和安全性。
优点
NDP协议相较于IPv4中的ARP协议,具有更高的效率和更好的安全性。它使用组播而非广播的方式发送请求,避免了不必要的网络拥塞,同时也减少了网络带宽的消耗。此外,NDP协议还支持重复地址检测,可以有效地避免地址冲突。

二、NDP协议的作用

1、NDP协议的主要作用是在IPv6网络中实现节点间相互发现和通信。它允许新加入网络的节点自动获取IPv6地址、前缀信息和路由信息,同时也能够发现网络中的其他节点和路由器。
2、IPv6地址无状态自动配置过程中,主机发送RS报文尝试在链路上发现IPv6路由器,路由器回复RA报文,主机根据RA报文获得IPv6前缀信息,使用该地址前缀加上本地产生的接口ID,形成单播IPv6地址。
3、IPv6定义了节点之间邻居的状态机,同时还维护邻居IPv6地址与二层地址的映射关系,相应的表项存储于设备的IPv6邻居表中。
4、接口在启用任何一个单播IPv6地址前都需要先进行DAD,包括Link-Local地址。重复地址检测(DAD)是NDP中的一个独特机制,用于确保网络中没有两个节点使用相同的单播地址。在节点自动配置某个接口的IPv6单播地址之前,必须在本地链路范围内验证要使用的地址是唯一的,并且未被其他节点使用过。
IPv6中的Link-Local地址
IPv6中的Link-Local地址是自动生成的,并且是网络接口的一部分。每个启用了IPv6的节点都会为其每个接口自动配置一个Link-Local地址,该地址基于设备的MAC地址按照EUI-64格式转换而成。Link-Local地址的使用避免了在同一链路上的节点间的通信需要全局唯一的IPv6地址的问题,简化了网络配置和管理。

三、NDP协议的工作原理

NDP协议通过发送和接收ICMPv6报文来完成各项功能。这些报文包括路由器请求(RS)、路由器通告(RA)、邻居请求(NS)、邻居通告(NA)和重定向(Redirect)等类型。

四、NDP协议的报文类型

1、路由器请求(RS):由主机发起,用来请求路由器发送一个RA。
2、路由器通告(RA):由路由器发起,通告路由器的存在和链路的细节参数,如链路前缀、MTU、跳数限制等。
3、邻居请求(NS):由节点主机发起,用来请求另一台主机的链路层地址,或实现地址冲突检测、邻居不可达检测。
4、邻居通告(NA):由节点发起用来响应NS,如果一个节点改变了他的链路层地址,那么它能够主动发送一个NA来通告这个新地址。
5、重定向(Redirect):当路由器发现更好的报文转发路径时,会使用该报文通知主机。