IPV4 数据报头部格式

图解


图片来自:http://blog.163.com/qhj4433210@126/blog/static/165975282201592251248584/


图片来自:http://blog.163.com/qhj4433210@126/blog/static/165975282201592251248584/

前言

发送端的网络层在收到它的上一层——传输层发来的数据段时,需要通过网络层协议将其封装成数据报,也就是加上网络层IP协议(在此仅以IP协议为例进行介绍)头部。IP协议头部主要是源和目的网络的IP地址,以便可以数据分段传输到目的网络中。然后数据包向下传输,到了数据链路层后又要封装成数据帧。
与在数据帧格式中包括帧头和数据部分类似,一个IP数据报也包括报头和数据这两个部分,如上图所示。其中数据部分就是来自传输层的完整数据段,而报头部分是为了正确传输数据报而增加的网络层IPV4/IPV6协议信息。

格式

版本(Version)

版本字段指定了IP数据报中使用的IP协议版本,占四位。如过协议是IPV4,则值为0100。

头部长度(Header Length)

头部长度字段指示IP数据报头部的总长度,IP数据报头部的总长度以4字节为单位,该字段占4位。当报头中无选项字段时,报头的总长度为5,也就是5×4=205×4=20字节。但报头长度必须是32位(四字节)的整数倍,如果不是,需要在选项字段的填充(PAD)字段中补0凑齐。

区分服务(Differentialted Services)

最开始IP数据报的这个字段为优先级和服务类型字段,又称为服务类型(ToS)字段,用于表示数据报的优先级和服务类型,占八位。它包括一个3位长度的优先级、4位长度的标志位。标志位分别是D(Delay延迟)、T(Throughput吞吐量)、R(Reliability可靠性)和C(Cost开销),分别表示延迟、吞吐量、可靠性和开销值,用来获得更好的服务。最高1位未用。
1998年IETF在RFC2474中把IP数据报中ToS字段改名为服务字段,同样为8位,前6位构成DSCP(Different Services Code Point,区分服务码点),是IP优先级和服务类型字段的组合,定义了0~63共64个优先级。最后两位未使用。无论是哪种版本,该字段只有在使用区分服务时才起作用,如果没有区分服务,则该字段值为0。

总长度(Total Length)

总长度字段标识整个IP数据报的总长度,包括报头和数据部分,整个IP数据报的总长度以字节为单位,该字段占16位。由此可得出,IPv4数据报的最大长度为216−1216−1字节即65535字节(64KB)。
说明:在网络层下面的每一种数据链路层都有自己的格式,其中包括表示数据字段的最大长度,这称为最大传送单元(Maximum Transfer Unit,MTU)。当一个数据报封装成链路层的帧时,此数据报的总长度(包括报头和数据部分)一定不能超过下面的数据链路层的MTU值

标识(Identification)

标识字段用于表示IP数据报的标识符,占16位,每个IP数据报有一个唯一的标识符。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给整个标识字段。但整个标识并不是序号,因为IP是无连接服务,数据报不存在按序接受的问题。当数据报由于长度超过下面数据链路层的MTU(最大传输单元)值而必须分段的时候,这个标识符的值就被复制到所有的数据报分段的标识字段中。相同的标识字段的值分段后的各数据报分段最后能正确地组装成原来的数据报。

标志(Flags)

标志字段用以指出该IP数据报后面是否还有分段,也就是这个字段时分段标志,占3位。目前只有前两位有意义:最低以为记为MF(More Fragment),如果MF=1,则表示后面还有分段,如果MF=0表示这已是某个数据报的最后一个分段;中间一位记为DF(Don’t Fragment),当DF=1时表示不允许分段,DF=0表示允许分段;最高1位没有使用。

段偏移(Fragment Offset)

段偏移字段用以指出该分段在数据报中的相对位置,也就是说,相对于用户数据字段的起点,该分段从何处开始,占13位。若有分段,段偏移以8字节为偏移单位,即每个分段的长度一定是8字节(64位)的整数倍。第一个分段偏移值就是0 0000 0000 0000,如果第一个分段一共是64字节,则0 0000 0000 1001,相当于10进制数的9,因为从第9个“8字节”数据块开始的。如果没有分段,则该字段值为0。

生存时间(Time To Live)

