ipv6地址有3种(一文读懂IPv6地址的格式以及分类)

IPv4协议是目前广泛部署的因特网协议,在因特网发展初期,IPv4以其协议简单、易于实现、互操作性好的优势而得到快速发展。但是众所周知目前使用的IPv4地址长度为32位,2的32次方大约43亿个IP地址,已无法满足互联网发展的需要,于是需要更高版本的IP协议更多数量的IP地址。IPV6地址扩充为128位,能产生2的128次方个IP地址,其资源几乎是无穷的,号称可以为每一粒沙子分配一个地址。那么这海量的IPv6地址空间是如何进行运用的呢,本篇先详细介绍一下IPv6地址的格式以及它的分类。

ipv6地址有3种(一文读懂IPv6地址的格式以及分类)(1)

IPv6地址表示方法

IPv6地址由网络前缀和接口标识两个部分组成。网络前缀有n位,相当于IPv4地址中的网络ID;接口标识有(128-n)比特,相当于IPv4地址中的主机ID。

ipv6地址有3种(一文读懂IPv6地址的格式以及分类)(2)

IPv6地址长度为128位,表示为"X:X:X:X:X:X:X:X", 每个X代表4个十六进制值字符,以冒号分隔,一共被分为8组。为了书写方便,IPV6地址支持地址压缩格式,压缩规则如下:

  1. 每段的前面的0可以省略。比如:FE80:0210:1100:0006:0030:A4FF:000C:0097/64压缩后的书写格式为FE80:210:1100:6:30:A4FF:C:97/64。
  2. 地址中一个或多个全0字段0000可以用双冒号“::”来代替。比如:FF02:0000:0000:0000:0000:0000:0000:0001/64压缩后的书写格式为FF02::1/64。

注意:在一个IPv6地址中只能使用一次双冒号“::”,否则当计算机将压缩后的地址恢复成128位时,无法确定每个“::”代表0的个数。

IPv6地址分类

IPv6地址分为单播地址、任播地址、组播地址三种类型。和IPv4相比,取消了广播地址类型,同时增加了任播地址类型。

1. IPv6单播地址(Unicast)

IPv6定义了多种单播地址,目前常用的单播地址有:

(1)全球单播地址:全球单播地址是带有全球单播前缀的IPv6地址,其作用类似于IPv4中的公网地址。其格式如下图所示:

ipv6地址有3种(一文读懂IPv6地址的格式以及分类)(3)

全球单播地址由全球路由前缀(Global routing prefix)、 子网ID(Subnet ID)和接口标识(Interface ID)组成:

  • 全球路由前缀:由提供商指定给一个组织机构,通常全球路由前缀至少为48位。目前已经分配的全球路由前缀的前3bit均为001。
  • 子网ID:组织机构可以用子网ID来构建本地网络(Site)。子网ID通常最多分配到第64位。子网ID和IPv4中的子网号作用相似。
  • 接口标识:用来标识一个设备(Host),与IPv4中的主机ID作用相似。

举例:IPv6地址2001:1111:2222:ABCD::1/64,全球路由前缀为2001:1111:2222,子网ID为ABCD,接口ID为::1,网络前缀为2001:1111:2222:ABCD

(2)链路本地地址:链路本地地址是IPv6中的应用范围受限制的地址类型, 只能在连接到同一本地链路的节点之间使用,它相当于IPv4里面的169.254.0.0/16地址。它使用了特定的本地链路前缀FE80::/10(最高10位值为1111111010),默认情况下从11bit到64bit设置为0,而剩下的64bit,使用接口的MAC地址扩展为64位进行填充标识。链路本地地址的格式如下图所示:

ipv6地址有3种(一文读懂IPv6地址的格式以及分类)(4)

接口MAC地址原本是48位,如何将48位的MAC地址扩展为64位进行填充呢?

IPv6基于EUI-64地址接口标识符的配置如下:

MAC地址的前24位代表厂商ID,后24位代表制造商分配的唯一扩展标识。MAC地址的第七高位叫G/L位(Global/Local),值为0时表示MAC地址全局唯一,值为1时表示MAC地址本地唯一。在MAC地址向EUI-64格式的转换过程中,MAC地址的前24位和后24位之间插入了16比特的FFFE,并将G/L位的值从0变成了1,这样就生成了一个64比特的接口ID,且接口ID的值全局唯一。这样网络前缀和接口ID一起组成接口地址。

ipv6地址有3种(一文读懂IPv6地址的格式以及分类)(5)

