IPv6基础知识

1、IPv6地址的表示方法

IPv6地址总长度为128 bit,通常分为8组,每组为4个十六进制数的形式,每组16进制数间用冒号分隔,这是IPv6地址的首选格式。例如:FC00:0000:130F:0000:0000:09C0:876A:130B。

为了书写方便,IPv6还提供了压缩格式,以上述IPv6地址为例,具体压缩规则如下:

  • 每组中的前导“0”都可以省略,所以上述地址可写为FC00:0:130F:0:0:9C0:876A:130B。
  • 地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替,所以上述地址又可以进一步简写为FC00:0:130F::9C0:876A:130B。
  • 在一个IPv6地址中只能使用一次双冒号“::”,否则当计算机将压缩后的地址恢复成128 bit时,无法确定每个“::”代表0的个数。

2、IPv6地址的结构

一个IPv6地址可以分为以下两部分。

  • 网络前缀:n bit,相当于IPv4地址中的网络ID。
  • 接口标识:(128 − n)bit,相当于IPv4地址中的主机ID。

对于IPv6单播地址来说,如果地址的前3 bit不是000,则接口标识必须为64 bit;如果地址的前3 bit是000,则没有此限制。接口标识可通过3种方法生成:手工配置系统通过软件自动生成遵循IEEE EUI-64规范自动生成。其中,遵循EUI-64规范自动生成最为常用。

IPv6基础知识

IEEE EUI-64规范是将接口的MAC地址转换为IPv6接口标识的过程。如图所示,MAC地址的前24 bit(用c表示的部分)为公司标识,后24 bit(用m表示的部分)为扩展标识符。从高位开始,如果第7位是0,表示MAC地址是本地唯一的。

转换的第一步是将FFFE(转换成二进制)插入MAC地址的公司标识和扩展标识符之间。第二步从MAC地址的高位开始,将第7位的0改为1,表示此接口标识是全球唯一的,这是因为需要生成全球唯一的IPv6地址。如MAC地址000E-0C82-C4D4经过转换后为020E:0CFF:FE82:C4D4。最终,我们得到48 + 16 = 64 bit的接口标识,在前面加上64 bit的网络前缀,即可得到完整的全球唯一的IPv6地址。

3、IPv6地址分类

IPv6地址大致可分为单播地址、组播地址和任播地址3种类型。与IPv4相比,IPv6取消了广播地址类型,以更丰富的组播地址代替,同时增加了任播地址类型。

1)单播地址

IPv6定义了多种单播地址,目前常用的单播地址有未指定地址、环回地址、全球单播地址、链路本地地址和唯一本地地址。

  • 未指定地址:IPv6中的未指定地址即0:0:0:0:0:0:0:0/128或::/128。该地址可以表示某个接口或节点还没有IP地址,可以作为某些报文的源IP地址(例如在NS报文的重复地址检测中会出现)。源IP地址是::的报文不会被路由设备转发。
  • 环回地址:IPv6中的环回地址即0:0:0:0:0:0:0:1/128或::1/128。环回地址与IPv4中的127.0.0.1作用相同,主要用于设备向自己发送报文。该地址通常用来作为一个虚拟接口的地址(如Loopback接口)。实际发送的报文中不能使用环回地址作为源IP地址或者目的IP地址。
  • 全球单播地址:全球单播地址是带有全球单播前缀的IPv6地址,其作用类似于IPv4中的公网地址。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量。

全球单播地址由Global Routing Prefix(全球路由前缀)Subnet ID(子网ID)Interface ID(接口标识)组成。

IPv6基础知识

  • 链路本地地址:链路本地地址是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。它使用了特定的本地链路前缀FE80::/10(最高10 bit的值为1111111010),同时将接口标识添加在后面作为地址的低64bit。
  • 唯一本地地址:唯一本地地址也是一种应用范围受限的地址,它的前身是SLA(Site-Local Address,本地站点地址)。由于本地站点地址存在诸多问题,目前已被废弃。

2)组播地址

IPv6的组播与IPv4相同,用来标识一组接口,一般这些接口属于不同的节点。一个节点可能属于多个组播组。发往组播地址的报文被组播地址标识的所有接口接收。例如,组播地址FF02::1表示链路本地范围的所有节点,组播地址FF02::2表示链路本地范围的所有路由器。

IPv6组播地址的Network Prefix(网络前缀)、Flag(标志)、Scope(范围)以及Group ID(组播组ID)。

  • 网络前缀:IPv6组播地址的前缀是FF00::/8。
  • 标志:长度为4 bit,目前只使用了最后一个比特(前面3个比特必须设置为0),当该比特值为0时,表示当前的组播地址是由IANA所分配的一个永久分配地址;当该比特值为1时,表示当前的组播地址是一个临时组播地址(非永久分配地址)。
  • 范围:长度为4 bit,用来限制组播数据流在网络中发送的范围,该字段取值和含义的对应关系如图A-5所示。
  • 组播组ID:长度为112 bit,用以标识组播组。目前,RFC 2373并没有将所有的112 bit都定义成组标识,而是建议仅使用该112 bit的最低32 bit作为组播组ID,将剩余的80 bit都设置为0。这样每个组播组ID都映射到一个唯一的以太网组播MAC地址。

2)任播地址

任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的报文将被发送给子网中路由意义上最近的一个网络接口。任播地址用于在为多个主机或者节点提供相同服务时提供冗余功能和负载分担功能。目前通过共享单播地址的方式来使用任播地址。将一个单播地址分配给多个节点或者主机,这样在网络中如果存在多条该地址路由,当发送者发送以任播地址为目的IP的数据报文时,发送者无法控制哪台设备能够收到该报文,这取决于整个网络中路由协议计算的结果。这种方式适用于一些无状态的应用,例如DNS(Domain Name System,域名系统)等。

发表评论

相关文章