2.7.2IPv6协议

2.7.2IPv6协议

1.IPv6概述

IPv6又称“互联网通信协议第六版”,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。

由于IPv4最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备接入互联网的障碍。

2.IPv6的表示方法

IPv6的地址长度为128位,是IPv4地址长度的4倍,于是IPv4点分十进制格式不再适用,采用十六进制表示。IPv6有3种表示方法。

(1)冒分十六进制表示法。格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16位,以十六进制表示,例如:

ABCD:EF01:2345:6789:ABCD:EF01:2345:6789

在这种表示法中,每个X的前导0是可以省略的,例如:

2001:0DB8:0000:0023:0008:0800:200C:417A→2001:DB8:0:23:8:800:200C:417A。

(2)0位压缩表示法。在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中“::”只能出现一次,例如:

FF01:0:0:0:0:0:0:1101→FF01::1101,

0:0:0:0:0:0:0:1→::1,

0:0:0:0:0:0:0:0→::

(3)内嵌IPv4地址表示法。为了实现IPv4与IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96位采用冒分十六进制表示,而最后32位地址则使用IPv4的点分十进制表示,例如“::192.168.0.1”与“::FFFF:192.168.0.1”就是两个典型的例子。注意在前96位中,压缩0位的方法依旧适用。

3.IPv6的特点

与IPv4相比,IPv6具有以下几个优势:

(1)IPv6具有更大的地址空间。IPv4中规定IP地址长度为32位,最大地址个数为232位;而IPv6中IP地址的长度为128位,即最大地址个数为2128位。与32位地址空间相比,其地址空间增加了2128~232个。

(2)IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。

