IPv6邻居发现协议--NDP详解

Posted 造夢先森

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IPv6邻居发现协议--NDP详解相关的知识,希望对你有一定的参考价值。

一、ICMPv6 -Internet控制报文协议

ICMPv6是IPV6的基础协议之一,用于向源节点传递报文转发的信息或错误

协议类型号(即:IPv6Next Header)为58

icmpv6可以提供icmpv4的的对应功能之外,还有其他一些功能的基础如邻居发现、无状态地址配置、重复地址检测、PMTU发现等。

消息类型:

IPv6和IPv4相比有哪些优势?

  • v4是用arp广播试下地址解析和重复地址检测
  • v6是用组播形式,减轻设备性能压力
  • v6在三层完成地址解析,适用更多的链路层(介质独立性)
  • v6在三层完成解析,可以使自身ipsec安全认证机制提高安全性,避免类似v4中的arp欺骗

二、IPv6邻居发现协议–NDP详解

NDP(Neighbor Discovery Protocol,邻居发现协议) 是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP路由器发现和ICMP重定向等协议,并对它们作了改进。该协议使用icmpv6协议实现,作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不可达检测、重复地址监测、地址自动配置等功能。

在IPv4中,当主机需要和目标主机通信时,必须先通过ARP协议获得目的主机的链路层地址。在IPv6中,同样需要从IP地址解析到链路层地址的功能。邻居发现协议实现了这个功能。

ARP报文是直接封装在以太网报文中,以太网协议类型为0x0806,普遍观点认为ARP定位为第2.5层的协议。ND本身基于ICMPv6实现,以太网协议类型为0x86DD,即IPv6报文,IPv6下一个报头字段值为58,表示ICMPv6报文,由于ND协议使用的所有报文均封装在ICMPv6报文中,一般来说,ND被看作第3层的协议。在三层完成地址解析,主要带来以下几个好处:

  • 地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议。
  • 可以使用三层的安全机制避免地址解析攻击。
  • 使用组播方式发送请求报文,减少了二层网络的性能压力。
NDP使用的ICMPv6的相关报文Type字段
RS(router solicitation)路由器请求type-133
RA(router Advertisment)路由器通告报文type-134
NS(Neighbor solicition)邻居请求报文type-135
NA(Neighbor Advertisement):邻居通告报文)type-136

NDP功能点:

  • 路由发现-----------发现链路上的路由器,获得路由器通告的信息 ( RS RA报文)
  • 无状态自动配置–通知路由器通告的地址前缀,终端自动生成IPv6地址 (NS NA报文)
  • DAD-----------------获得地址后,进行地址重复检测,确保地址不存在冲突 (NS NA报文)
  • 地址解析-----------请求目的网络地址对应的数据链路层地址,类似IPv4的ARP (NS NA报文)
  • 邻居状态跟踪-----通过NDP发现链路上的邻居并跟踪邻居状态 (NS NA报文)
  • 前缀重编址--------路由器对所通告的地址前缀进行灵活设置实现网络重编址
  • 路由重定向--------告知其他设备,到达目标网络的更优下一跳

IPv6的地址解析:

地址解析过程中使用了两种ICMPv6报文:邻居请求报文NS(Neighbor Solicitation)和邻居通告报文NA(Neighbor Advertisement)。

NS报文:Type字段值为135,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP请求报文。
NA报文:Type字段值为136,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP应答报文。

流程解析:

① R1要去R2ping包,但是不知道对方地址(即R1想要知道R2的MAC地址),所以R1会发送NS邻居请求报文(源为R1的IPv6地址),目的地址是(R2的被请求节点组播地址,以FF02::1:FF开头),同时需要指出的是在NS报文的Options字段中还携带了一个R1的MAC地址.

NS:

② 当R2收到了NS报文后,就会回应NA报文,其中源地址为R2的IPv6地址,目的地址是R1的IPv6地址(使用NS报文中的R1的MAC地址进行单播),R2的MAC地址被放在Options字段中,这样就完成了一个地址解析的过程

NA:

参考:https://www.pudn.com/news/6275d7fe9221806f9db9c56c.html#1.1%E3%80%81NDP%E7%AE%80%E5%8D%95%E8%AF%B4%E6%98%8E%EF%BC%9A

以上是关于IPv6邻居发现协议--NDP详解的主要内容,如果未能解决你的问题,请参考以下文章

IPv6之NDP(2)

「太阁干货」IPV6没有ARP 拯救你三层地址到二层地址映射的尴尬

IPv6基础协议介绍

详解IPv6邻居发现协议

Linux Kernel TCP/IP Stack — L3 Layer — 邻居发现子系统

Linux Kernel TCP/IP Stack — L3 Layer — 邻居发现子系统