当前位置:文档之家› ipv6的协议结构

ipv6的协议结构

20第二章IPv6协议的结构

本章将阐述IPv6报头的结构并将其与IPv4报头相比较。此外还将讨论Extension(扩展)报头,这是IPv6所新加的内容。

在RFC 2460中定义了IPv6数据包的报头结构。该报头固定为40字节长。源和目的地址各占16字节(128位),因此,只有8字节是用于普通报头信息的。

普通报头结构在IPv6中,IPv4报头中的下面五个字段被去除了:●Header Length(报头长度)●Identification(标识)●Flags(标志)●Fragment Offset(段偏移量)●Header Checksum(报头校验和)

除去Header Length(报头长度)字段是因为对于固定长度的报头,它是不起作用的。在IPv4中,报头最短长度为20字节,但是如果添加一些选项,则会以4IPv6协议的结构21

字节长度递增,最长可达60字节。因此,对于IPv4来说,报头的总长度信息是很重要的。在IPv6中,选项由扩展报头定义(将在本章后面部分作介绍)。

Identification(标识)字段、Flags(标志)字段和Fragment Offset(段偏移量)字段处理IPv4报头中的数据包分段。如果要在只支持小数据包的网络中发送大数据包,就需要进行分段。在这种情况下,IPv4路由器把数据包分割成更小的片段,并转发多个数据包。目的主机收集数据包并进行重新组合。即便只有一个数据包丢失或出错,都需要重新进行传输,因此效率很低。在IPv6中,主机通过一个叫做路径MTU发现(Path MTU Discovery)的过程来了解路径最大传输单元(Maximum Transmission Unit,MTU)的大小。如果IPv6的发送主机想要对数据包进行分段,就需要使用扩展报头来实现。数据包传输路径上的IPv6路由器不像在IPv4中那样进行数据分段。因此,在IPv6中去除了Identification、Flags和Fragment Offset字段并将会按需插入一个扩展报头。扩展报头将在本章后面进行介绍。

注意:路径MTU发现将在第四章中论述。去除Header Checksum(报头校验和)字段是为了提高处理速度。如果路由器无需检验并更新校验和,则处理会变得更快。校验和的计算也是在介质访问层完成的,这样未检测到的错误和错误路由的数据包所引起的风险最小。传输层(UDP和TCP)中有一个校验和字段。IP是一种“尽力而为”的传输协议,保证数据完整性的责任属于其上层协议。

Type of Service(服务类型)字段由Traffic Class(流量类别)字段代替。IPv6处理参数的机制与IPv4不同。请参考第六章来了解更多的信息。Protocol Type(协议类型)和Time-to-Live(TTL,生存期)字段被重新命名,且稍稍做了些修改。IPv6报头中还添加了一个Flow Label(流标签)字段。

IPv6报头中的字段对IPv6报头中各个字段越熟悉,你对IPv6的工作方式越理解。第二章22

注意:要想了解IPv4报头中所有字段的详细描述,请参考Novell's Guide to TroubleshootingTCP/IP(John Wiley & Sons)一书,由Silvia Hagen和Stephanie Lewis编著。

图2-1是IPv6报头的概述。将在下面的段落中详细讨论各个字段。Version (4 位)6协议的版本号。

Traffic Class(1 字节)用于区分 IPv6 数据包的不同优先级。更多信息

请参考RFC 2474 。Flow Label(20 位)用于标记需要相同处理的数据包的次序,这样

可使路由器的效率更高。Payload Length(2 字节)

IPv6 报头后所装载的数据的长度。

Next Header(1 字节)包含着扩展报头的一个协议号或值。请参见

表2-1。Hop Limit(1 字节)跳数限制。每经过一个路由器就减一。

Source Address(16 字节)

Destination Address(16 字节)

图2-1:IPv6报头中的字段

图2-1说明,即使IPv6报头的总长度是默认的IPv4报头的两倍长,达到了40字节,但它实际上是被简化了的,因为报头的绝大部分被两个16字节的IPv6地址占据。这样,只剩8个字节可供其他报头信息使用。

Version(版本,4位)这是一个4位长的字段,其中包含了协议的版本。在IPv6中,该数目为6。不能使用版本号5,因为5早已被分配给一个实验性的流协议(ST2,RFC 1819)。

