摘要:
本文给出IPv4与IPv6数据报格式示意图,并整理了各个字段含义,最后对比IPv4与IPv6数据报格式的区别。

一、IPv4数据报

图1 IPv4数据报格式
版本号(version)
不同的IP协议版本使用不同的数据报格式。
首部长度(HL, Internet Head Length)
确定IP数据报中数据部分实际从哪里开始,包含可变数量的选项。若IP数据报没有包含选项,则IP数据报首部长度为20字节。
服务类型(TOS, Type Of Service)
更好地服务不同类型IP数据报(如实时数据报IP电话应用、非实时通信流FTP),Cisco将TOS前3位标识不同服务等级,即优先级。
数据报长度(TL, Total Length)
IP数据报长度,即首部+数据。
分片:标识(identification)、标志(flags)、段位移(Fragment Offset)
这3个字段跟IP分片有关,当目的主机从同一个源收到一批数据报时,需要确定这些数据报是完整数据报还是分片后的数据报,数据报首部标识字段解决这个问题,检查数据报的标识号确定哪些数据报真正是同一个较大数据报的片;如何判断最后一个分片已收到,数据报首部标志字段解决这个问题,将最后一片的标志为0,其他标记为1;如何顺序重组这些片,这就需要记录每个片的在数据报有效净荷的偏移量,这也确定了片是否丢失。若丢失某些片,则丢弃这个不完整的数据报(不会交给传输层)。需要可靠传输怎么办呢,由传输层让源重传原始数据摄中的数据(如TCP)。
寿命(TTL, Time To Live)
每次数据报经过一台路由器时,该字段的值减1,若TTL字段减为0,则丢弃该数据报,从而确保数据报不会永远在网络循环。
上层协议(Protocol)
该字段用于指明IP数据报的数据部分应该交给哪个传输层协议(6为TCP、17为UDP)。
首部检查和(Header Checksum)
只是对IP首部进行检验,对整个TCP/UDP报文段检验交由TCP/UDP完成。将首部中的每两个字节当作一个数,用反码运算对这些数求和,该和按1补码值存放在检查和字段。当路由器收到IP数据报时,计算其首部检查和,与该字段值比较,若出错则丢弃该数据报。
注:因为TTL字段及选项字段可能改变,所以每个路由器上的检查和都须重新计算并存放在原处。(检查后,再更新)
源和目的IP地址(Source/Destination Address)
选项(Options)
选项字段允许IP首部被扩展,由此导致数据报首部长度可变,故不能预先确定数据字段从何开始,同时也使路由器处理一个IP数据报所需时间差异很大(有的要处理选项,有的不需要)。
数据(Data)
当使用TCP/UDP协议时,数据即为传输层报文段(TCP/UDP)。数据字段也可承载其他类型数据,如ICMP报文段。
二、IPv6数据报

图2 IPv6数据报格式
版本号(version)
不同的IP协议版本使用不同的数据报格式。
通信量等级(Traffic Classes)
使得源节点和路由器能够识别IPv6信息包的优先级。与IPv4服务类型TOS字段含义类似。
流标签(Flow Label)
标记那些需要IPv6路由器特殊处理(如一种非默认服务质量或实时服务)的信息包顺序。
有效负载长度(Payload Length)
定长40字节数据报首部后面的字节数量,包括扩展报头和负载数据,即数据报长度-40。
下一个首部(Next Header)
当IPv6没有扩展报头时,该字段的作用和IPv4的上层协议字段一样。当含有扩展报头时,该字段的值即为第一个扩展报头的类型。
跳限制(Hop Limit)
转发数据报的每台路由器对该字段的值减1,若减为0则丢弃该数据报。
源和目的IP地址(Source/Destination Address)
数据(Data)
当数据报到达目的地时,该有效载荷就从IP数据报移出,并交给下一个首部字段中指定的协议。
源和目的IP地址(Source/Destination Address)
选项(Options)
选项字段允许IP首部被扩展,由此导致数据报首部长度可变,故不能预先确定数据字段从何开始,同时也使路由器处理一个IP数据报所需时间差异很大(有的要处理选项,有的不需要)。
数据(Data)
当使用TCP/UDP协议时,数据即为传输层报文段(TCP/UDP)。数据字段也可承载其他类型数据,如ICMP报文段。

三、区别
3.1 首部长度
首部长度可变,IPv4首部的选项字段允许IP首部被扩展,由此导致数据报首部长度可变,故不能预先确定数据字段从何开始,同时也使路由器处理一个IP数据报所需时间差异很大(有的要处理选项,有的不需要)。基于此,IPv6采用固定40字节长度的报头长度(称基本报头)。IPv6如何实现IPv4选项字段类似的功能,答案是扩展报头,并由IPv6基本报头的下一个首部指向扩展报头(如果有的话)。路由器不处理扩展报头,提升了路由器处理效率。
3.2 分片/重组
IPv6,分片与重组只能在源与目的地上执行,不允许在中间路由器进行。分片与重组是个耗时的操作,将该功能从路由器转移到端系统,大大加快了网络中的IP转发速率。那,如果路由器收到IPv6数据报太大而不能转发到出链路上怎么办?该路由器丢弃该包,并向发送发发回一个"分组太大"的ICMP差错报文,于是发送发使用较小长度的IP数据报重发数据。
3.3 首部检查和
每个路由器上,IPv4首部检查和都需要重新计算,是一项耗时操作。加之,传输层和链接层协议执行了检验操作,网络传输可靠性提升,所以IPv6不进行首部检查和,从而更快速处理IP分组。