生存时间字段用来标识IP数据报在网络中传输的有效期,以秒来计数,占8位。最初的设计是以秒为单位,没经过一个路由器时,就在TTL(Time To Live)中减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1s,就把TTL值减1。TTL的建议值是32s,最长是28−1=25528−1=255s。现在通常认为这个TTL是指数据报允许经过的路由器数,每经过一个路由器,则TTL减1,当TTL值为0时,就丢弃这个数据报。设定生存时间是为了防止数据报在网络中无限制地循环转发。

协议(Protocol)

协议字段用来标识此IP数据报在传输层所采用的协议类型(如TCP、UDP或ICMP等等),以便使目的主机的IP层直到应将数据部分上交给哪个处理过程,占8位。如TCP的协议号是6,等于二进制的0000 1010,UDP的协议号是17,等于二进制的0001 0001。

校验和(Checksum)

校验和字段用来检验IP数据报的报头部分(不包过“数据”部分)在传输到接收端后是否发生了变化,占16位。这是因为数据报每经过一个路由器,路由器都要重新计算一下报头检验和(因为一些字段,如生存时间、标识、段偏移等都可能发生变化),不检验数据部分可减少计算的工作量。

检验和的计算方法

利用校检和字段检验报头部分数据正确性的基本原理是:现在发送端校检和字段中填上一个特定的值,然后再接收端把包括校检和字段在内的报头部分进行二进制反码求和,再取反,如果结果为0,则表示报头部分在传输过程中没有发生变化,否则表示在传输过程中出现了差错。从以上可以看出,这里最关键的是在发送端计算出这个校检和的值。步骤如下:
1. 把IP数据报报头中的校检和字段置0。
2. 把头部看成由16位(2字节)位单位得数字组成,对每16位的二进制反码进行求和。如报头长度不是16位的整数倍数,则用0填充到16位的整数倍数。若此时校验和字段值为0,可以不计,因为0的反码仍为0。
3. 以上得到的结果就是我们要求的校验和字段值,系统自动将其填入IP数据报报头的检验和字段中。
4. 在接收端中,同样按照以16位为单位,对IP数据报报头部分进行二进制反码求和,再取反,如果结果为0,表示报头部分在传输过程中没有发生变化,否则表示发生了差错。但要注意,此时因位校验和字段已不再是0了,而是等于除了检验和字段外的其他字段的反码之和。现在在对校验码和字段值取反求和,再与其他字段的反码之和(相当于原来“校验和”字段的值)相加,结果肯定是全为1,因为这两个值互为反码;再取反后,结果肯定为0。这就是校验和的基本原理。

例子

假设有3个数(为了简便,在此均用4位表示):2(0010)、3(0011)、C(代表校验和字段值),计算C,即求2和3的反码之和,得到9(1001)。现在假设把这3个数(2,3,C)传送到接收端。在接收端也要对这3个数进行反码求和。因为2和3这两个的反码之和我们在计算C时已经计算过了,就是9(1001),现在只需要对C(校验和字段值)进行求反,得到6(0110)。把1001和0110相加,得到15(1111)。再取反,得到0(0000)。这就是这3个数在传输过程中没有出现差错的情况下得到的,这就是校验和的校验原理。

源地址/目的地址(Source Address/Destination Address)

源地址/目的地址这两个字段分别表示该IP数据报发送者和接受者的IP地址,各占32位。在这个数据报传送过程中,无论经过什么路由,无论如何分段,此两字段一直保持不变。

选项(Option)

选项字段支持各种选项,提供扩展余地。根据选项的不同,该字段时可变长,从1字节到40字节。用来支持拍错、测量以及安全等措施。作为选项,用户可以使用,也可以不使用它们。但作为IP协议的组成部分,所有实现IP协议的设备都必须能处理IP选项。在使用选项的过程中,如果造成了IP数据报的报头不是32位的整数倍,这时需要后面的填充字段凑齐。如果恰好是整数倍,则不需要填充字段。

