第四章IPv6报头Page2本讲主要内容IPv6包的结构IPv6报头与IPv4报头的比较IPv6扩展报头逐跳选项报头目标选项报头IPv6选项路由报头片段报头身份验证报头封装安全有效负载报头Page34.1IPv6包的结构IPv6包包括IPv6报头、扩展报头和上层协议数据单元。IPv6报头IPv6报头是必须有的,为固定的40字节扩展报头可有可无,长度不固定。若存在此报头,则IPv6报头的下一报头字段(NextHeader)字段会表示首个扩展报头。上层协议数据单元(PDU)PDU通常包含PDU报头和其有效负载。IPv6报头扩展报头上层协议数据单元Page44.2IPv6报头与IPv4报头的比较为了对特定数据流提供特殊处理定义IP数据报除基本报头外的总长度,包括扩展报头在内定义数据报中跟随在IPv6报头后面的扩展报头的类型和IPv4中TTL相同定义当发生通信量拥塞时分组优先级IPv6报头:40Octets,8fieldsPage54.2IPv6报头与IPv4报头的比较IPv6报头格式版本(version)4比特的版本字段表示IP协议的版本,设置为6。流量类别(TrafficClass)8比特的流量类别表示IPv6包的类型或优先权。此字段近似IPv4的服务类型字段。流标签(FlowLabel)20比特的流标签提供了一种区分不同流量类型流的方法。此字段表示此包是源和目标之间一系列流中的一个,需要中间IPv6路由的特殊处理。设置为0表示默认的路由处理方法。中间路由可以用包的源地址。,目标地址和流标签来辨别给定的流。有效负载长度(PayloadLength)此字段是一个16比特的无符号整数,用来表示有效负载的长度。有效负载长度包括扩展报头和上层的PDU。Page64.2IPv6报头与IPv4报头的比较IPv6报头格式下一报头(NextHeader)此8比特字段表示首个扩展报头(假设存在)或上层PDU的协议类型。跳数限制(HopLimit)此字段表示IPv6包能经过的最大链路数,超过此数的包将被丢弃。源地址(SourceAddress)此字段128位表示起始主机的IPv6地址。目的地址(DestinationAddress)此128比特的字段表示目的节点IPv6地址。如果提供了路由选择报头,目标节点可以是下一中间节点;否则,目标节点就是最终的分组目的地。Page74.2IPv6报头与IPv4报头的比较4.4IPv6报文格式IPv4和IPv6报文格式比较20-60字节maximum65535octetsIPv4固定40字节maximum65535octetsIPv60或更多IPv4Header数据传输层数据IPv6Header扩展头扩展头7Page84.2IPv6报头与IPv4报头的比较IPv4报头:20字节+Options,共13个字段0bits31版本HLEN总长度标识符标志段偏移32bitSourceAddress32bitDestinationAddress482416服务类型OptionsandPadding生存时间检验和协议类型删除字段改动字段8Page94.2IPv6报头与IPv4报头的比较DestinationAddressSourceAddressVerIHLServiceTypeIdentificationFlagsOffsetTTLProtocolHeaderChecksumSourceAddressDestinationAddressOptions+PaddingTotalLengthVerFlowLabelPayloadLengthNextHeaderHopLimitTrafficClassIPv4PacketHeaderIPv6PacketHeader32bits32bits128bits9Page104.2IPv6报头与IPv4报头的比较IPv6报头:1.IPv6报头不包含选项,固定了报头长度。2.删去了报头校验和。3.去掉了分段标志、标识和偏移字段。在IPv6中分片和重组提供了一个专门的扩展报头。4.去掉了业务类型字段,增加了流标志和优先级字段,以支持实时业务和QoS.5.使用扩展报文代替IPv4中的选项字段6.报文中的字段的个数减少Page114.2IPv6报头与IPv4报头的比较下一个报头:标识基本报头后面的报头类型,若无扩展报头,则标识上层协议,这时本字段与IPv4报头的“协议类型”相同。表中列出了为下一个报头域定义的几个值。值描述0逐跳选项报头6TCP17UDP43路由选择报头(RH)44分片报头(FH)45域间路由46资源预约50封装安全有效负载(ESP)51鉴别报头(AH)58ICMPv659没有下一报头60目的站点选项报头11Page124.3IPv6扩展报头IPv6的扩展报头被放在IPv6基本报头和上层报头间。扩展报头是通过下一个报头值来区分的。一个IPv6信息包可以有0个或多个扩展报头,每一个扩展报头都是通过前一个报头中的下一个报头字段来确定。基本报头扩展报头1扩展报头n上层报头+数据……可选Page134.3IPv6扩展报头IPv6基本首部下一首部=TCPTCP首部+数据IPv6基本首部下一首部=路由路由选择首部下一首部=分片分片首部下一首部=TCPTCP首部+数据IPv6基本首部下一首部=路由路由选择首部下一首部=TCPTCP首部+数据无扩展首部有1个扩展首部有2个扩展首部Page144.3IPv6扩展报头扩展报头必须严格按照它们在信息包出现的顺序进行处理,在处理一个报头的时候,要求节点必须处理下一个报头,若当前报头的下一个报头域的值不能被节点识别,则该节点应该丢弃该信息包,同时发送一个ICMP参数问题报文给该信息包信源,同时在ICMP报文的指针字段包含原始信息包中不可识别值的偏移量。目前的IPv6规范定义了6种扩展报头:逐跳选项报头;路由选择报头;分片报头;验证报头;加密安全报头;目标选项报头Page154.4IPv6逐跳选项报头从源节点到目的节点的路由上的每个节点,即每个转发包的路由器都检查逐跳选项中的信息。源节点和目的节点也对逐跳选项报头进行处理。对逐跳选项报头来说,前一个报头的“下一个报头”字段为0。逐跳选项报头必须紧跟在IPv6报头之后。Page164.4IPv6逐跳选项报头下一报头(NextHeader)这个8比特字段包含的是协议号,用来标识紧跟在逐跳选项报头之后的协议报头。扩展报头长度(HdrExtLen)这8个比特字段表示以8字节为单位的报头长度(不包含第一个8字节)若逐跳选项报头长为8字节,则此字段为0。选项(Options)选项字段是变长的,但必须使整个逐跳选项报头的长度是8字节的倍数。选项的格式在后面进行讲解。Page174.5目标选项报头目标选项报头用于为中间目标或最终目标指定发送包的参数。此报头由前一报头的下一报头字段60表示。若存在路由报头,则它表示每个中间目标的发送或处理选项。此情况下目标选项报头出现在路由报头之前。若没有路由报头,或者此报头出现在路由报头之后,则此报头表示最终目标的发送或处理选项。目标选项报头和逐跳选项报头结构类似。目标选项的例子是移动IPv6的本地地址目标选项Page184.6IPv6选项逐跳选项报头和目标选项报头中装载了数量可变的选项值,这些值是按照“类型-长度-值”的格式进行编码的。选项类型(Option)选项类型字段是一个8比特字段,标识了选项的类型。RFC2460只定义了填充选项:Pad1和PadN选项。RFC2675定义了超大有效负载选项,RFC2711定义了路由警告选项,RFC3775定义了本地地址目标选项。RFC还定义了其他的一些选项。选项数据长度(OptionDataLenth)此8比特说明以字节为单位的选项数据长度。选项数据(OptionData)这是一个可变长的字段,装载了选项特有的数据。选项数据的格式如下所示。选项类型选项数据长度选项数据01237815Page194.6IPv6选项选项类型选项数据长度选项数据01237815在选项类型中,高两位表示了节点未识别出选项类型时应如何处理的结果。下表列出了这2位值的定义及对应的含义。选项类型中的第3位表示到目标的途中选项数据允许改变(=1)或不允许改变(=0)。值采取的动作00跳过不认识的选项,继续进行分组处理01自行丢弃分组10丢弃分组,并想分组源发送一条ICMPv6错误报文,说明有不认识的选项11丢弃分组,只有当分组目的是单播目的时,才向分组源端发送ICMPv6错误报文Page204.6IPv6选项Pad1选项Pad1选项用于插入单个填充字节,以使逐跳选项或目标选项位于8字节边界并满足选项的对齐要求。Pad1选项没有对齐的要求。Pad1选项由一个字节组成;选项类型设置为0,没有长度或值字段。下图显示了Pad1选项的格式。选项类型=007Page214.6IPv6选项PadN选项PadN用于插入两个或多个填充字节,以使逐跳选项或目标选项报头位于8字节边界并满足选项对齐的要求。PadN选项没有对齐要求。PadN选项由选项类型字段(设为1)和长度字段(设为填充字节数)组成。下图显示了PadN选项的格式。07815选项类型=1选项数据长度选项数据Page224.6IPv6选项超大有效负载选项它表示用于超过65535字节的有效负载大小。有效负载选项有4n+2这一对齐要求。若存在超大有效负载选项,就不再用IPv6报头中的有效负载长度字段来表示IPv6包用32位的超大有效负载长度字段,能够表示4294967295字节的有效负载。IPv6包中的有效负载超过65535字节时称为超大包。当选项类型设置为194(二进制11000010)时执行以下操作:丢弃包、向分组源端发送ICMPv6错误报文(只有当分组目的是单播目的时)、不允许在传输中改变选项07815选项类型=194选项数据长度=4字节超大有效负载长度/32位Page234.6IPv6选项路由器警告选项它用来告知路由器:包中的内容需要额外处理。路由器警告选项有2n+0这一对齐要求。路由器警告选项用于多播侦听发现(MLD)和资源存储协议(RSVP)。选项类型字段设置为5。07815选项类型=5选项数据长度=2字节路由器警告值/16位Page244.6IPv6选项选项的对齐要求需要进行选项填充就说明报头有对齐的要求,以保证选项中的特定字段正好位于边界上。对齐要求用xn+y表示,其含义是,该选项必须从x字节的整数倍上加上y字节(相对报头的起始处)的字节边界起始。例如对齐4n+2的含义是选项必须从(4字节的整数倍)+2字节的边界起始。换句话说,选项必须从相对于逐跳选项或是目标选项报头的起始处6字节、10字节、14字节(以此类推)的字节边界处起始。为了满足对齐要求,当有多个选项时,通常使用填充字段置于某个选项或每个选项之间。Page254.6IPv6选项本地地址选项此选项用于表示移动节点的本地地址。当移动节点连到本地链路时,分配给它本地地址。通过本地地址,不管移动节点在IPv6网络的哪里,它总是可达的。本地选项地址由8n+6这一对齐要求。选项类型字段设置为201(二进制11001001)。07815选项类型=5选项数据长度=16字节本地地址/128位Page264.6IPv6选项选项类型总结选项类型选项及其用途对齐要求0Pad1选项:逐跳选项或目标选项无1PadN选项:逐跳选项或目标选项无194超大有效负载选项:逐跳选项4n+25路由器警告选项:逐跳选项2n+0201本地地址选项:目标选项报头8n+6Page274.7路由报头下一报头扩展报头长度路由类型剩余段数类型特有数据执行源路由选择节点用路由报头列出了在分组传输路径上要经过的(被称为路由段的)中间节点。下一报头:8比特用来标识紧跟在路由报头之后的协议报头。扩展报头长度:8比特