在前面的章节《IPV6技术 | IPV6的霸气,从“头”开始!》中介绍到了 IPV6 的特有功能,如自动配置,无广播功能等。本章节将对这些 IPV6 的特性的工作原理进行介绍。

 

本节要介绍的几个 IPV6 特性都跟 IPV6 邻居发现协议有关,称为 NDP 协议,它可以解决如下问题,如下图:

 

 

如图示,解决 ARP,自动配置,重复地址检测等问题。

 

如何替代 ARP 协议?

 

前面章节介绍到 IPV6 无广播功能,只有单播,组播和任意播,因 IPV6 的此特殊性,直接影响了二层所支持的协议,在 IPV4 网络中有广播的概念,而 IPV6 网络二层则不存在广播了。但是 IPV6 工作在以太网时,在数据通信过程中仍然需要知晓目标主机的二层 MAC 地址,但 IPV6 网络又不存在广播功能, 因此 ARP 协议在 IPV6 网络是不能工作的,也即是 IPV6 无 ARP 功能。那发送方如何获取接收方的 MAC 地址?这似乎是一个很重要的问题。

 

IPV6 NDP 协议替代 ARP 功能

 

IPV6 设备通过 NDP 协议,可以实现类似 ARP 协议的功能,如下图示意:

 

 

从图中描述中可看到,发送方 A 发送了一个 ICMP 报文,类型为 135,该数据的三层源地址为 A 的 IPV6 地址,目标三层 IPV6 地址为一个请求节点组播地址。

 

我们在上一节中有介绍到关于请求节点地址的特点,它是一个由 FF02开头的地址,地址一般为 FF02::1:FFXX:XXXX,其中 X 位是 IPV6 地址的后 24 位。图中所示的目标地址则是FF02::1:FF(B 主机的后 24 位),通过构造这样的地址来将 ICMP 类型为 135 的报文发送给接收方 B。

 

可能你会有疑问,那我怎么知道 B 主机 IPV6 地址的后 24 位?请注意,你要访问一个目标,不可能出现目标地址不知道的情况的,你在知晓目标的 IP 地址后才会有相应的访问。因此,ICMP 报文的目标 IP 地址就是 FF02::1:FF(B 主机的后 24位)。

 

那这个报文的二层 MAC 地址又分别是什么呢?源 MAC 地址是 A 的地址,目标 MAC 地址是一个 ICMPv6 的组播地址 33:FF:FF:00:02,要注意的是,不同厂商的产品,这个二层目标 MAC 地址可能不一样。最后接收方收到这样的请求报文后则会把自己的 MAC 地址回复给发送方。这样,发送方就获得了接收方的实际 MAC 地址了。

 

ICMPv6 报文解决自动化配置

 

在没有设置 DHCP 功能的前提下可为 PC 或客户机自动配置 IP 地址这个功能算是 IPV6 地址的特有功能了。如下示意图描述了 IPV6 地址的无状态配置过程:

 

 

首先,自动配置 IP 地址需要有路由器的前提下 PC 才可能自动配置,因此路由器才是关键。如上图所示,路由器会通告 RA 报文,当 PC 收到 RA 报文后则开始了自动配置。在 RA 报文中,包含了路由器设置的地址前缀,自动配置标记等信息,当 PC 收到 RA 包时查看报文中的自动配置信息后再按前缀进行有规则地自配置 IP。RA 报文是一个类型为 134 的报文,该报文的源 IP 地址为路由器的对应接口的 Link-Local 地址,目的地址为所有节点的组播地址,地址是 FF02::1。

 

关于 RA 报文,路由器每 200 秒发送一个,这个时间同样的不同厂商的产品可能时间间隔不太一样,但不管如何,这个报文通告给了 PC,PC 必须要接收到 RA 报文才能开始自动配置 IP。若按 200 秒来看,此时路由器刚发送完 RA 报文,此时 PC 才刚上线,错过了这个 RA 报文,那这样 PC 就要等待下一个 RA 报文,那一等就是 200 秒,这样长的时间我想并不是每个人都这么有耐心的,那怎么解决这个问题呢?RS 报文可以解决这个问题。

 

RS 报文解决 PC 错过 RA 报文的尴尬

 

 

由如上示意图描述可知,RS 报文由 PC 发送,当 PC 连接到网络时,PC 设置为自动获得 IP 则会发送 RS 报文,该报文为 ICMP 类型值 133,源地址为 PC 的 Link-Local 地址,目标地址为所有路由器的节点组播地址,地址为FF02::2。当路由器接收到 RS 报文后立即向 PC 发送 RA 报文,以此让 PC 马上自动配置一个 IPV6 地址。

 

解决复制地址检测功能

 

在 IPV4 网络中使用免费 ARP 来检测网络中 IP 地址是否冲突,在 IPV6 网络中则使用 ICMP 类型为 135 的报文来检测 IP 地址冲突,如下图:

 

 

如图所示,该报文源地址为全 0 的特殊地址,目标地址为源主机的请求节点组播地址,即如图示目标地址为 A 的节点组播地址,这样的报文发送到网络中,如果没有主机回应则代表网络中没有 IP 冲突,若有主机回应则代表了网络中有其他主机配置了与源主机相同的 IPV6 地址。

 

最后总结一下,IPV6 中使用 ICMPv6 报文来解决 ARP 等问题,其中类型值为 135、136 的报文用来取代 ARP功能及检测重复地址,使用 133、134 类型的报文来解决自动配置 IP 地址。

 

——END——

报班咨询:

班主任微信:

qiuzhiquanquan 或 qqls000,加入微信群

班主任QQ:

1724698994 或 1752856301,加入加入QQ群(240920680

 

加入学习:

拼客学院公号:

微信搜索pinginglab

拼客学院网校:

https://www.pinginglab.net

拼客学院APP:

https://www.pinginglab.net/mobile/

微信小程序:

https://www.pinginglab.net/page/weixin

 

技术交流群:

拼客学院技术交流群:240920680

拼客学院网络安全交流群:482618569

拼客学院Linux云计算交流群:156959645

拼客学院Python人工智能交流群:117907362