IPv6技术精要–第3章 对比IPv4和IPv6

  • Post author:
  • Post category:其他




3.1 IPv4报文头VSIPv6报文头



—–IPv4报文头——-

image.png

image.png



IHL ( 4比特)

  • (Internet Header Length,互联网报头长度)
  • 字段指示IP报头长度(包括所有选项字段),以32比特字为单位。

image.png



ToS (8比特)

  • ToS (Type of Service,服务类型)字段指示了该数据包将受到路由器的何种处理方式。
  • 利用不同的优先级,ToS信息可以提供QoS ( Quality of Service,服务质量)功能。
  • 当多个数据包都在排队从同一个接口向外发送时,可以利用ToS值来确定发送顺序。



数据包总长(Total Length, 16比特)

  • 该字段表示IP包(包括IP报头和数据)的长度,以八位组(字节)为单位。
  • 由于该字段为16比特,因而IPv4数据包最大为65 535字节。大多数IPv4包都远小于该数值。



标识符(Identifier, 16比特)

  • 大多数经网络传送的消息都包含多个数据包,消息中的每个数据包都通过16比特标识符字段分配一个唯一值。
  • 当某个数据包需要被分段成两个或多个数据包时,所有被分段后的数据包的标识符字段都相同,这样就能帮助接收端重组这些分段。



标志(Flag, 3比特)

  • 第一个比特未使用。第二个比特称为DF (Don’t Fragment,不分段)比特,DF比特为1表示该数据包不应该被分段。
  • 第三个比特是更多分段标志(More Fragments Flag ),表示该分段是最后一个分段(比特为0)或者后面还有更多的分段(比特为1)。



分段偏移(Fragme Offset)

  • 数据包被分段后,该字段将指示该数据包的偏移量或者在原始数据中的位置,以8个八位组(64字节)为单位。



TTL ( 8比特)

  • TTL (Time to Live,生存时间)字段可以确保发生路由环路时数据包不会无止境的在网络中生存下去,每经过一台路由器,数据包的TTL值就递减1,当该字段值达到0时,该数据包就会被丢弃并向该数据包的源端发送一条ICMPv4超时(类型11)消息。



协议(Protocol, 8比特)

  • 该字段表示IP包中数据部分所承载的协议类型



报头校验和(Header Checksum ,16比特)

  • IP报头中的校验和可以为数据包传输过程中的损害提供保护机制,该字段并不是以太网中使用的复杂的CRC(Cyclic Redundancy Check,循环冗余校验),而是较为简单的针对IP报头的16比特校验和。



源地址(Source Address 32比特)

  • 源地址字段是数据包发起方的32比特IP地址。



目的地址(Destination Address 32比特)

  • 目的地址字段是最终目的地或数据包接收方的32比特IP地址,路由器利用该字段将数据包沿路径转发到最终目的地。



—–IPv6报文头——-

image.png



版本(Version, 4比特)

  • 版本字段,包含了IP报头的版本号,其值始终为6。



流量类别(Traffic Class, 8比特)

  • 流量类别字段的功能与IPv4报头中的ToS字段相似,并且长度与IPv4的ToS字段相同,只是名称发生的变化,流量类别字段用于识别并区分不同类别或优先级的IPv6数据包。



流标签(Flow Label, 20比特)

  • 流标签字段用来标记从源节点发送给一个或多个目的节点的一串IPv6数据包序列或IPv6数据包流,源节点可以利用该字段来标记那些请求IPv6路由器进行特殊处理(如实时业务)的数据包序列,流标签字段可以标识同一个流中的所有数据包,从而保证所有数据包都能得到IPv6路由器的相同处理。



净荷长度(Payload Length ,16比特)

  • 净荷长度字段表示IPv6基本报头后的净荷(也就是数据包的数据部分)长度,以八位组为单位。如果IPv6包有一个或多个扩展报头,那么该净荷长度字段的字节数也包含这些扩展报头,扩展报头被认为是净荷的一部分。
  • image.png



下一报头(Next Header, 8比特):

  • 跳数限制(Hop Limit 8比特):跳数限制字段与IPv4报头中的TTL字段相同,不过名字更能真实地反映路由器处理该字段的方式。



