1.IPv6的数据报格式
IPv6数据报格式如图4-1所示。
图4-1 IPv6的数据报格式
(1)扩展的地址空间
地址长度从32bit扩展到128bit,可保证IP资源不会用完。除了单播和多播地址外,引入了任意播地址。所谓任意播是指可将一个具有任意播地址的数据报发给一组主机中的任何一个(如可把一个HTTP GET请求报文发给一组存有相应文档的镜像网站中的任一主机)。
IPv6地址扩展到128bit,使地址管理变得复杂,因此对于IPv6的实施而言,需要一个合理的地址规划制度,这样才会提高地址的寻址效率,减小路由表中的路由条目,从而提高IP网络的性能。虽然IPv6的地址不像IPv4那样分类,但其地址空间仍基于前缀划分,具体划分通过“IPv6头部格式”来表示。通过分析,地址按照其使用特点大致可分为三种:
单播地址。聚合的单播地址对应于IPv4中的A、B、C三类主要地址,都以001为前缀,其余两部分地址留给其他地址协议编码使用,分别是以0000001和0000010为前缀。其中,0000 001的NSAP地址用于ISO协议;0000 010的IPX地址用于Novell网的网络层协议。
局部使用地址。局部使用地址的目的是使主机能构造出适用于它所连接的网络,而不必关心全局地址唯一性的问题。以1111 1110 10和1111 1110 11为前缀的地址就属于这类。
多播地址。多播地址就像IPv4中的D类地址一样,用于多点播送。通过11111111这样全1的前缀来区分。
除了这些已有明确分配的地址外,IPv6还有大量保留和未分配的地址空间。未分配地址留做未来新的需要使用,保留部分则用于IPv4到IPv6转换。保留地址以00000000全0为前缀。在IPv4映射到IPv6的过程中,先将IPv4的32bit地址前加上2B全1前缀,然后在前面加0直至扩展到128bit。
(2)一个流线型40B报头
由于一些IPv4字段被取消或成为选项,新构成40B固定长度的报头使数据报处理速度更快,新编码选项也使选项处理更为灵活。
(3)流标识与优先级
IPv6设有“流(flow)”概念。在RFC 1752和RFC 2460中的解释是,该字段“用来标识某些用户要求特殊对待的流,如那些非默认服务和实时服务。”如音频和视频传输可认为是“流”;一些互联网的传统应用,如文件传输和电子邮件,可能不属于“流”。另外,一些高优先级用户数据也可作为“流”来处理。此外,IPv6报头有一个8bit的传输类别(Traffic Class)字段(类似于IPv4中的TOS字段),可以为一个“流”中的某些数据报赋予优先级,或者给某些特殊的应用程序(如ICMP)赋以高于另外一些应用(如网络新闻)的优先级。
(4)IPv6的字段定义
Version:总为6。在IPv4到IPv6的过渡期内,路由器将通过检测该字段确定分组类型。
Traffic class:用来区分哪些分组能进行流量控制,哪些不能。值0~7表示在拥塞时可以慢下来的传输,值8~15用于恒速传送的实时通信,即使所有分组都丢失也要保持恒速。这些区别使路由器在发生拥塞时能更好地处理分组。在每个组内,低数字分组不如高数字分组重要。例如IPv6标准建议:新闻用1,FTP用4,而Telnet连接用6,因为一个新闻分组延迟几秒钟也没什么感觉,但延迟一个Telnet分组人们就可以察觉到了。
Flow Label:还只是试验性的,但它将用于使源端和目的端之间建立一条有特殊属性和需求的伪连接。如从某源主机的一个进程到某目的主机的一个进程的一个分组流,可能有很多严格的延迟需求,因为要保留带宽。这时可预先创建流并给出一个标识符。
当一个流标识字段出现非零分组时,所有路由器在其内部表中找出它所需的特殊需求类型。实际上,“流”进行两方面的尝试:数据报子网的灵活性和虚电路子网的保障。
Payload Length:说明在如图4-1所示的40B的报头之后有多少字节的数据。该名字由IP的总长(Total Length)字段改变而来,原因是其定义有点改变:40B的报头不再像从前一样作为长度的一部分。
Next Header:该字段很关键。报头能简化的原因是因为有附加(可选)扩充报头。这个字段说明,如后面还有扩充报头,它是(现有的)6种扩充报头中的哪一种。如该报头是最后一个IP报头,下一个报头字段说明了应将分组交给哪个传送协议控制(例如TCP、UDP)。
Hop Limit:该字段保证分组不会永存。实际上它正是IPv4中的生命期(Time to Live)字段。顾名思义,每经过一个站点递减一次。理论上,在IPv4中它是一个以秒计算的时间值,但没有路由器是这样做的,因此将名字改成站点限制更反映其实际用法。
Source Address和Destination Address:16B IP地址。
IPv6摒弃了包含在IPv4中的一些字段,从这个变化可看出互联网的进化轨迹与发展方向。
子段分化/子段重组(Fragmentation/Reassembly):IPv6不允许路由器再进行子段分化/子段重组,这些操作只能在发送端和接收端进行。这种简化无疑加速了网络转发的速度。
校验和(Checksum):因TCP和UDP都具备校验功能,IP再度校验显然是可省略的冗余。
选项(Option):Option字段不再是标准IP报头的组成部分。但如有必要,原来在Option中的内容可以放到“Next Header”字段所指向的地方。
2.IPv6的地址表示格式
IPv6地址在表示和书写时,用冒号将128bit分割成8个16bit的部分,每个部分包括4位的十六进制数字。例如,7856:4567:C071:0022:7758:AF08:0000:1026。
每个4位一组十六进制数,如其高位为0,则可省略。如将0124写成124;0008写成8;0000写成0。由此,0124:0000:0000:0000:0008:0528:200C:1026可缩写成:124:0:0:0:8:528:200C:1026。
为进一步简化,规定重叠冒号规则,即用重叠冒号置换地址中的连续16bit的0。例如,将上例中的连续3个0置换后,可表示成如下缩写形式。124::8:528:200C:1026。重叠冒号的规则在一个地址中只能使用一次。如地址0:0:0:BA98:7654:0:0:0可缩写成::BA98:7654:0:0:0或0:0:0:BA98:7654::,但不能记成::BA98:7654::。
3.IPV6的分组格式
IPv6扩展了IPv4,但IPv6头部格式更简单,因IPv6删除了不必要的功能。IPv6中数据分组的封装用头部表示,头部包括基本头部与扩展头部。与IPv4相比,其报文格式更简单,但分组基本头部长度从20字节增加到40字节。IPv6分组的头部格式如图4-2所示。(www.xing528.com)
图4-2 IPv6的分组头部格式
Version:4比特IP版本号字段。对于IPv6,该字段值为6。
Traffic Class:8bit通信类型字段。源结点或者向前路由器利用该字段确认和区分IPv6包的不同类型和不同特性。这与IPv4中的TOS服务类型字段和优先位的作用有点相似,都是为IP提供有差别的服务。
Flow Label:20bit的流标记。当某个源需要提供非默认类型的服务或者是实时服务时,它会要求对路由做特殊处理,将包序列贴上标记。不支持流标记功能的主机和路由器在发送数据包时会将该字段设置为0,传输数据包时不改变字段的值,接收包时则忽略该字段。
Payload Length:有效载荷长度。16bit的非符号整数,用于统计头部之后整个包的长度,包括扩展头部在内。
Next Header:下一个头部。8bit的选项,用来确认紧跟在IPv6头部后面的扩展头部的类型。该字段值与IPv4中Protocol协议字段的值一样。
Hop Limit:跳数限制。8bit无符号整数。每向前经过一个结点,该值就减l。如该值减到0,该数据包将被丢弃。
Source Address:源结点地址,128bit。
Destination Address:目的结点地址,128bit。
为便于比较,这里也给出IPv4的头部格式。如图4-3所示。
图4-3 IPv4的分组格式
Version:版本号。版本号为4。
IHL:头部长度字段Internet Header Length。32比特字说明头部长度。一个正确的头部最小值为5B。
Type of Service:服务类型。虽然8bit的TOS字段多年来有很多不同定义,但其基本功能是允许分组根据不同的应用需要来进行不同的处理。
Total Length:数据报总长度,包括头部和后面数据的长度。该字段16位,允许的最大长度为65535B。通常情况下,所有的结点都默认接收576B长度的数据报(无论是整个报文还是分段后的数据报),仅在发送结点确定了目的结点并准备接收更大报文时,才会发送大于576B的数据报。
Identification:16bit认证字段。由源结点填写,用于将被分割的数据段重组为完整报文。
Flags:3bit的控制标志字段。通过该字段可以了解到报文的拆分信息。
Fragment Offset:段偏移字段。13bit,指明数据报中段的位置。段偏移值以8B为一个单位,第一个段的偏移值为0。
Time to Live:生存期字段。8bit,用于捕捉在路由中滞留的数据报并将其丢弃。路由器每转发一次报文,TTL都会减l,直至为0。若TTL值减为0时还未到达目的地,该报文将被丢弃。
Protocol:协议字段。8bit,说明上一层使用的协议,是一个解多路复用的密钥。不同的协议被指定为不同的值,例如TCP协议值为6,UDP值为17。
Header Checksum:校验和字段。长16bit,判断头部是否出错。因为头部有些字段值会改变,例如TTL字段,所以头部每被处理一次,都将重新计算,进行再校验。
Source Address:源地址。
Destination Address:目的地址。
通过比较分析IPv6与IPv4头部结构,可以了解两者间的区别与联系。IPv6的Next Header字段代替了IPv4的Protocol字段。如IPv6需要选项,会被携带在IP头部后的一个或多个扩展头部中,这由Next Header字段决定。如没有扩展头部,Next Header字段是识别运行在IP以上的高层协议的解多路复用密钥。这一点IPv6和IPv4的Protocol字段作用相同。Hop Limit:字段类似于IPv4的TTL字段,重新命名是为了反映实际采用的方法。
总之,IPv6的一个突出特点是支持网络结点的自动配置,将大大减少网络管理工作量。其次,IPv6将IPSec集成到协议内部,使IPSec不单独存在,成为IPv6协议固有的部分,并贯穿于IPv6各个部分。与现行的IPV4相比,IPV6有以下优点:
●采用128位的地址结构,拥有更大地址空间。
●地址结构釆用基于前缀的全球唯一层次型,能保持较小路由表和高效主干网络路由。
●网络接口自动配置机制。
●数据类型的服务类型区分。
●路由过程中组播优先于广播。
●内置的认证和加密。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。