《IPv6技术精要》一2.4 扩展报头

2.4 扩展报头

IPv6技术精要
理解扩展报头相对较为困难,所以本节将采取步步深入的方式进行介绍。有些扩展报头很简单,而有些扩展报头则比较复杂,因此,即便有些内容理解起来有些含糊,也不必太在意,本节的目的是让大家熟悉扩展报头的概念以及相应的使用方式。

扩展报头是可选项,位于IPv6基本报头之后,如前所述,IPv6报头包含下一报头字段,该字段的作用有两个:

一是标识IPv6包数据部分所承载的协议;
二是指示扩展报头的存在。
在前面已经说过,下一报头字段能够标识IPv6包数据部分所承载的协议,这一点与IPv4报头的协议字段相似(如图2-5所示)。

第二个作用是对IPv6报头的重要补充,用于指示被称为扩展报头的额外报头的存在。在必需的IPv6基本报头之后,可以有0个、1个或多个扩展报头。所有扩展报头中都有的一个字段是另外的下一报头字段,表示接下来还有其他扩展报头,或者是数据(净荷)协议(如TCP报文段)。因此,最后的扩展报头总是指示哪种协议被封装在数据部分(净荷),这一点与IPv4的协议字段相似。

目前在RFC 2460中定义了6种扩展报头(如表2-3所示)。大家可能还记得,在IPv4报头中有一个很少使用的可变长度的选项字段,可以为IPv4提供一定的灵活性,而IPv6也有两个扩展报头提供了类似的功能:逐跳选项(Hop-by-Hop Option)报头和目的选项(Destination Option)报头。图2-7给出了使用这两种报头的IPv6包示例。

IPv6基本报头拥有前面讨论过的全部字段,包括源地址和目的地址字段,IPv6基本报头中的下一报头字段为0则表示后面紧跟的是逐跳选项扩展报头。
逐跳选项扩展报头位于IPv6基本报头之后,有关扩展报头的详细内容将在下一节讨论,这里需要注意的是,该字段也包含自己的下一报头字段,值51表示后面还有其他的扩展报头,即AH(Authentication Header,认证头)扩展报头。
最后的扩展报头就是AH,其下一报头字段值为6,表示后面跟的是TCP上层协议报头,也就意味着本数据包没有其他的扩展报头了。

注:

下一报头字段的作用是将多个IPv6报头链接在一起,链条的末尾是IPv6包的数据部分。
RFC 2460建议同一个数据包使用多个扩展报头时,这些扩展报头的出现顺序如下:

1.IPv6基本报头;

2.逐跳选项报头;

3.目的选项报头;

4.路由报头;

5.分段报头;

6.AH报头;

7.ESP报头;

8.目的选项报头;

9.上层协议报头。

2.4.1 逐跳选项扩展报头

逐跳选项报头用于承载选项信息,并且数据包传送路径上每台路由器都必须处理这些信息。逐跳选项报头是与IPv4选项字段类似的包含可变长度选项字段的两个扩展报头之一,顾名思义,逐跳选项报头是一种要求传送路径上每台路由器都必须处理的扩展报头。

注:

目的选项报头是另一种使用选项的扩展报头,顾名思义,该扩展报头包含的信息只传递给目的端,本节将在最后详细讨论目的选项报头。
下面就来分析一下选项的使用。选项为IPv6包提供了很好的灵活性,可以通过扩展报头标准组中未定义的一组值对IPv6包进行补充定义,这组值也被称为TLV(Type-Length-Value,类型-长度-值)三元组。目前已经定义了两种使用选项的扩展报头:逐跳选项报头和路由选项报头。如图2-8所示,这两类扩展报头都有下一报头字段和报头扩展长度字段,然后是一个或多个选项组,每个选项都包含一组选项类型(Option Type)字段、选项长度(Option Length)字段和选项数据(Option Data)字段(即TLV)。

图2-9显示了包含巨包净荷选项(Jumbo Payload Option)的逐跳选项报头格式。巨包净荷选项用于表示该IPv6包大于65 535字节。由于这是逐跳选项,因而路径上的所有路由器都必须检查该信息。

下面列出了与逐跳选项扩展报头相关的字段信息。

IPv6基本报头:下一报头(Next Header,8比特):除了IPv6基本报头的其他信息之外,还有一个值为0的下一报头字段,表明基本报头后面有一个逐跳选项扩展报头。
逐跳选项扩展报头。