举例:路由器某接口启动了IPV6协议栈之后,只配置全球单播地址前缀,该接口的全球单播地址和链路本地地址可以根据EUI-64自动生成,假设该接口MAC地址为:707b-e83e-5007,全球单播前缀配置2021:: /64,通过EUI-64生成的全球单播地址为:2021::727b:e8ff:fe3e:5007,链路本地地址为:FE80::727b:e8ff:fe3e:5007 。

(3)站点本地地址:站点本地地址是另一种应用范围受限的地址,它仅能在一个站点内使用。类似IPv4中的私网地址,IPv6公网地址虽多,但是部分企业或机构不想让自己部分内网设备被外网访问(该设备也无需访问外网),此时可以使用站点本地地址组建自己的内网,站点本地地址只能用于内网,不能在公网被路由。站点本地地址是由固定10bit地址前缀FEC0::/10、54bit子网标识以及64bit的扩展MAC地址组成。其格式如下图所示:

ipv6地址有3种(一文读懂IPv6地址的格式以及分类)(6)

(4)未指定地址:IPv6中的未指定地址即 0:0:0:0:0:0:0:0/128 或者::/128。该地址可以表示某个接口或者节点还没有IP地址,可以作为某些报文的源IP地址。源IP地址是::的报文不会被路由设备转发。

(5)环回地址:IPv6中的环回地址即 0:0:0:0:0:0:0:1/128 或者::1/128。环回与IPv4中的127.0.0.1作用相同,主要用于设备给自己发送报文。该地址通常用来作为一个虚接口的地址(如Loopback接口)。实际发送的数据包中不能使用环回地址作为源IP地址或者目的IP地址。

2. IPv6组播地址(Multicast)

IPv6的组播与IPv4相同,用来标识一组接口,发往组播地址的报文被组播地址标识的所有接口接收。其格式如下图所示:

ipv6地址有3种(一文读懂IPv6地址的格式以及分类)(7)

一个IPv6组播地址由前缀,标志(Flag)字段、范围(Scope)字段以及组播组ID(Global ID)4个部分组成:

  • 前缀:IPv6组播地址的前缀是1111 1111,即FF00::/8。
  • 标志字段:长度4bit,目前只使用了最后一个比特(前三位必须置0),当该位值为0时,表示当前的组播地址是由IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)所分配的一个永久分配地址;当该值为1时,表示当前的组播地址是一个临时组播地址(非永久分配地址)。
  • 范围字段:长度4bit,用来限制组播数据流在网络中发送的范围。
  • 组播组ID:长度112bit,用以标识组播组,比如是全部节点,全部的路由器等等。目前,建议仅使用该112位的最低32位作为组播组ID,将剩余的80位都置0。

举例:

FF01::1 ,表示当前节点所有接口地址;

FF02::1,表示当前链路所有节点的接口地址;

FF02::2,表示当前链路所有路由器的接口地址;

FF02::5,表示当前链路所有运行OSPFv3协议路由器的接口地址;

FF02::9,表示当前链路所有运行RIPng协议路由器的接口地址;

FF05::1,表示当前站点内所有节点的接口地址。

3. IPv6任播地址(Anycast)

单播是一对一,组播是一对多,广播是一对全体,那么任意播就是一对最近的通信方式。任播地址设计用来在给多个主机或者节点提供相同服务时提供冗余功能和负载分担功能。目前,任播地址的使用通过共享单播地址方式来完成。将一个单播地址分配给多个节点或者主机,这样在网络中如果存在多条该地址路由,当发送者发送以任播地址为目的IP的数据报文时,发送者无法控制哪台设备能够收到,这取决于整个网络中路由协议计算的结果。

ipv6地址有3种(一文读懂IPv6地址的格式以及分类)(8)

任播地址是IPv6特有的地址类型,用来标识一组网络接口。IPv6任播地址仅可以被分配给路由设备,不能应用于主机。任播地址不能作为IPv6报文的源地址,仅用作目标地址,目的为任播地址的报文会被送到最近的一个被标识接口,这里所谓的“最近”是通过路由协议的开销来判断的。另外任播地址与单播地址使用相同的地址空间,因此任播与单播的表示无任何区别,配置时须明确表明是任播地址,以此区别单播和任播。例如在华为路由器接口配置指明IPv6任播地址命令为:ipv6 address 2002:12::1 64 anycast(最后加上anycast参数表示这是一个任播地址)。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页