前言

RFC2460定义了IPv6数据报格式。

总体结构上,IPv6数据报格式与IPv4数据报格式是一样的,也是由IP报头和数据(在IPv6中称为有效载荷)这两个部分组成的。

但在IPv6数据报数据部分还可以包括0个或者多个IPv6扩展报头(Extension header)。

正文

1IPV6报文格式

如下图所示。IP报头部分固定为40字节长度,而有效载荷部分最长不得超过65535字节。

IPv6和IPv4之间的最大差别在于:IP地址的长度从32位到128位。

  • 通过裁剪IPv4报头中的某些字段,或把一些字段移入到扩展报头中,IPv6基本报头的总长度大大减小了。

  • IPv6使用固定长度的基本报头,从而简化了转发设备对IPv6报文的处理,提高了转发效率。

  • 尽管IPv6地址长度是IPv4地址长度的4倍,但IPv6基本报头的长度只有40字节,为固定的IPv4报文头长度(不包括选项字段)的2倍。

IPv6报头格式如下图所示:

2IPV6报文各字段作用

  • 版本(Version)

版本字段用来表示IP数据报使用的是IPv6协议封装,占4位,对应值为6(0110)。

  • 通信分类(Traffic Class)

通信分类字段用来标识对应IPv6的通信流类别,或者说是优先级别,占8位,类似于IPv4中的ToS(服务类型)字段。

  • 流标签(Flow Label)

流标签字段时IPv6数据报中新增的一个字段,占20位,可用来标记报文的数据流类型,以便在网络层区分不同的报文。

流标签字段有源节点分配,通过流标签、源地址、目的地址三元组方式就可以唯一标识一条通信流,而不用像IPv4那样需要使用五元组方式(源地址、目的地址、源端口、目的端口和传输层协议号)。

这样发动的最大好处有两点:

一是流标签可以和任意的关联,需要标识不同类型的流(可以是非五元组)时,无需对流标签做改动;

二是流标签在IPv6基本头中,使用IPSec时此域对转发路由器可见,因此转发路由器可以在使用IPv6报文IPSec的情况下仍然可以通过三元组(流标签、源地址、目的地址)针对特定的流进行QoS(质量服务)处理。

  • 有效载荷长度(PayLoad Length)

有效载荷长度字段是以字节为单位的标识IPv6数据报中有效载荷部分(包括所有扩展报头部分)的总长度,也就是除了IPv6的基本报头以外的其他部分的总长度,占20位。

  • 下一个头部(Next Header)

下一个头部字段用来标识当前报头(或者扩展报头)的下一个头部类型,占8位。

每种扩展报头都有其对应的值。下一个头部字段内定义的扩展报头类型与IPv4中的协议字段值类似,但在IPv6数据报中,紧接着IPv6报头的可能不是上层协议头部(当没有扩展报头或者为最后一个扩展报头时才是上层协议头),而是IPv6扩展报头。

这一机制下处理扩展报头更搞笑,因为标识了数据报中对应的上层协议或者扩展报头类型,转发路由器只需处理必须处理的扩展报头,提高了转发效率。

  • 跳数限制(Hop Limit)

跳数限制于IPv4报文中的TTL字段类似,指定了报文可以有效转发的次数,占8位。报文每经过一个路由器结点,跳数值就减1,当此字段值减到0时,则直接丢弃该报文。

  • 源地址(Source IP Address)

源IP地址字段标识了发送该IPv6报文源节点的IPv6地址,占128位。

  • 目的IP地址(Destination IP Address)

目的IP地址字段标识了IPv6报文的接受节点的IPv6地址,占128位。

3IPv6扩展报头

在各字段介绍中我们讲到了,IPv6报文中可以携带可选的IPv6扩展报头

IPv6扩展报头是跟在IPv6基本报头后面的可选报头。由于在IPv4的报头中包含了几乎所有的可选项,因此每个中间路由器都必须检查这些选项是否存在。