(3)IPv6增加了增强的组播(Multicast)支持以及对流的控制(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(Quality of Service,QOS)控制提供了良好的网络平台。

(4)IPv6加入了对自动配置(Auto Configuration)的支持,这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。

(5)IPv6具有更高的安全性。在IPv6网络中,用户可以对网络层的数据进行加密并对IP报文进行校验。在IPv6中的加密与鉴别选项提供了分组的保密性与完整性,极大地增强了网络的安全性。

(6)允许扩充。如果新的技术或应用需要时,IPv6允许协议进行扩充。

(7)更好的头部格式。IPv6使用新的头部格式,其选项与基本头部分开,如果需要,可将选项插入到基本头部与上层数据之间。这就简化和加速了路由选择过程,因为大多数的选项不需要由路由选择。

(8)新的选项。IPv6有一些新的选项来实现附加的功能。

4.IPv6包结构

IPv6数据包结构的一般形式如图2.11所示。

图2.11 IPv6数据包结构的一般形式

IPv6首部的固定部分被简称为“IPv6首部”,其大小是40字节,而IPv4首部中的必要部分为20字节。IPv6已经定义了以下扩展首部:

(1)逐跳选项首部(Hop-by-Hop Options Header)。定义需要逐跳处理的特殊选项。

(2)路由首部(Routing Header)。提供扩展路由,类似于IPv4的源路由。

(3)片段首部(Fragment Header)。包含分片和重组信息。

(4)认证首部(Authentication Header)。提供数据完整性和认证。

(5)封装安全负载首部(Encapsulation Security Payload Header)。提供秘密性。

(6)目标选项首部(Destination Options Header)。包含要在目标节点检查的可选信息。

IPv6标准建议,当用到多个扩展首部时,IPv6首部要按以下顺序出现:

(1)IPv6首部。必要,必须最先出现。

(2)逐跳选项首部。此首部中包含的选项要对IPv6目标地址字段中第一个出现的目标以及路由首部列出的后续目标加以处理。

(3)路由首部。

(4)片段首部。

(5)认证首部。

(6)封装安全负载首部。

(7)目标选项首部。所包含的选项仅对数据包的最后目标加以处理。

IPv6首部长度固定为40字节,包含9个字段,如图2.12所示。

图2.12 IPv6首部

(1)版本(Version,4位)。Internet协议版本号,值为6。

(2)DS/ECN(8位)。在引入区分服务之前,此字段称为业务流类(Traffic Class)字段,发送方和转发路由器可以使用该字段来标识IPv6数据包的类别或优先级。业务流类的前6位目前称为区分服务(DS)字段,余下的2位保留为显式拥塞通知(Explicit Congestion Notification,ECN)字段。

(3)流标签(Flow Label,20位)。可能由一个主机用于对一些数据包加标签,数据包经网络中的路由器请求要做特殊处理。

(4)负载长度(Payload Length,16位)。在首部之后,IPv6数据包中余下部分的长度,单位为字节。即所有扩展首部的总长度再加上传输层的长度。

(5)下一首部(Next Header,8位)。标识IPv6首部之后的下一首部的类型,可能是个IPv6扩展首部,也可能是一个上层首部,如TCP或者UDP。

(6)跳转限制(Hop Limit,8位)。此数据包获准的剩余跳数。源点将跳转限制设置为某个所需的最大值,经过各个转发该数据包的节点时要将跳转限制值减1。如果跳转限制值减至0,则丢掉相应的数据包。相应于IPv4中生存时间字段所做的处理,对此处的处理有所简化。普遍认为,IPv4中有关时间间隔所做的工作对于协议并没有任何意义。实际上,IPv4路由器通常将生存时间字段看作是一个跳转限制字段。

(7)源地址(Source Address,128位)。数据包发出者的地址。

(8)目标地址(Destination Address,128位)。数据包指定接收者的地址。

尽管IPv6首部比IPv4首部中的必要部分要长(前者40字节,后者20字节),但是所包含的字段却更少(前者9个字段,后者则有12个字段)。因此,对于IPv6首部,路由器所做的处理工作较少。

与IPv4比较,IPv6首部取消了报头校验和分片字段。丢弃报头校验和是为了提高路由效率,虽然报头仍有可能出现错误,但传输层的检验功能已能够满足要求。

IPv6允许对包进行分片,分片信息保存在报头的扩展部分。IPv6包只能由源节点进行分片、在目标节点进行重组,路由器不参与对包的分片与重组工作。这种分片模式可降低传输中的处理开销,如果网络帧的最大传输单元足够大,大多数包不需要分片。

如果需要分片,源节点就会确定每条链路的MTU。一种办法是向目标节点发送测试包,如果测试包对某条链路来说太大,链路就返还一个ICMP信息给源节点,源节点就相应减小包的大小。

实现分片及其他选项功能的扩展机制,是IPv6重新设计的一个重要特征,它取代了IPv4的Option字段,增强了IPv4包的安全功能,并且丰富了源路由选择。

5.IPv6的部署

与IPv4相比,IPv6具有许多优点,更能适应因特网的发展。但目前因特网使用的IPv4已经成功运作了二十多年,拥有大部分的网络用户,这样稳固的基础使IPv4不可能轻易地过渡到IPv6。由于IPv6与IPv4并不兼容,大部分的原有程序系统都要重新设计,使过渡更加困难。为了保证IPv4用户的正常业务不受影响,又能平稳地过渡到IPv6,必须进行周详的计划,部署过渡战略。

为满足不同网络的需要,IETF的NGtrans工作组已经设计了各种协助IPv4网络与IPv6网络通信的方法,包括使用嵌有IPv4地址的IPv6地址、混合协议机制、隧道技术和网络地址转换技术等。

(1)NAT技术。IPv4网络中,NAT主要用于在私有网络与公共网络之间实现地址转换,以解决IPv4地址不足的问题。Pv6的NAT服务器可以实现IPv6地址与IPv4地址的转换,使只安装IPv6的主机可以和只安装IPv4的主机相互通信。

(2)使用嵌有IPv4地址的IPv6地址。使用嵌有IPv4地址的IPv6地址,包括兼容地址和映射地址。IPv4兼容地址的格式是“::A.B.C.D”(A.B.C.D为IPv4格式的地址);IPv4映射地址的格式是“::FFFF:A.B.C.D”。

(3)混合协议机制。混合协议机制可让系统同时使用IPv6和IPv4协议,并且实现自动选择。主机既能与使用IPv6的主机进行通信,也能与使用IPv4的主机进行通信,而当通信主机同时支持两种协议时,则选择IPv6。这种技术需要对网络路由器进行升级,并为每个节点都分配一个IPv4地址和一个IPv6地址。

(4)IPv4和IPv6双协议栈。双协议栈(Dual Stack)采用该技术的节点上同时运行IPv4和IPv6两套协议栈。这是使IPv6节点保持与纯IPv4节点兼容最直接的方式,针对的对象是通信端节点(包括主机、路由器)。这种方式对IPv4和IPv6提供了完全的兼容,但是对于IP地址耗尽的问题却没有任何帮助。由于需要双路由基础设施,这种方式增加了网络的复杂度。

(5)隧道技术。隧道技术是一种通过使用互联网络的基础设施在网络之间传递数据的方式,是在目前广泛运用的IPv4网络中建立虚拟专线,实现两个IPv6网络之间的通信技术。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其他协议的数据帧或包重新封装,然后通过隧道发送。新的帧头提供路由信息,以便通过互联网传递被封装的负载数据。