IPv6的通信 & 子网划分

在IPv4网络中,要使一台主机能够与网络上的其他主机进行通信,该主机需要获取一个经由DHCP分配或手动配置获得的IP地址。一旦主机拥有有效的IP地址,它就可以与同一子网上的任何主机进行通信。

为了在网络层(第3层)进行通信,主机还必须知道其他主机的IP地址。在链路层(第2层)上的通信是通过硬件嵌入的MAC地址建立的。为了知道已知IP地址的主机的MAC地址,主机会发送ARP广播请求,目标主机会作出回应并提供其MAC地址。

而在IPv6网络中,广播机制已经不再存在。启用IPv6的主机不必从DHCP获取IP地址或手动配置,它可以自动配置自己的IPv6地址。

ARP协议已经被ICMPv6邻居发现协议所取代。

邻居发现协议

IPv6网络中的主机可以使用唯一的链路本地地址来自动配置自己的IPv6地址。一旦主机获得IPv6地址,它会加入多个多播组,所有与该段相关的通信都将在这些多播地址上发生。

主机通过IPv6中的一系列状态来实现这一自动配置过程:

  • 邻居请求:在手动配置、通过DHCP服务器分配或自动配置后,主机向自己所有IPv6地址的FF02::1/16多播地址发送邻居请求消息,以便了解是否有其他主机正在使用相同的地址。
  • DAD(重复地址检测):当主机没有收到来自同一段上有关邻居请求消息的响应时,它会假设在该段上没有重复的地址。
  • 邻居通告:在将地址分配给其接口并启动运行后,主机再次发送邻居通告消息,通知该段上的所有其他主机,它已经分配了这些IPv6地址给自己的接口。

一旦主机完成其IPv6地址的配置,它会执行以下操作:

  • 路由器请求:主机会在其段上发送路由器请求组播数据包(FF02::2/16),以了解该段上是否存在任何路由器。这有助于主机确定路由器并配置它作为默认网关。如果默认网关路由器不可用,主机可以切换到新的路由器并将其设为新的默认网关。
  • 路由器通告:当路由器收到路由器请求消息时,它会回应主机,通知主机它在该链路上的存在。
  • 重定向:在某些情况下,路由器可能会接收到路由器请求,但它知道自己并不是主机的最佳网关。在这种情况下,路由器会发送一个重定向消息,告诉主机有一个更好的“下一跳”路由器可用。下一跳是主机将其数据发送给不在同一段上的主机时将数据发送到的位置。

子网划分

在IPv4中,IP地址的分配是基于地址类别的。不同的地址类别明确定义了用于网络前缀和用于主机的位数。要在IPv4中进行子网划分,通常使用默认的类别网络掩码,这允许我们借用主机位来创建子网。

然而,这种做法导致了多个子网,但每个子网中可用的主机数量相对较少。换句话说,当我们借用主机位来创建子网时,我们会牺牲一些主机地址。

而在IPv6中,IP地址由128位组成,其中包括用于子网划分的位。地址的后半部分(低64位)始终用于主机部分。因此,如果我们对IPv6网络进行子网划分,就不会有这种牺牲。IPv6地址的子网划分是更加灵活的,不会对可用的主机地址数量产生影响。

img

图示中展示了IPv6的子网划分示意图,其中16位子网位相当于IPv4的B类网络。使用这些子网位,一个组织可以创建多达65535个子网,每个子网可以容纳264个主机。这远远超过了IPv4的灵活性。

因此,IPv6的路由前缀通常为/64,主机部分占64位。虽然可以通过借用主机位来进一步划分子网,但是建议始终为主机地址保留64位,因为IPv6的自动配置需要64位。

IPv6的子网划分与IPv4中可变长度子网掩码的概念相似。通常,一个组织可以获得一个/48的前缀,这允许它创建多达65535个子网前缀,每个子网前缀可以容纳264个主机。这种灵活性允许将一个/64前缀分配给只有两个主机(或启用IPv6的设备)的点对点连接,而不浪费大量地址空间。

成功