在IPv6中,这些相关选项被统一移到了扩展报头中,这样中间路由器不必处理每一个可能出现的选项(仅有“逐跳选项”报头是必须要处理的),提高了处理器处理数据报文的速度,也提高了其转发的性能。

IPv6扩展报头附加在IPv6报头目的IP地址字段后面,可以有0个,或者多个扩展报头。

IPv6扩展报头分类:

  • 逐跳选项头(Hop-by-hop Options Header)

本扩展报头类型值为0(在IPv6报头下一个头部字段中定义,下同)。

此扩展报头须被转发路径所有节点处理。

目前在路由告警(RSVP和MLDv1)与Jumbo帧处理中使用了逐跳选项头,因为路由告警需要通知到转发路径中所有结点,而Jumbo帧是长度超过65535字节的报文,传输这种报文需要转发路径中所有结点都能正常处理。

  • 目的选项头(Destination Options Header)

本扩展报头类型值为60。只可能出现在两个位置:
1. 路由头前,这是此选项头被目的节点和路由头中指定的结点处理;
2. 上层头前(任何的ESP头后),此时只能被目的结点处理。

移动IPv6中使用了目的选项头,称为家乡地址选项。

家乡地址选项由目的选项头携带,用以移动结点离开“家乡”后通知接受节点此移动结点对应的家乡地址。

接受节点收到带有家乡地址选项的报文后,会把家乡地址选项中的源地址(移动节点的家乡地址)和报文中源地址(移动节点的转交地址)交换,这样上层协议始终认为是在和移动节点的家乡地址通信,实现了移动漫游功能。

  • 路由头(Routing Header)

本扩展报头类型值为43,用于源路由选项和移动IPv6。

  • 分段头

本扩展报头类型值为44,用于标识数据报的分段,在IPv4中就有对应的字段。当源节点发送的报文超过传输链路MTU(源节点和目的节点之间传输路径的MTU)时,需要对报文进行分段时使用。

  • 认证头

本扩展报头类型值为51,用于IPSec,提供报文验证,完整性检查。

  • 封装安全有效载荷头

本扩展头类型值为50,用于IPSec,提供报文验证、完整性检查差和加密。

  • 上层头

这是用来标识数据报中上层协议类型,如TCP、UDP、ICMP等。

注意:

  • 目的选项头最多出现两次,一次在路由头前,一次在上层协议头前,其他选项头最多只能出现一次。

  • IPv6节点必须能够处理选项头(逐跳选项头除外,它固定只能紧随基本报头之后)在任意位置出现,以保证互通性。

总结

1、对比IPv4数据报头部格式可以看出,IPv6去除了IPv4报头中的头部长度、标识、标志、段偏移、校验和、选项、填充这么多字段,却只增加了流标签这一个字段,因此IPv6报头处理和IPv4报头处理相比大大简化,提高了处理效率。

2、IPv6为了更好地支持各种选项处理,提出了扩展头的概念,新增选项时不必修改现有的结构就能做到,理论上可以无限扩展,体现了优异的灵活性。

以上来源网络,如有侵权,联系删除!

