IPV6报文详解

本文详细介绍了IPv6报文的组成,包括基本报头的各个字段功能,以及IPv6扩展报头的设计,展示了IPv6如何通过简化处理和扩展头机制提高效率与灵活性。重点讨论了QoS、FlowLabel和IPv6扩展头的典型应用和规约。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言:

IPV6报文格式

IPV6基本报头

IPV6扩展报头


前言:

        首先IPV6是属于网络层的一种协议,作为下一代IP协议,而想要学习一种协议就必不可少的需要去具体的研究协议报文中的各个参数以及其对应的功能作用。

IPV6报文格式

        IPv6报文由IPv6基本报头、IPv6扩展报头以及上层协议数据单元三部分组成。上层协议数据单元一般由上层协议报头和它的有效载荷构成,有效载荷可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。

IPV6基本报头

每一个IPV6数据报文都必须包含基本报头,其长度固定为40字节基本报头提供报文转发的基本信息,会被转发路径上所有的路由器进行解析。

基本报头格式如下:

报头中主要字段含义:

1、Version:协议版本号,长度为4bit。对于IPv6,该值为6—二进制数值为0110;

2、Traffic Class:流类别,长度为8bit。等同于IPv4中的TOS字段,表示IPv6数据报的类或优先级,主要应用于QoS;

  • QoS(Quality of Service)即服务质量。在有限的带宽资源下,QoS为各种业务分配带宽,为业务提供端到端的服务质量保证。想要了解QOS的可以参考——什么是QOS?

3、Flow Label:流标签,长度为20bit。IPv6中的新增字段,用于区分实时流量,不同的流标签+源地址可以唯一确定一条数据流,中间网络设备根据这些信息能更加高效率的区分数据流;

  • 该字段是IPv6包头中最具革命性的改动,原先路由器识别某一IPv4数据流需要(源地址、目的地址、协议号、源端口、目的端口)5元组来标识一条数据流,这种方法要求路由器读取高层如TCP/UDP头部的某些字段,会增加路由器的处理开销,而且对于非TCP、UDP的流,如OSPF、RSVP、ICMP等流量就无法使用5元组来标识了。在IPv6中,Flow Label内置在IPv6包头中,标识流可以只采用最简单的(源地址、目的地址、Flow Label)3元组就可以标识一条流,不仅提高了效率,而且能够识别OSPF、RSVP、ICMPv6等不基于TCP/UDP的流量。

4、Payload Length:有效载荷长度,长度为16bit。有效载荷是指紧跟IPv6报头的数据报的其它部分(即扩展报头和上层协议数据单元)。该字段只能表示最大长度为65535字节的有效载荷。如果有效载荷的长度超过这个值,该字段会置0,而有效载荷的长度用逐跳选项扩展报头中的超大有效载荷选项来表示。——指除去包头的IP包长度,也就是data的长度,但如果有扩展包头,那么拓展包头也算在payload length里面;

5、Next Header:下一个报头,长度为8bit。该字段定义紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型,或者上层协议数据单元中的协议类型;

6、Hop Limit:跳数限制,长度为8bit。该字段类似于IPv4中的Time to Live(TTL)字段,它定义了IP数据报所能经过的最大跳数。每经过一个设备,该数值减去1,当该字段的值为0时,数据报将被丢弃;

7、Source Address:源地址,长度为128bit。表示发送方的地址;

8、Destination Address:目的地址,长度为128bit。表示接收方的地址—用来网络层逻辑寻址。

  • IPv6和IPv4相比,去除了IHL、identifiers、Flags、Fragment Offset、Header Checksum、 Options、Padding域,只增了流标签域,因此IPv6报文头的处理较IPv4大大简化,提高了处理效率。另外,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字段指明下一个扩展报头的类型,这样就形成了链状的报头列表。如图2所示,IPv6基本报头中的Next Header字段指明了第一个扩展报头的类型,而第一个扩展报头中的Next Header字段指明了下一个扩展报头的类型(如果不存在,则指明上层协议的类型)。

扩展报头格式如图2所示:

IPv6扩展报头中主要字段解释如下:

  1. Next Header:下一个报头,长度为8bit。与基本报头的Next Header的作用相同。指明下一个扩展报头(如果存在)或上层协议的类型。
  2. Extension Header Len:报头扩展长度,长度为8bit。表示扩展报头的长度(不包含Next Header字段)。
  3. 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值来决定是否要处理扩展头,并不是所有的扩展报头都需要被转发路由设备查看和处理的。

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

### IPv6 报文格式介绍 #### 基本报头结构 IPv6基本报头具有固定的40字节长度,包含8个字段[^3]。这种固定长度的设计简化了路由器处理过程,提高了转发效率。 - **版本 (Version)**: 占4位,表示IP协议的版本号,在这里恒定为`6`。 - **流量类别 (Traffic Class)**: 占8位,用于区分不同优先级的数据流,有助于QoS(服务质量)管理。 - **流标签 (Flow Label)**: 占20位,用来标记特定数据流以便于中间节点快速识别并提供特殊服务。 - **有效载荷长度 (Payload Length)**: 占16位,指示紧跟在其后的上层协议数据单元(Payload)的总长度(不包括基本报头),单位为字节。 - **下一个头部 (Next Header)**: 占8位,指明紧随其后的部分是什么类型的头部——可以是指向上层协议的应用程序数据或者是某种形式的扩展头部。 - **跳限 (Hop Limit)**: 占8位,定义了一个数据包在网络上传输的最大跳跃次数;每当它经过一个路由设备时此计数值减一,当达到零则丢弃该数据包。 - **源地址 (Source Address)**: 占128位,记录发送方的完整IPv6地址。 - **目的地址 (Destination Address)**: 同样占用128位空间存储接收端完整的IPv6地址信息。 ```plaintext +-+ |Version| Traffic Class | Flow Label | +-+ | Payload Length | Next Header | Hop Limit | +-+ | | + + | Source Address | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | Destination Address | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` #### 扩展头部支持 除了上述的基础报头外,IPv6还引入了一种灵活多变的扩展头部机制来满足各种复杂需求而不必修改核心报头本身。这些可选的附加组件能够按需串联在一起形成链表式的结构,并通过“下一个头部”字段链接起来。常见的几种类型包括但不限于: - 路由选择头部(Routing Header): 支持基于显式路径或多播传输模式下的逐跳指令集; - 分段头部(Fragment Header): 当原始消息尺寸超过沿途最小MTU限制时启用分片功能; - 认证头部(Authentication Header, AH): 提供数据完整性验证与抗重放攻击保护措施; - 封装安全净荷(Encapsulating Security Payload, ESP): 实现加密通信保障隐私性和机密性。 每类扩展头部都有各自独特的内部布局和语义含义,它们共同构成了丰富的功能性补充体系,使得IPv6不仅具备更强的安全防护能力而且更加适应未来互联网发展的趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Smiling Mr. Rui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值