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. SAP Promotion Managementfor Retail (SAP PMR)
  2. php和java融合_Java上的PHP,真的融合
  3. springboot-swagger2
  4. 产品网络推广方案之网站导航栏如何设置会更利于排名提升?
  5. 【数据库实验课堂】实验三:管理SQL Server表数据
  6. script 放置最佳位置以及 html 执行顺序
  7. python 循环 覆盖之前print内容_Python爬虫第二战---爬取500px图片
  8. java generic new_java中generic实例详解
  9. 与时俱进的治疗策略不断提高RA无药缓解机会[EULAR2015_SAT0058]
  10. 多核时代不宜再用 x86 的 RDTSC 指令测试指令周期和时间
  11. 算法学习之路|互评成绩计算
  12. tips of MIPS
  13. xsd是什么文件,作用是什么?
  14. 关于tomcat报错500的问题记录(classnotfoundexception)
  15. SEO知识:百度谷歌搜狗谷歌必应搜索引擎蜘蛛的特点
  16. 推荐11个值得关注的网络安全公众号(年度精选)
  17. Vim中如何全选并复制?
  18. ffmpeg rtmp推流代码示例
  19. win10蓝牙功能不见了_Win10 2004更新了什么?新功能新特性汇总
  20. 1.9 Cubemx_STM32F4_57步进电机(一)----驱动代码

热门文章

  1. mysql逗号后update_隔mysql逗号
  2. [置顶] 【游戏产业的5年之变】
  3. 关于uni-app隐藏安卓虚拟键
  4. 设计模式(二):设计原则
  5. 电脑报价管理系统C语言,C语言笔记本电脑销售系统课设(附源码).doc
  6. maven在win10上的安装和配置
  7. 霍夫变换c语言程序,霍夫变换 | Cauthy's Blog
  8. [PS] 透明底图片制作
  9. 阿里云疯狂促销 公有云之战刚鸣枪
  10. 咋么用计算机打出,键盘怎么输入符号_怎么用电脑键盘打符号-win7之家