icmp报文格式_IPV6报文格式和IPV4有什么区别?相关推荐

  1. 【计算机网络】传输层 : TCP 协议 ( TCP 协议特点 | TCP 报文段首部格式 | TCP 报文段控制位 )

    文章目录 一.TCP 协议 特点 二.TCP 报文段首部格式 三.TCP 报文段首部 666 控制位 一.TCP 协议 特点 TCP 协议 特点 : ① 面向连接 : TCP 协议的连接是 " ...

  2. MQTT 控制报文类型、功能及格式(报文结构) - 第2章

    目录 2.1 MQTT 控制报文的结构 2.2 固定报头 2.2.1 控制报文的类型 2.2.2 控制报文类型的标志位 2.2.3 剩余长度 2.3 可变报头 2.4 有效载荷 2.1 MQTT 控制 ...

  3. php 报文 数据格式,http报文格式详解

    HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP请求报文 一个HTTP请求报文由请求行(request ...

  4. HTTP报文结构详细讲解(HTTP请求报文和响应报文格式)

    HTTP报文结构 HTTP有两类报文: 请求报文-------从客户向服务器发送请求报文,如图6-12(a) 响应报文-------从服务器到客户的回答,如图6-12(b) 由于HTTP是面向文本的, ...

  5. LIN报文帧——类型与格式

    文章目录 一.LIN的报文帧类型 1.1 无条件帧(Unconditional Frame): 1.2 事件触发帧(Event Triggered Frame): 1.3 偶发帧(Sporadic F ...

  6. CANoe中用CAPL脚本按特定格式发送报文

    CANoe中用CAPL脚本按特定格式发送报文 需求 实验设备 实验环境 最近学习用CANoe软件测试CAN总线,纯新手,把最近的学习心得分享一下,欢迎大佬指正. 需求 1)仿真开始报文默认以100ms ...

  7. tcp报文格式udp报文格式详解

    http://blog.csdn.net/a19881029/article/details/29557837 TCP(Transmission Control Protocol)传输控制协议是一种面 ...

  8. TCP报文格式+UDP报文格式+MAC帧格式

    TCP报文格式+UDP报文格式+MAC帧格式 TCP和UDP的区别: 1)TCP是面向连接的,而UDP是无连接的 2)TCP提供可靠服务,而UDP不提供可靠服务,只是尽最大努力交付报文 3)TCP面向 ...

  9. Linux 下C/C++实现发送ICMP和ICMPv6(报文分析)

    当终端系统无法到达目的地的IP数据包时,为了方便获取诊断信息.一种称为Internet控制消息协议(ICMP)的特殊协议与IP结合使用,以提供与IP协议层配置和IP数据包处理相关的诊断和控制信息.主要 ...

最新文章

  1. 刷新4项文档智能任务纪录,百度TextMind打造ERNIE-Layout登顶文档智能权威榜单
  2. 小学计算机国培研修总结,小学数学国培研修总结
  3. 登录日志怎么实现_【创新攻关】安全室构建异常登录行为检测审计模型
  4. centos6安装mysql并远程连接_Ubantu下MySQL安装、部署和远程连接
  5. 入夏多吃这些“杀菌菜”
  6. 01.神经网络和深度学习 W1.深度学习概论
  7. salt-api安装与配置
  8. C++类的定义和创建
  9. 聊天窗口,新加的内容直接 往上顶
  10. Qt5学习笔记之计时器
  11. Paxos算法(一)—Basic Paxos
  12. matlab z变换 差分,用matlab绘制差分方程Z变换
  13. EKF SLAM学习笔记02
  14. IE浏览器无法添加进信任站点和受限站点,添加后被还原
  15. Mysql 和 Oracle 的基本知识总结
  16. stm32 学习--Stm32F407 SPI1 全双工DMA 收发数据
  17. 囤内存条,比买基金、白酒还赚钱
  18. 骁龙695和天玑900处理器哪个好
  19. vb html 乱码,vb输出html乱码怎么办
  20. 如何查看电脑的配置-卖电脑必备(尤其二手)

热门文章

  1. MATLAB:图像半色调技术简介
  2. Intel GPU及NVIDIA GPU对视频编解码支持情况
  3. gdb C++程序coredump不显示行号问题
  4. Hyperledger Fabric Java SDK最新教程
  5. c++ 利用boost 实现文件操作
  6. QT配置opencv开发环境
  7. html转word保留样式_译员必备 | 初识Word格式标记
  8. winsever 2008 r2 管理员账号没有权限_钉钉管理员攻略—主管理员①
  9. c语言随机产生100个字母,C语言实现产生100以内的随机数做加减运算
  10. linux32安装pgsql,Linux安装pgsql