《第5章:IPv6报文结构》由会员分享,可在线阅读,更多相关《第5章:IPv6报文结构(49页珍藏版)》请在金锄头文库上搜索。
1、第5章 IPv6报文结构,在现代网络中,为了把数据能安全、准确、高效地传送到目标节点,首先需将要传送的数据进行分块,并在每一小块数据之前加上一些附加的信息,如序列号、源/目标IP地址、源端口号、目标端口号、使用的协议(TCP/UDP)、校验码、生命周期等,这种加上了附加信息后的数据块称为“分组”、“数据包”或“报文”,并由此引出了“分组交换”及“包交换”的概念。本章讨论的是这种分组信息的结构,即“报文结构”。 本章的主要内容有: l IPv4报文结构; l IPv6报文结构; l IPv6扩展报头; l IPv6差错报文; l IPv6信息报文。,5.1 IPv4报文结构与IPv6报文结构,5
2、.2 IPv6扩展报头,5.3 ICMPv6,第5章 IPv6报文结构,5.1 IPv4与IPv6报文结构,本节内容: 5.1.1 IPv4报文结构回顾 5.1.2 IPv6报文结构,5.1.1 IPv4报文结构回顾 1. IPv4报文结构,服务类型。这8位中只有前4位用来作为IP路由器的服务类型(TOS)请求。一个TOS位表示对如何处理数据报的优先选择:延时、吞吐量、可靠性或代价。在请求中把延时位置位意味着需要最小的延时;把吞吐量位置位意味着需要最大的吞吐量;把可靠性位置位意味着需要最高的可靠性。服务类型字段内部结构如图5-2所示。,其中:优先权。优先权由3位组成,其值从0-7,数值越高,优
3、先权越高。D表示时延,其值为0表示正常时延,为1表示高时延;T表示吞吐量,为0表示正常吞吐量,为1表示高吞吐量;R表示可靠性,其值为0表示正常可靠性,为1表示高可靠性;6-7位保留。,标识符(数据包ID)。这个唯一的16位标识符由产生它的主机指定给数据报。发送主机为它送出的每个数据报产生一个单独ID,但数据报在传输的过程中可能会分段,并经过不同的网络而到达目的地。分段后的数据报都共享同一个数据报ID,这将帮助接收主机对分段进行重装。 分段标志。分段标志共3位,如图5-3所示。3位分段标志位中的第一位未用,其他两位用于控制数据报的分段方式。如果“不能分段(DF)”位设为1,意味着数据报在选路到目
4、的地的过程中不会分段传输。如果数据报不分段就无法选路,试图分段的路由器将丢掉该数据报并向源主机发送错误报文。如果“更多段(MF)”位设为1,意味着该数据报是某两个或多个分段中的一个,但不是最后一段。如果MF位设为0,意味着后面没有其他分段或者是该数据报本来就没有分段。接收主机把标志位和分段偏移一起使用,以重组被分段的数据报。,分段偏移值。13位,它表示以8字节为单位,当前数据报相对于初始数据报的开头的位置。数据报的第一个分段的偏移值为0;如果第二个分段中的数据从初始数据报开头的第800字节开始,该偏移值将是100。 生存期。生存期又称生命周期,在转发数据报时,每经过一个路由器,即把TTL减1。
5、在实践中,TTL代表的是数据报在被丢弃前能够穿越的最大跳数。当TTL=0而数据报还未到达目的节点时,路由器将丢弃该报文,同时向源主机发送ICMP差错报文。 传输协议。指明数据报中携带的净荷类型,主要标识所使用的传输层协议:一般是TCP协议或UDP协议。其值为6时表示TCP协议,为17时为UDP协议。,2. IP选项 在IPv4中,IP选项主要用于网络测试和调试。 可用的选项大多与选路有关,例如,有的选项允许发送方指定数据报必须经过的路由,换句话说,定义了由哪些路由器来处理该数据报。还有的选项要求中转路由器记录其IP地址为数据报打上时间戳。一些选项,尤其是指出数据报必须经过哪些IP地址的报文要求
6、在选项后附加一些数据。 指定路由、记录路由器或增加时间戳等选项增加了IP头的长度。如果使用的话,IP选项会以没有间隔字符的方式串在一起,如果它们的结尾不在字边界,即字节数不是4字节的整数倍,还将会加上填充数据。正如上述对头长度字段的描述,选项字段可以包括不超过40字节的选项和选项数据。 常用的选项有:源路由选项、路由记录选项、时间戳选项、安全选项等。,5.1.2 IPv6报文结构 1.IPv6报头结构 与IPv4报文结构一样,IPv6报文也是由报头和数据组成的,不同的是,IPv6报头是由3个部份组成:IPv6报头(即基本报头)、扩展报头及上层协议数据单元。如图5-4所示。,IPv6报头。IPv
7、6报头又称“IPv6基本报头”,每一个IPv6数据包都必须包含报头,该报头长度固定为40个字节。 扩展报头。IPv6扩展报头又称下一个头,扩展报头是可选报头,紧接在基本报头之后,IPv6数据包可包含多个扩展报头,而且扩展报头的长度并不固定,IPv6扩展报头代替了IPv4报头中的选项字段。“下一报头”字段值所对应的扩展报头如表5-1所示。 上层协议数据单元。上层数据协议单元由上层协议报头和它的有效载荷构成,有效载荷可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。,2. IPv6报文结构 IPv6报文由IPv6基本报头+扩展报头+上层协议+数据组成,其中扩展报头为可选项。,版本。长度为
8、4位,对于IPv6,该字段必须为6(0110)。 业务流类别。业务流类别又称通信流类别,长度为8位,指明为该包提供了某种“区分服务”。RFC 1883中最初定义该字段只有4位,并命名为“优先级字段”,后来该字段的名字改为“类别”,在最新的IPv6 Internet草案中,称之为“业务流类别”。该字段的默认值是全0。 流标签。长度为20位,用于标识属于同一业务流的包。一个节点可以同时作为多个业务流的发送源。流标签和源节点地址唯一标识了一个业务流。 净荷长度。长度为16位,其中包括包净荷的字节长度,即IPv6头后的包中包含的字节数。这意味着在计算净荷长度时包含了IPv6扩展头的长度。 下一报头。长
9、度为8位,这个字段指出了IPv6基本报头之后所跟的下一个扩展报头字段中的协议类型。与IPv6协议字段类似,下一个头字段可以用来指出高层是TCP还是UDP,但它也可以用来指明IPv6扩展头的存在与否。 跳极限。长度为8位。每当一个节点对包进行一次转发之后,这个字段就会被减1。如果该字段达到0,这个包就将被丢弃。IPv4中有一个具有类似功能的“生存期”字段。,5.2 IPv6扩展报头,本节内容: 5.2.1 IPv6扩展报头的类型 5.2.2 逐跳选项扩展报头 5.2.3 选路扩展报头 5.2.4 分片扩展报头 5.2.5 认证扩展报头 5.2.6 封装安全有效净荷扩展报头 5.2.7 目的选项报
10、头,5.2.1 IPv6扩展报头的类型 1. IPv6扩展报头的类型 l逐跳选项报头。此扩展头必须紧随在IPv6头之后。它包含包所经路径上的每个节点都必须检查的选项数据。 l目的地选项报头。此扩展头代替了IPv4选项字段。目前,唯一定义的目的地选项是在需要时把选项填充为6 4位的整数倍。此扩展头可以用来携带由目的地节点检查的信息。 l 选路报头。选路报头又称路由报头,此扩展头指明包在到达目的地途中将经过哪些节点。它包含包沿途经过的各节点的地址列表。IPv6头的最初目的地址是路由头的一系列地址中的第一个地址,而不是包的最终目的地址。此地址对应的节点接收到该包之后,对IPv6头和选路头进行处理,并
11、把包发送到选路头列表中的第二个地址。如此类推,直到包到达其最终目的地。 l 分段报头。此扩展头包含一个分段偏移值、一个“更多段”标志和一个标识符字段。用于源节点对长度超出源端和目的端路径MTU的包进行分段。 l 身份验证报头(AH)。此扩展头提供了一种机制,对IPv6头、扩展头和净荷的某些部分进行加密的校验和的计算。 l封装安全性净荷(ESP)报头。这是最后一个扩展头,不进行加密。它指明剩余的净荷已经加密,并为已获得授权的目的节点提供足够的解密信息。,2. IPv6扩展报头的应用,3. IPv6扩展报头的排列顺序 如果在一个IPv6报文中,有多个扩展报头,则应严格按下列顺序排列。 l 基本报头
12、; l 逐跳选项报头; l 目的选项扩展报头; l 路由扩展报头; l 分片扩展报头; l 认证报头; l 封装安全有效净荷报头。,5.2.2 逐跳选项扩展报头 逐跳选项报头的扩展报头值为0。该字段主要用于为在传送路径上的每次跳转指定发送参数,传送路径上的每台中间节点都要读取并处理该字段。逐跳选项报头以IPv6报头中的下一个报值=0来标识。,l 下一个报头值(Next Header)。其含义与前述一致。 l 报头扩展长度(Hdr Ext Len)。是指逐跳选项扩展报头的长度,该长度不包括Next Header字段。 l选项(Options)。是若干系列字段的组合,该字段用以描述数据包转发的一个
13、方面的特性,还可以作为填充之用。一个逐跳选项扩展报头可以包含0个或1个以上的选项字段。选项还可用于目标选项扩展报头。,选项字段结构:,选项类型:表示这个选项的类型。用以确定相关节点对该选项的处理方法。RFC2640规定,在选项类型字段中,最高两位当处理选项的节点不能识别选项的类型时,应该如何处理这个选项。 选项字段的最高两位值含义如下: 00:跳过这个选项; 01:丢弃数据包,不通知发送方; 10:丢弃数据包,无论数据包的目标地址是否为一个组播地址,都向发送方发出一个ICMPv6参数问题的报文; 11:丢弃数据包,如果数据包的目标地址不是一个组播地址,就向发送方发出一个ICMPv6参数问题的报
14、文。 选项数据:选项字段的最高第3位表示在通向目标的路径中,选项数据是否可以改变。 0:选项数据不能改变; 1:选项数据可以改变。,5.2.3 选路扩展报头 选路扩展报头的扩展报头值为43。选路扩展报头又称路由选择报头或源路径选项报头。通过运用选路报头,可以实现经过指定的中间节点到达目的地。,l 下一报头。下一报头和扩展报头长度与逐跳选项报头中的含义一致; l 扩展报头长度。指明扩展报头的长度。 l 路由类型。路由类型是指特定的路由头变量,目前,路由类型只定义了“0”类型(在RFC2460中定义),它包含了报文需要经过的中间路由器的IP地址; 段剩余。段剩余是指在到达最终目标之前还需要经过的中
15、间跳数(即指定经过的路由个数)。,5.2.4 分片扩展报头 分片报头又叫分段报头,其扩展报头值为44。 IPv6分段报头用于IPv6数据包的拆分和重组。如果上层协议提交的有效载荷大于链路或路径MTU,源节点就会对有效载荷进行拆分,并使用分段报头来提供重组信息。 在IPv4中,中间路由器会自动对大的数据包进行拆分,而在IPv6中,路由器不对过大的数据包进行拆分,分片工作是由发送报文的源节点完成的。,l 下一报头(8位)。用以标识“原始报文”中可分片的初始报头类型。 l 保留1(8位)。初始化为“0”,接收方不处理。 l 分片偏移量(13位)。以64比特为单位,用以指定该报头后面的数据报文片段的起
16、始字节在报文中报处的位置。 l 保留2(2位)。初始化为“0”,接收方不处理。 l M(1位)。M=1,表明后面还有分片,M=0则表明是最后一个分片。,例:要发送2902字节的IP报文分组,并假设以太网帧一次只能发送1496个字节的数据,分片标识符为1234。该报文需分为3个片,第1个和第2个分片报文长度均为1496个字节,有效载荷长度均为1456字节,其有效载荷数据均为1448字节;第3个片的报文长度为84字节,有效载荷长度为14个字节,有效载荷数据为6字节。,5.2.5 认证扩展报头 认证扩展报头AH的扩展报头值为51。若要保证IPv6数据包或IPv6其他报头中的部份字段的值在经过IPv6网络传输后不会发生改变,认证报头是最佳的解决方案。 认证扩展报头提供了对需保护的数据进行数据验证、数据完整