既然IPv6有如此之多优势,那么,接下来的问题,如何从IPv4向IPv6迁移?

参考资料:
[1] 《TCP/IP指南》
[2] 《计算机网络--自顶向下方法与Internet特色》[M].
[3] 基于6LoWPAN的IPv6无线传感器网络的研究与实现[D].上海交通大学.
IPv4g和IPv6数据报格式visio原文件 IPv4g和IPv6数据报格式.rar

from:http://blog.chinaunix.net/uid-9112803-id-3206178.html

IPv4与IPv6数据报格式详解相关推荐

  1. IPv4 和 IPv6 数据报格式详解

    IPv4 报文头格式及各字段功能 IPv4 报头格式 各字段功能: 1.版本号(Version):长度 4 bit .标识目前采用的 IP 协议的版本号.一般的值为 0100(IPv4),0110(I ...

  2. IPv4 和 IPv6 报文格式详解

    文章目录 1 概述 2 报文格式 2.1 IPv4 2.2 IPv6 2.3 两者区别 3 网工软考真题 1 概述 2 报文格式 2.1 IPv4 中文名 英文名 长度 bit(位) 解释 版本 Ve ...

  3. IPv4与IPv6数据报格式

    IPv4: IPv4数据报中的字段: 版本号:规定了数据报的IP协议版本,通过查看版本号,路由器能够确定如何解释IP数据报 的剩余部分,因为不同IP版本使用不同的数据报格式. 首部长度:IPv4数据报 ...

  4. 【Linux网络编程】IP 数据报格式详解

    IP 数据报首部 TCP/IP 协议定义了一个在因特网上传输的包,称为 IP 数据报 (IP Datagram).这是一个与硬件无关的虚拟包,由首部和数据两部分组成. 首部的前一部分是固定长度,共 2 ...

  5. 【Linux网络编程】TCP 和 UDP 数据报格式详解

    TCP 报文格式 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. TCP 报文段的报头有 10 个必需的字段和 ...

  6. IP协议数据报格式详解

  7. IPv4数据报格式和Ipv6数据报格式(长文,详细解释每个字段)

    IPv4数据报介绍 IPv3数据报结构 版本号.这4比特规定了数据包的IP协议版本.通过查看版本号,路由器能够确定如何 解释IP数据报的剩余部分.因为不同版本的IP数据包的格式是不一样的. 首部长度. ...

  8. IPv4和IPv6报文格式介绍和对比

    IPv4和IPv6报文介绍和对比 IPv4数据报 IPv4报文详解 IPv6数据报 IPv6报文详解 扩展头部详解 IPv4和IPv6报文详细对比 IPv4数据报 IPv4报文详解 版本Version ...

  9. TCP数据包协议格式详解

    出一个专栏把通信协议搞一下吧,万物互联的根本呀. IP 版本4位:4(二进制0100)表示IPv4,6(二进制0110)表示IPv6 报头长度(单位4byte):因为选项长度不确定,取值范围是5-15 ...

  10. 清默网络——IPV6的地址详解

    IPV6的地址详解 IPv6地址共128位,被分割成8个16位段来表示,采用冒号16进制表示. IPv6的地址类型: 1.单播(unicast) 2.任意播(anycast) 3.多播(multica ...

最新文章

  1. 开源造轮子:一个简洁,高效,轻量级,酷炫的不要不要的canvas粒子运动插件库...
  2. Cloud Foundry技术资料汇总
  3. 通过分析来精简你的测试的6种方法(译)
  4. 白话科普系列——双十一,竟然是一场有“预谋”的DDoS攻击?
  5. Pyhton随机生成测试数据模块faker
  6. Markdown 工具推荐
  7. pyqt5框内显示图像_【好工具】VisualStudio下图像调试神器
  8. 云计算示范项目_瑞松科技基于工业互联网的设备运维及工艺管理云平台成功入选2020年工业互联网试点示范项目...
  9. java 千位分隔,如何在Java中设置千位分隔符?
  10. python 函数调用之后,赋值不变,只是引用。全局变量和局部变量(一分钟读懂)
  11. HTML5 开源游戏引擎 LayaAir
  12. 百度统计挂了,分布式数据库异常引起,数据显示为空!
  13. 海洋工作室——网站建设专家:只有十句话,看了十分钟(完整版)[不应该只看十分钟!!!]...
  14. installshield中用release wizard打包.net framework 1.1中文版
  15. 随手记---Python字典 del用法
  16. 图像处理之调整亮度与对比度
  17. 《钢构CAD》不断致力于帮助用户取得更多成就
  18. 数据结构:图(基础概念及操作,图文解释)
  19. 如何批量将图片转换为 Excel 文档
  20. python键盘控制_python如何直接控制鼠标键盘

热门文章

  1. Java Web servletConfig 对象
  2. 洛谷 P1509 找啊找啊找GF(复习二维费用背包)
  3. 关于myeclipse中启动项目(server为welogic10)报valid license.bea错误的问题解决方式...
  4. 北京电子科技学院(BESTI)实验报告5
  5. 10.Java面向对象(一)
  6. 多线程 Threading Multiprocessing(Python)
  7. 决策树算法小结(二) C4.5原理及代码实现
  8. ceph对接openstack环境
  9. 远程桌面连接--“发生身份验证错误。要求的函数不受支持
  10. 关于yum网络版仓库(本地yum仓库的安装配置,如果没网了,做一个局域网内的yum仓库)...