下一报头(Next Header,8比特):下一报头字段值为6,表明该报头后面是TCP报头,没有其他扩展报头。

报头扩展长度(Header Extension Length,8比特):表示以八位组为单位的逐跳选项报头的长度,不包含第一个八位组。可以有多个选项,每个选项都包含一个TLV(选项类型、选项长度和选项数据字段)。

选项类型(Option Type,8比特):表示该报头所承载的选项类型,十六进制值C2表明这是一个巨包净荷选项。

选项长度(Option Length,8比特):表示选项数据字段中的字节数,值4表示选项数据长度为4字节(32比特)。

选项数据(可变长度):本例中的数据是巨包净荷长度。巨包净荷长度是一个32比特字段,表示以字节为单位的IPv6包大小,不包括IPv6报头,但包括逐跳选项扩展报头以及其他扩展报头。巨包净荷长度必须大于65 535字节,最大可以达到4 294 967 295字节。

TCP报文段:由于只有一个选项且没有其他扩展报头,因而后面跟着的是TCP报文段,从前面的逐跳选项扩展报头中下一报头值为6即可看出。

如果使用了逐跳选项扩展报头,那么该报头必须紧跟在IPv6基本报头之后。

2.4.2 路由扩展报头

路由扩展报头允许数据包源端指定去往目的端的路径,该报头包含去往数据包目的端路径上的一台或多台中间路由器,该功能与IPv4使用的松散源路由选项非常类似,路由扩展报头由前一个报头中的下一报头值43来标识。

图2-10显示了路由类型为2(在IPv6中支持移动性)的路由扩展报头结构。该扩展报头允许将数据包从通信端直接路由到移动节点的转交地址(Care-of Address),扩展报头提供了移动节点的当前位置信息。

下面列出了与路由扩展报头相关的字段信息。

下一报头(Next Header,8比特):表示路由扩展报头后面下一个报头的类型,要么是其他的扩展报头,要么是净荷协议。
报头扩展长度(Header Extension Length,8比特):表示以八位组为单位的路由报头的长度,不包含第一个八位组。
路由类型(Routing Type,8比特):值为2。
剩余段(Segments Left,8比特):值为1。
保留(Reserved,32比特):该字段被保留,传输时被初始化为0,并且被接收端忽略。
家乡地址(Home Address,128比特):表示目的端移动节点的家乡地址。
注:

有关路由器如何处理路由扩展报头的内容超出了本书范围,如果感兴趣,可以参考RFC 2460或Cisco Press出版的Cisco Self-Study: Implementing Cisco IPv6 Networks”。许多ISP对源节点在数据包的下一跳选择问题上持怀疑态度,通常都会根据管理需要阻塞包含了路由扩展报头的数据包,目前唯一有效的路由扩展报头就是类型2,该类型报头用于IPv6中的移动性支持。

2.4.3 分段扩展报头

如图2-11所示,分段扩展报头与IPv4报头中用于分段目的的字段相似。当IPv6数据包的源端需要将数据包分段并将每个分段都作为一个单独的数据包进行发送时,就需要用到分段扩展报头。数据包的接收端再重组这些分段后的数据包,每个数据包都有自己的IPv6基本报头和分段扩展报头。

与IPv4不同,对每个被分段的数据包来说,源端会生成一个唯一的标识值,并且每个分段后的数据包中都会包含该标识值。该标志值可以确保接收端能够正确地重组来自原始数据包的各个片段。如果源端还需要对同一条消息中的其他数据包进行分段,那么就要使用不同的标志值。

下面列出了与分段扩展报头相关的字段信息。

下一报头(Next Header,8比特):表示原始数据包被分段后的数据的协议号。
保留(Reserved,8比特):该字段被保留,传输时被初始化为0,并且被接收端忽略。
分段偏移(Fragment Offset,13比特):表示被分段后的数据在该报头之后的相对偏移量或位置,以八位组为单位。与IPv4报头中的分段偏移相似,该字段的目的是指示接收端如何将该分段后的数据包与其他分段后的数据包进行排列。
Res(2比特):该字段被保留,传输时被初始化为0,并且被接收端忽略。
M标志(M flag,3比特):M(More Fragments,更多分段)标记用来表示是否是最后一个分段(比特0)或者后面还有更多分段(比特1),该字段与IPv4报头的更多分段标志(More Fragments Flag)相似。
标识符(Identification,32比特):该字段与IPv4报头的标识符字段相似,用来唯一的标识同一个原始数据包中的所有分段数据包,该字段从IPv4中的16比特扩充到IPv6中的32比特。