源地址(Source Address , 128比特):



目的地址(Destination Address , 128比特):





3.2 IPv6扩展报头

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

    • 一是标识IPv6包数据部分所承载的协议;
    • 二是指示扩展报头的存在。
  • 下一报头字段能够标识IPv6包数据部分所承载的协议,这一点与IPv4报头的协议字段相似。

  • 第二个作用是对IPv6报头的重要补充,用于指示被称为扩展报头的额外报头的存在。在必需的IPv6基本报头之后,可以有0个、1个或多个扩展报头。

  • 所有扩展报头中都有的一个字段是另外的下一报头字段,表示接下来还有其他扩展报头,或者是数据(净荷)协议(如TCP报文段)。因此,最后的扩展报头总是指示哪种协议被封装在数据部分(净荷),这一点与IPv4的协议字段相似。

  • image.png

  • 目前在RFC 2460中定义了6种扩展报头。

  • image.png

同一个数据包使用多个扩展报头时,这些扩展报头的出现顺序如下:

image.png

  • 同一个数据包使用多个扩展报头时,扩展报头出现顺序如下:



3.2.1 ipv6基本报头



3.2.2 逐条选项报头

  • 数据包传送路径上每台路由器都必须处理这些信息。
  • 可以通过扩展报头标准组中未定义的一组值对IPv6包进行补充定义,这组值也被称为

    TLV(Type-Length-Value,类型一长度一值)三元组。
  • 目前已经定义了两种使用选项的扩展报头:逐跳选项报头和路由选项报头。

image.png

  • 这两类扩展报头都有下一报头字段和报头扩展长度字段,然后是一个或多个选项组,每个选项都包含一组选项类型(Option Type)字段、选项长度(Option Length)字段和选项数据(Option Data)字段(即TL)。

image.png

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


例子


1.下一报头(Next Header, 8比特):

下一报头字段值为6,表明该报头后面是TCP报头,没有其他扩展报头。


2.报头扩展长度(Header Extension Length, 8比特):

表示以八位组为单位的逐跳选项报头的长度,不包含第一个八位组。可以有多个选项,每个选项都包含一个TLU(选项类型、选项长度和选项数据字段)。


3.选项类型(Option Type, 8比特):

表示该报头所承载的选项类型,十六进制值C2表明这是一个巨包净荷选项。


4.选项长度(Option Length, 8比特):

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


5.选项数据(可变长度):

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


6.TCP报文段:

由于只有一个选项且没有其他扩展报头,因而后面跟着的是TCP 报文段,从前面的逐跳选项扩展报头中下一报头值为6即可看出。如果使用了逐跳选项扩展报头,那么该报头必须紧跟在IPv6基本报头之后。



3.2.3 目的选项报头



3.2.4 路由报头

路由扩展报头允许数据包源端指定去往目的端的路径,该报头包含去往数据包目的端路径上的一台或多台中间路由器,路由扩展报头由前一个报头中的“下一报头” 值43来标识。

image.png

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



3.2.5 分段报头

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

image.png


1.下一报头(Next Header, 8比特):

表示原始数据包被分段后的数据的协议号。


2.保留(Reserved, 8比特):

该字段被保留,传输时被初始化为0,并且被接收端忽略。


3.分段偏移(Fragment Offset, 13比特):

表示被分段后的数据在该报头之后的相对偏移量或位置,以八位组为单位。与IPv4报头中的分段偏移相似,该字段的目的是指示接收端如何将该分段后的数据包与其他分段后的数据包进行排列。


4.Res(2比特):

该字段被保留,传输时被初始化为0,并且被接收端忽略。


5.M标志(M flag, 3比特):

