IPV6基本知识准备

link MTU  -  the maximum transmission unit, i.e., maximum packet size in octets, that can be conveyed over a link.
path MTU  -  the minimum link MTU of all the links in a path between a source node and a destination node.
 

IPv6报文格式

IPv6报文由IPv6基本报头、IPv6扩展报头以及上层协议数据单元三部分组成。

上层协议数据单元一般由上层协议报头和它的有效载荷构成,有效载荷可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。

IPv6基本报头

IPv6基本报头有8个字段,固定大小为40字节,每一个IPv6数据报都必须包含报头。基本报头提供报文转发的基本信息,会被转发路径上面的所有设备解析。
Ipv6基本报文头格式如下:
IPv6报头格式中主要字段解释如下:
  • Version:版本号,长度为4bit。对于IPv6,该值为6。
  • Traffic Class:流类别,长度为8bit。等同于IPv4中的TOS字段,表示IPv6数据报的类或优先级,主要应用于QoS。
  • Flow Label:流标签,长度为20bit。IPv6中的新增字段,用于区分实时流量,不同的流标签+源地址可以唯一确定一条数据流,中间网络设备可以根据这些信息更加高效率的区分数据流。
  • Payload Length:有效载荷长度,长度为16bit。有效载荷是指紧跟IPv6报头的数据报的其它部分(即扩展报头和上层协议数据单元)。该字段只能表示最大长度为65535字节的有效载荷。如果有效载荷的长度超过这个值,该字段会置0,而有效载荷的长度用逐跳选项扩展报头中的超大有效载荷选项来表示。
  • Next Header:下一个报头,长度为8bit。该字段定义紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型,或者上层协议数据单元中的协议类型。
  • Hop Limit:跳数限制,长度为8bit。该字段类似于IPv4中的Time to Live字段,它定义了IP数据报所能经过的最大跳数。每经过一个设备,该数值减去1,当该字段的值为0时,数据报将被丢弃。
  • Source Address:源地址,长度为128bit。表示发送方的地址。
  • Destination Address:目的地址,长度为128bit。表示接收方的地址。
IPv6和IPv4相比,去除了IHL、identifiers、Flags、Fragment Offset、Header Checksum、 Options、Paddiing域,只增了流标签域,因此IPv6报文头的处理较IPv4大大简化,提高了处理效率。另外,IPv6为了更好支持各种选项处理,提出了扩展头的概念,新增选项时不必修改现有结构就能做到,理论上可以无限扩展,体现了优异的灵活性。下面为读者介绍IPv6扩展报头的一些信息。

IPv6扩展报头

在IPv4中,IPv4报头包含可选字段Options,内容涉及security、Timestamp、Record route等,这些Options可以将IPv4报头长度从20字节扩充到60字节。在转发过程中,处理携带这些Options的IPv4报文会占用设备很大的资源,因此实际中也很少使用。

IPv6将这些Options从IPv6基本报头中剥离,放到了扩展报头中,扩展报头被置于IPv6报头和上层协议数据单元之间。一个IPv6报文可以包含0个、1个或多个扩展报头,仅当需要设备或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展头。与IPv4不同,IPv6扩展头长度任意,不受40字节限制,这样便于日后扩充新增选项,这一特征加上选项的处理方式使得IPv6选项能得以真正的利用。但是为了提高处理选项头和传输层协议的性能,扩展报头总是8字节长度的整数倍。

当使用多个扩展报头时,前面报头的Next Header字段指明下一个扩展报头的类型,这样就形成了链状的报头列表。如图6-8所示,IPv6基本报头中的Next Header字段指明了第一个扩展报头的类型,而第一个扩展报头中的Next Header字段指明了下一个扩展报头的类型(如果不存在,则指明上层协议的类型)。扩展报头格式如图6-8所示:

图6-8  IPv6扩展报头格式

IPv6扩展报头中主要字段解释如下:
  • Next Header:下一个报头,长度为8bit。与基本报头的Next Header的作用相同。指明下一个扩展报头(如果存在)或上层协议的类型。
  • Extension Header Len:报头扩展长度,长度为8bit。表示扩展报头的长度(不包含Next Header字段)。
  • Extension Head Data:扩展报头数据,长度可变。扩展报头的内容,为一系列选项字段和填充字段的组合。

目前,RFC 2460中定义了6个IPv6扩展头:逐跳选项报头、目的选项报头、路由报头、分段报头、认证报头、封装安全净载报头。见下表

报头类型 对应的Next Header字段值 描述
逐跳选项报头 0 该选项主要用于为在传送路径上的每跳转发指定发送参数,传送路径上的每台中间节点都要读取并处理该字段。逐跳选项报头目前的主要应用有以下三种:
  • 用于巨型载荷(载荷长度超过65535字节)。
  • 用于设备提示,使设备检查该选项的信息,而不是简单的转发出去。
  • 用于资源预留(RSVP)。
目的选项报头 60 目的选项报头携带了一些只有目的节点才会处理的信息。目前,目的选项报文头主要应用于移动IPv6。
路由报头 43 路由报头和IPv4的Loose Source and Record Route选项类似,该报头能够被IPv6源节点用来强制数据包经过特定的设备。
分段报头 44 同IPv4一样,IPv6报文发送也受到MTU的限制。当报文长度超过MTU时就需要将报文分段发送,而在IPv6中,分段发送使用的是分段报头。
认证报头 51 该报头由IPsec使用,提供认证、数据完整性以及重放保护。它还对IPv6基本报头中的一些字段进行保护。
封装安全净载报头 50 该报头由IPsec使用,提供认证、数据完整性以及重放保护和IPv6数据报的保密,类似于认证报头。
 
IPv6扩展报头规约

当超过一种扩展报头被用在同一个分组里时,报头必须按照下列顺序出现:

  • IPv6基本报头

  • 逐跳选项扩展报头

  • 目的选项扩展报头

  • 路由扩展报头

  • 分段扩展报头

  • 认证扩展报头

  • 封装安全有效载荷扩展报头

  • 目的选项扩展报头

  • 上层协议数据报文

路由设备转发时根据基本报头中Next Header值来决定是否要处理扩展头,并不是所有的扩展报头都需要被转发路由设备查看和处理的。

除了目的选项扩展报头可能出现一次或两次(一次在路由扩展报头之前,另一次在上层协议数据报文之前),其余扩展报头只能出现一次。

 

 

 

 

 

posted @ 2020-01-06 18:50  deeojunkie  阅读(1413)  评论(0编辑  收藏  举报