2.4.4 IPSec:AH和ESP扩展报头

IPv6利用以下两种扩展报头来实现IPSec中的两种关键的安全协议:

AH(Authentication Header,认证头);
ESP(Encapsulating Security Payload,封装安全净荷)。
1.IPSec
在讨论AH和ESP扩展报头之前,首先简要回顾一下IPSec以及这两种安全协议的主要功能,目的不是要求大家完全掌握IPSec、AH和ESP,而是希望为大家理解其重要性以及在IPv6中的使用分方法提供足够的背景知识。

IPSec是保障数据包在IP网络中传输安全性的一组协议集。

AH和ESP是为整个IPv6包或部分IPv6包提供认证与完整性功能的主要安全协议,此外,ESP还能够提供加密功能。

注:

IPSec是IPv4和IPv6的一部分,但实现IPv4协议栈的设备并不强制要求提供IPSec功能,早期的RFC要求所有的IPv6实现都必须强制支持IPSec,描述方式是“必须支持”IPSec,不过最新的RFC 6343“IPv6 Node Requirements”放松了这一要求,相应的描述方式调整为“应该实现”IPSec。
AH可以提供数据包的真实性和完整性保证,认证(Authentication)的作用是确保数据包的发送方和接收方身份都是真实的,完整性(Integrity)的作用是保证数据包在发送途中未被更改。AH可以提供认证和完整性功能,但不提供加密功能,加密(Encryption)是利用一定的算法(被称为密码)转换信息(通常是明文)的过程,以确保只能由拥有特殊信息(通常称为密钥)的接收方读取。

ESP可以提供认证、完整性和加密功能,ESP不仅可以保护数据包不被中间设备更改,而且还能保护数据包的内容不被查看,ESP有自己的认证方案,也可以与AH配合使用。总得来说,AH仅提供认证和完整性功能,而ESP除了提供认证和完整性功能之外,还能对数据包进行加密。

到现在为止,还没有说到究竟需要对数据包的多少内容进行认证或加密,这个问题的答案取决于IPSec的工作模式,即传输模式或隧道模式。

2.传输模式与隧道模式
顾名思义,传输模式保护传输层及更高层,仍然使用原始的IP报头。由于原始的源IP地址和目的IP地址都在IP基本报头内,因而中间设备路由器不是IPSec的参与者。传输模式通常用于主机之间的通信。

隧道模式用于保护IP包的全部内容,包括IP报头。实现方式是将原始IP包(包括IP报头)封装到一个新的IP报头中,隧道端点作为新的源IP地址和目的IP地址,隧道端点可以是路由器或主机本身。隧道模式可以保护整个IP包,而传输模式不行。图2-12解释了传输模式与隧道模式之间的区别。

下面将开始讨论AH扩展报头和ESP扩展报头,如果是初次接触IPSec,那么对某些内容感到困惑是完全可以理解的。

2.4.5 ESP扩展报头

ESP扩展报头是一种可变长度的扩展报头,如前所述,该报头用于提高认证、完整性和加密等功能,ESP扩展报头是由前一个报头中的下一报头字段值50来标识的。

图2-13显示了ESP扩展报头的结构,ESP扩展报头可以分为4部分。

ESP报头:SPI(Security Parameter Index,安全参数索引)和序列号字段。
净荷:ESP净荷数据字段。

ESP报尾:填充、填充长度以及下一报头字段。

ESP认证数据。

图2-13显示了ESP扩展报头的各个字段,ESP被视为端到端通信机制,也就是说,路径上的路由器不会处理ESP报头。请注意,ESP为原始数据包提供了认证完整性与机密性机制,因此,ESP扩展报头被封装在IPv6基本报头、逐跳选项扩展报头、路由扩展报头以及分段扩展报头之后(如图2-14所示)。对IPv6来说,加密操作会涵盖整个传输层报文段、ESP报尾以及目的选项扩展报头(如果目的选项扩展报头位于ESP报头之后),目的选项扩展报头可以位于ESP报头之前或之后,这取决于设计意图。

与前面讨论过的扩展报头不同,有关ESP扩展报头各个字段的内容已超出了本书范围,需要大家对IPSec有比较深入的认识和理解,如果大家初次接触IPSec,那么对某些内容感到困惑是完全可以理解的,有关IPSec的详细信息,可参考Cisco Press出版的由James Henry Carmouche编写的图书IPSec Virtual Private Network Fundamentals,这是一本非常好的学习IPSec知识的图书。