Traffic Class(流量类别,1字节)该字段代替了IPv4中的Type of Service字段,它有助于处理实时数据以及任何需要特别处理的数据。发送节点和转发路由器可以使用该字段来识别和分辨IPv6数据包的类别和优先级。IPv6协议的结构23

RFC 2474“Definition of the Differentiated Services Field (DS Field) in the IPv4and IPv6 Headers”(IPv4和IPv6报头中差分服务(DS)字段的定义)文档中解释了如何使用IPv6中的Traffic Class字段。RFC 2474使用术语DS来指代IPv4报头的Type of Service字段和IPv6报头中的Traffic Class字段。

Flow Label(流标签,20位)该字段区分需要相同处理的数据包,以此来促进实时性流量的处理。发送主机能够用一组选项标记数据包的顺序。路由器跟踪数据流并更有效地处理属于相同数据流的数据包,因为他们无须重新处理每个数据包的报头。数据流由流标签和源节点的地址惟一标识。不支持Flow Label字段功能的节点需要在转发数据包时不加改变地传递该字段,并在接收数据包时忽略该字段。属于同一数据流的所有数据包必须具有相同的源IP地址和目的IP地址。

注意:Flow Label字段的使用是实验性的,在本书写作时,IETF仍然在对此进行讨论。请参考第六章了解更多信息。

Payload Length(有效载荷长度,2字节)该字段指定了有效载荷,也就是在IP报头后携带的数据长度。IPv6中的计算与IPv4不同。IPv4中的Length字段包括IPv4报头的长度,而IPv6中的PayloadLength(有效载荷长度)字段仅包含IPv6报头后的数据。扩展报头被认为是有效载荷的一部分,因此被包括在计算之内。

由于Payload Length(有效载荷长度)字段只有2个字节,因此数据包的有效载荷最大为64KB。IPv6有一个Jumbogram Extension报头,如果有需要,它可以支持更大的数据包。只有当IPv6节点连接到MTU大于64KB的链路时,Jumbogram才起作用。RFC 2675中详细说明了Jumbogram。第二章24

Next Header(下一报头,1字节)在IPv4中,该字段为Protocol Type(协议类型)字段。在IPv6中则被重新命名,以反映出重新组织的IP数据包。如果下一个报头是UDP或TCP,该字段将和IPv4中包含的协议号相同,例如,TCP的协议号为6;UDP为17。但是,如果使用了IPv6扩展报头,该字段就包含了下一扩展报头的类型,它位于IP报头和TCP或UDP报头之间。表2-1列举了Next Header字段中可能的值:

表2-1:Next Header字段的值值说明0IPv4报头:保留未使用IPv6报头:下一报头为Hop-by-Hop选项报头1因特网控制消息协议(ICMPv4)—IPv4支持2因特网组管理协议(IGMPv4)—IPv4支持4IP中包含IP(封装)6TCP8外部网关协议(EGP)9IGP — 任何私有内部网关(Cisco用于IGRP)17UDP41IPv643路由报头44分段报头45网域间路由协议(IDRP)46资源预留协议(RSVP)50加密的安全有效载荷报头51认证报头58ICMPv659IPv6没有下一报头60目的选项报头88EIGRP89OSPFIPv6协议的结构25

表2-1:Next Header字段的值 (续)值说明108IP有效载荷压缩协议115第二层隧道传输协议(L2TP)132流控制传输协议(SCTP)134~254未分配255保留

报头类型数字和协议类型数字的范围是相同的,因此不应有冲突。

注意:协议号的完整列表可以在附录中找到。要获得最新的列表,请访问IANA的网站:http://www.iana.org/assignments/protocol-numbers。

Hop Limit(跳数限制,1字节)该字段和IPv4的TTL字段类似。TTL字段包含一个秒数,指示数据包在销毁之前在网络中逗留的时间。绝大多数路由器只是简单地在数据包经过每一跳时将该值减1。该字段在IPv6中被重命名为Hop Limit。现在用字段中的值标识跳数,而不是秒数。每个转发节点对此数目减1。

Source Address(源地址,16字节)该字段包含数据包发送者的IP地址。

Destination Address(目的地址,16字节)该字段包含数据包目的接收者的IP地址。对于IPv4,该字段总是包含数据包的最终目的地的地址。对于IPv6,如果提供了Routing(路由)报头,则该字段包含的未必是最终地址。

图2-2为跟踪文件中的IPv6报头。

相关主题