M ( More Fragments,更多分段)标记用来表示是否是最后一个分段(比特0>或者后面还有更多分段(比特1),该子段与IPv4报头的更多分段标志(More Fragments Flag)相似。


6.标识符(Identification, 32比特):

该字段与IPv4报头的标识符字段相似,用来唯一的标识同一个原始数据包中的所有分段数据包,该字段从IPv4中的16比特扩充到IPv6中的32比特。



3.2.6 AH报头:提供数据包的真实性和完整性

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

  • AH ( Authentication Header,认证头);
  • ESP ( Encapsulating Security Payload,封装安全净荷)。

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

AH可以提供数据包的真实性和完整性保证,认证(Authentication)的作用是确保数据包的发送方和接收方身份都是真实的,完整性 (Integrity)的作用是保证数据包在发送途中未被更改。

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


传输模式

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


隧道模式

用于保护IP包的全部内容,包括IP报头。实现方式是将原始IP包(包括IP报头)封装到一个新的IP报头中,隧道端点作为新的源IP地址和目的IP地址,隧道端点可以是路由器或主机本身。

image.png



3.2.7 ESP报头:提供认证、完整性和加密功能



3.2.8 目的选项报头

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

  • 下一报头(Next Header , 8比特):用于标识目的选项扩展报头后面的报头

  • 类型,既可以是其他扩展报头,也可以是净荷协议。

  • 报头扩展长度(Header Extension Length,8比特):表示以八位组为单位的目的洗项扩展报头的长度,不包含第一个八位组。

  • 选项(可变长度):该字段包含一个和多个采取TLV编码的选项。

    • 选项类型(Option Type ,8比特):表示该报头所承载的选项类型。
    • 选项长度(Option Length , 8比特):表示选项数据字段中的字节数。
    • 选项数据(可变长度):即数据包的数据内容。



3.2.9 上层协议报头

**

**



3.3 IPv4与IPv6比较



3.3.1 IPv4与IPv6有关差异性

  • 数据包总长度(IPv4)净荷长度(IPv6):IPv4的总长度字段包含IPv4报头和数据部分,而IPv6的净荷长度字段仅指示数据部分(即净荷)的字节数,包括所有扩展报头,但不包括IPv6基本报头。
  • 报头校验和(IPv4):对于UDP校验和来说,在IPv4中是可选操作,而在IPv6中则是强制操作。



3.3.2 IPv4的Tos和IPv6的流量类别

IPv4:启用了3位IP优先级字段,但是没有推广应用;

IPv6:在流量类别中启用6位DSCP用来区分服务。



3.3.3 IPv6的流标签字段

流标签在IPv4中没有对应的字段。用来标记同一源节点发往一个或多个目的节点的一批IPv6包。 对这一批数据包做标记,可以使路由器以特定的方式处理这一批数据包,如按实时服务的待遇。 可以用于等价路径和负载均衡。



3.3.4 IPv4总长字段IPv6净载长度字段

IPv4总长度指明整个IPv4数据包的长度(包括包头和数据),单位是字节。

IPv6净载长度指明主包头之后的净载(即数据包的数据部分和可能的扩展包头),长度是字节。

image.png



3.3.5 IPv4和IPv6的MTU

传输链路所能传输的单个数据包的最大长度即位最大传输单元MTU(Maximum Transmission Unit)。

MTU也有最小值。IPv4规定为68字节,IPv6规定为1280字节。MTU最大值由所在链路决定。



3.3.6 IPv4和IPv6的分片机制

  • IPv4数据包在传输过程中,路由器收到的数据包大于外发接口的MTU,则会对数据包进行分片。即链路中的每一个路由器都可能对数据包进行分片。
  • IPv6中,只能由IPv6的源节点进行分片。
  • IPv6的源节点,必须能够知道从源节点到目的节点所以链路的MTU,即路径MTU。IPv6具有路径MTU发现机制。



3.3.7 IPv4协议字段和IPv6下一个头部字段

  • IPv4包头中的协议字段指明数据包中的净载所属的高层协议。 对应的功能在IPv6中,由下一个头部字段完成。

image.png

image.png



3.3.8 TCP和UDP的校验和

IPv4包头有校验和字段,每一个路由器收到包都要做校验和运算,若校验和验证失败,该包就要丢掉。

IPv6包头没有校验和。因为下一层的链路层和上一层的TCP和UDP都有校验机制。



【学习资料】



【01学习笔记】



【02课程实验】



【03其他资料】



版权声明:本文为weixin_44589991原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。