AH扩展报头
AH扩展报头也是一种可变长度的扩展报头,与ESP不同的是,AH仅提供认证和完整性功能,并不使用加密机制来提供机密性功能,AH扩展报头是由前一个报头中的下一报头字段值51来标识的。

图2-15显示了AH扩展报头的结构,与ESP一样,AH也被视为端到端通信机制,请注意,AH仅提供数据的完整性机制,可以确保通信参与方的身份,并且接收方可以据此检测出数据包内容在传送过程中是否被更改。与ESP相似,AH扩展报头也被封装在IPv6基本报头、逐跳选项扩展报头、路由扩展报头以及分段扩展报头之后(如图2-16所示)。目的选项扩展报头可以位于ESP报头之前或之后,这取决于设计意图。

与其他IPSec扩展报头一样,有关AH扩展报头各个字段的内容已超出了本书范围,需要大家对IPSec有比较深入的认识和理解。

2.4.6 目的选项扩展报头

目的选项扩展报头用于承载仅需要数据包目的节点处理的选项信息,除了逐跳选项扩展报头之外,目的选项扩展报头是另一个使用选项的扩展报头,目的选项扩展报头是由前一个报头中的下一报头字段值60来标识的。如图2-17所示,目的选项扩展报头的格式如下。

下一报头(Next Header,8比特):用于标识目的选项扩展报头后面的报头类型,既可以是其他扩展报头,也可以是净荷协议。
报头扩展长度(Header Extension Length,8比特):表示以八位组为单位的目的选项扩展报头的长度,不包含第一个八位组。
选项(可变长度):该字段包含一个和多个采取TLV编码的选项。

选项类型(Option Type,8比特):表示该报头所承载的选项类型。

选项长度(Option Length,8比特):表示选项数据字段中的字节数。

选项数据(可变长度):即数据包的数据内容。

注:

有关目的选项扩展报头的一种建议使用方式是IPv6的移动性支持,相关内容定义在RFC 6275“Mobility Support in IPv6”。

“对每个移动节点来说,无论其连接互联网的当前附着点在哪里,都是由其家乡地址来标识的。当移动节点离开家乡时,就会与一个转交地址产生关联,转交地址可以提供该移动节点的当前位置信息,传送给移动节点的IPv6数据包都会被透明路由到这个转交地址,协议要求IPv6节点缓存移动节点的家乡地址与转交地址之间的绑定关系,然后就可以将发送给该移动节点的数据包直接发送给转交地址。为了支持该操作,移动IPv6定义了一个新的IPv6协议和一个新的目的选项,这样一来,所有IPv6节点(移动节点或固定节点)都能与移动节点进行通信。”

2.4.7 无下一报头

下一报头字段值为59时表示该报头后面无其他数据。它仅仅是一个占位符,表示该报头后面无任何数据。假如净荷长度指示该报头后面还有其他字节,那么这些字节都会被忽略。

时间: 2024-11-08 22:03:06

《IPv6技术精要》一2.4 扩展报头的相关文章

《IPv6技术精要》一第2章 IPv6协议2.1 IPv4报头

第2章 IPv6协议 IPv6技术精要 本章将详细描述IPv6协议的相关内容.首先分析IPv4和IPv6报头的各个字段,并分析两者的异同点,然后解释为什么IPv6所提供的不仅仅是更大的地址空间,而是一种更灵活.更有效的新协议. 有关IPv6报头结构的信息定义在RFC 2460"Internet Protocol, Version 6 (IPv6) Specification"中.本章除了介绍IPv6的基本报头之外,还将介绍IPv6的扩展报头,并在本章小结中归纳了IPv4与IPv6报头的

《IPv6技术精要》一导读

前 言 IPv6技术精要 本书主要讨论IPv6的基础知识.IPv6需要学习的东西很多,而不仅仅是拥有更大的地址空间. 写作本书时,我尽量以一种简单的.步骤式的方法来解释每一个概念,同时将关键细节包含在其中.既要向读者展示尽可能多的信息,又不至于让读者迎难而下,这是写作本书时的一大挑战.虽然IPv6并不难学,但毕竟包含了很多新协议和新进程. 大家不要被本书的细节信息所迷惑.例如,虽然我在本书中概要列出了各类协议的所有字段信息,但并不需要大家完全理解并掌握所有细节信息,这一点我已经在书中时时提到.我

《IPv6技术精要》一2.6 本章小结