Cisco ❀ IPV4协议数据报头部相关推荐

  1. 【网络】IPV4数据报头部格式

    文章目录 前言 前言 系列文章: <Wireshark分析Netty建链过程( tcp三次握手.osi模型)> <IPV4数据报头部格式> <Wireshark分析RST ...

  2. Internet网际协议---IPv4协议

    IPv4协议 一.IPv4协议简介 二.IPv4数据报格式(由首部和数据组成) 三.数据报分片与重组 四.IP协议功能及报头字段总结 一.IPv4协议简介 1.IPv4协议:网际协议版本4,一种无连接 ...

  3. IPv6数据报头部格式

    文章摘自书籍<深入理解计算机网络 王达 机械工业出版社> IPv4数据报头格式请点击此处 IPv6数据报头部格式 RFC2460定义了IPv6数据报格式.总体结构上,IPv6数据报格式与I ...

  4. IPv4协议学习笔记

    IPv4协议学习笔记 网络协议相关标准目录 文章目录 IPv4协议学习笔记 IPv4数据报格式 IPv4 网络头部结构 Version [4 bits]: 协议版本 IHL(Internet Head ...

  5. 29、Internet网络层——IPv4协议IP地址(网络层)

    引言 Internet网络层今天成功的原则在RFC 1958中有描述.这里简单总结一下10大原则(从最重要的到最不重要的)(RFC中应该不止10个,寒注):(1)保证工作(可以工作)(2)保持简单(3 ...

  6. (17)IPv4协议的功能实现原理

    一.IPv4:是Internet Protocol version 4(网际协议版本4)的英文简称,而中文简称为"网协版4" 二.IPv4协议:网际协议版本4(英语:Interne ...

  7. TCP协议--TCP头部

    <Linux高性能服务器编程>阅读笔记: 1. TCP协议的概念   TCP和UDP是传输层的两个主要协议.TCP相对于UDP来说,是面向连接.字节流和可靠传输.   (1) 面向连接   ...

  8. 计网 - IPv4 协议:路由和寻址的区别是什么?

    文章目录 Pre 什么是 IP 协议? IP 协议的工作原理 分片(Fragmentation) 增加协议头(IP Header) "鱼和熊掌"不能兼得--延迟.吞吐量.丢包率 延 ...

  9. IPv4协议中的UDP分片问题

    目录 IPv4协议 分片可能引起的问题 参考文章 IPv4协议 先看一个流传得比较多的图,这里直入主题,只说与分片相关的字段. 标识(identification):占16位.IP软件在存储器中维持一 ...

最新文章

  1. 【C#】登陆次数限制
  2. mysql转oracle注意事项
  3. 81. Leetcode 21. 合并两个有序链表 (排序)
  4. 【struts2】struts2配置文件—struts.properties
  5. ReactiveCocoa基础
  6. Jquery 对话框确认
  7. CSS实现垂直居中的5种方法
  8. JAVA常用API或编程工具001---ITEXT把html转换成pdf的jar包,使用Java将HTML转换为PDF
  9. u8 api开发报类型不匹配错误_小程序云开发入门学习,小程序支付功能常见错误汇总及解决方案...
  10. Caffe ImageNet例程翻译
  11. VMware安装win10:需win10虚拟机专用镜像,不是真机装系统的ISO镜像
  12. 关于ip报文校验和一些思考
  13. 办公技巧:10个WORD神操作,值得收藏
  14. 电子基础元器件——电阻器
  15. 假设一张纸足够大并且可以无限折叠,假设一张纸足够大并且可以无限折叠,一张纸的厚度是0.5mm,那么这张纸折叠多少次可以到达珠穆朗玛峰的高度8848.43m。
  16. Vue routers
  17. 2022年国家高新技术企业认定评审最新标准及补贴政策重点,补贴10-50万
  18. 《明日世界》电驴下载放出
  19. 软件项目管理案例教程(第三版 韩万江,姜立新)其它课后题答案持续更新,欢迎收藏+关注
  20. 抖音怎么上热门网红 修改视频md5

热门文章

  1. Word 标题前添加一颜色竖线条
  2. BTC公钥生成地址的过程详解
  3. SEM数据分析之做好关键词报告
  4. Laravel—Purifier扩展包防止XSS攻击
  5. zotero本地常见插件配置,新电脑配置zotero,新手入门
  6. 7z001怎么解压在安卓手机上面_安卓手机时间怎么显示在中间 时间居中设置教程...
  7. 一元二次求解matlab程序,规范MATLAB编程实例——求解一元二次方程
  8. python调用scp上传目录_python执行scp命令拷贝文件及文件夹到远程主机的目录方法...
  9. python命名规则数字开头的成语_浅谈Python中带_的变量或函数命名
  10. z变换判断稳定性和因果性_LTI系统判断因果性稳定性.PPT