2.6 本章小结 IPv6技术精要本章详细分析了IPv4报头与IPv6报头,对比了这两种协议之间的异同点.IPv6报头的字段较少,在很多方面都是一个较为简单的协议.某些字段从IPv4直接迁移到IPv6中保持不变,某些字段则更改了名称,并存在一定的功能差异,还有一些字段则完全被IPv6所取消,同时还增加了一个新的流标签字段. IPv6引入了扩展报头,提升了IPv6的灵活性和效率.本章还解释了IPv6对UDP和MTU所带来的影响. 第3章将详细讨论IPv6地址的表示方式以及IPv6单播地址的通用结构

《IPv6技术精要》一1.5 IPv6的优点

1.5 IPv6的优点 IPv6技术精要本节将介绍IPv6的优点,下面简要列举了IPv6的主要优点及功能特性. 极大扩展的地址空间:与IPv4的32比特地址长度相比,IPv6的源地址和目的地址长度均为128比特,可以提供巨大的地址空间--2128即340兆兆兆个地址,足够为地球上的每粒沙子都分配一个IP地址.无状态自动配置:IPv6提供了一种配置机制,允许主机自己生成一个可路由地址.IPv4的自动配置地址(RFC 3330和5735)只能在本地子网(链路本地)内部使用,路由器不会转发这些地址.I

《IPv6技术精要》一2.2 IPv6报头

2.2 IPv6报头 IPv6技术精要IPv6报头定义在RFC 2460(Internet Protocol, Version 6 (IPv6) Specification)中,图2-2给出了IPv6报头的基本结构,有时也称为IPv6基本报头,IPv6基本报头可以包含一个或多个扩展报头,有关扩展报头的内容将在本章后面进行讨论. IPv6报头及其各个字段如图2-2所示. 版本(Version,4比特):版本(Version)字段包含了IP报头的版本号,其值始终为6.流量类别(Traffic Cla

《IPv6技术精要》一1.9 本章小结

1.9 本章小结 IPv6技术精要通过本章的学习,大家应该对IPv4的局限性有了更清晰的认识,并且了解了为何需要向IPv6进行过渡.虽然有关IPv6优点的讨论将贯穿本书始终,但大家对IPv6的优点应该有了一个基本认识. 本章主要内容如下. 目前人们使用互联网的方式与IPv4创建之初的巨大差异:用户更多.设备更多.新需求层出不穷,已经从计算机互联网发展到了物联网. 虽然没有人能够确切地知道究竟何时会耗尽IPv4的43亿个地址,但已经到了可用公有IPv4地址的最后阶段却是不争的事实. 拥有128比特

《IPv6技术精要》一2.5 IPv4与IPv6对比

2.5 IPv4与IPv6对比 IPv6技术精要了解了IPv4与IPv6报头细节之后,很自然就会想到两者之间到底有何重要区别,由于有很多知识需要我们消化,因而以图2-1和图2-2为参考进行简要归纳. 2.5.1 IPv4与IPv6报头对比以下IPv4报头字段的名称与IPv6报头保持一致. 版本(IPv4和IPv6):这是最简单的一个字段,在IPv4中值为4,在IPv6中值为6.源地址和目的地址(Pv4和IPv6):最大的差别就是IPv4的源地址和目的地址是32比特,而IPv6的源地址和目的地址为

《IPv6技术精要》一1.7 IPv4地址耗尽

1.7 IPv4地址耗尽 IPv6技术精要 如果IPv4网络运行状况良好,为什么还需要开始考虑迁移到IPv6呢?这就如同在旧汽车状况良好的情况下为何要考虑购置新汽车一样.虽然没有任一种杀手级应用需要用户迁移到IPv6,但依然有一些不可抗拒的理由(如前所述)驱使网络管理员至少应该为向IPv6的迁移做好准备.最明显的理由就是IPv4地址已经耗尽,因此可以说,IPv6的杀手级应用就是保护了互联网,允许互联网继续前进. 虽然IPv4在理论上最多可拥有43亿个地址,但在实际的地址分配过程中存在很多低效的情

《IPv6技术精要》一2.7 参考文献

2.7 参考文献 IPv6技术精要 RFC: RFC 791, Internet Protocol, DARPA Internet Program Protocol Specification , USC, www.ietf.org/rfc/rfc791.txt,September1981 RFC 1191, Path MTU Discovery , J. Mogul, Stanford University, www.ietf.org/rfc/rfc1191.txt,November1990