当前位置: 首页 > news >正文

IPv4首部格式

IPv4首部格式

IPv4数据报的首部格式及其内容是实现IPv4协议各种功能的基础
在TCPIP标准中,各种数据格式常常以32比特(即4字节)为单位来描述。

在这里插入图片描述

IPv4首部格式图
## IPv4数据报的组成 主要由固定部分(20字节)+可变部分(最大40字节) - 固定部分是指``每个IPv4数据报都必须要包含的部分``。 - 某些IPv4数据报的首部,除了包含20字节的固定部分,还包含一些可选的字段来``增加IPv4数据报的功能``。 ### 固定部分组成 - 版本 - 长度为4个比特,用来表示lP协议的版本。 - 通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议的版本号为4(即IPv4)。
  • 首部长度

    • 长度为4个比特,该字段的取值以4字节为单位,用来表示IPv4数据报的首部长度。
    • 最小取值为二进制的0101,即十进制的5,再乘以4字节单位,表示IPv4数据报首部只有20字节固定部分
    • 最大取值为二进制的1111,即十进制的15,再乘以4字节单位,表示IPv4数据报首部包含20字节固定部分和最大40字节可变部分
  • 区分服务

  • 长度为8个比特,用来获得更好的服务。

  • 该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。1998年,因特网工程任务组ETF把这个字段改名为区分服务。利用该字段的不同取值可提供不同等级的服务质量。

  • 只有在使用区分服务时该字段才起作用,一般情况下都不使用该字段。

  • 总长度

    • 长度为16个比特,该字段的取值以字节为单位,用来表示IPv4数据报的长度(首部长度+数据载荷长度)。最大取值为二进制的16个比特1,即十进制的65535(很少传输这么长的IPv4数据报)。

引入概念—IPv4数据报分片
在这里插入图片描述
下面介绍的 标识字段,标志字段,片偏移字段,共同用于IPv4数据报分片

  • 标识

    • 长度为16个比特,属于同一个lPv4数据报的各分片数据报应该具有相同的标识
    • IP软件会维持一个计数器,每产生一个IPv4数据报,计数器值就加1,并将此值赋给标识字段。
  • 标志

    • 最低位(More Fragment,MF)
      • MF=1表示本分片后面还有分片
      • MF=0表示本分片后面没有分片
    • 中间位(Don’t Fragment,DF)
      • DF=1表示不允许分片
      • DF=0表示允许分片
    • 最高位为保留位,必须设置为0
  • 片偏移

    • 长度为13个比特,该字段的取值以8字节为单位,用来指出分片IPv4数据报的数据载荷偏移其在原IPv4数据报的位置有多远。
  • 生存时间(Time To Live,TTL)

    • 长度为8个比特,最大取值为二进制的111111,即十进制的255。该字段的取值最初以秒为单位。因此,IPv4数据报的最大生存时间最初为255秒。路由器转发IPv4数据报时,将其首部中该字段的值减去该数据报在路由器上所耗费的时间,若结果不为0就转发,否则就丢弃。
  • 协议

    • 长度为8个比特,用来指明IPv4数据报的数据载荷是何种协议数据单元PDU.
      在这里插入图片描述
  • 首部检验和

    • 长度为16个比特,用于检测IPv4数据报在传输过程中其首部是否出现了差错
    • IPv4数据报每经过一个路由器,其首部中的某些字段的值(例如生存时间TTL、标志以及片偏移等)都可能发生变化,因此路由器都要重新计算一下首部检验和
      首部检验和的计算方法:

在这里插入图片描述
首部检验和计算的重点在于二进制反码求和的运算:

  • 两个数进行二进制反码求和的运算规则是从低位到高位逐列进行计算:
    • 0和0相加是0
    • 0和1相加是1
    • 1和1相加是0,但要产生一个进位1,加到下一列(再进行+1操作)
    • 若最高位相加后产生进位,则最后得到的结果要加1

举例:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可变部分组成

  • 可选字段

    • 长度从1字节到40字节不等,用来支持排错、测量以及安全措施等功能。
    • 虽然可选字段增加了IPv4数据报的功能,但这同时也使得IPv4数据报的首部长度成为可变的,这就增加了因特网中每一个路由器处理IPv4数据报的开销。
  • 填充

    • 用来确保lPv4数据报的首部长度是4字节的整数倍,使用全0进行填充。
      在这里插入图片描述

真题演练

【2021年题36】若路由器向MTU=800B的链路转发一个总长度为1580B的IP数据报(首部长度为20B)时,进行
了分片,且每个分片尽可能大,则第2个分片的总长度字段和MF标志位的值分别是(B)。
A.796,0
B.796,1
C.800,0
D.800,1

注意 分片长度要满足能被8整除
在这里插入图片描述

http://www.lryc.cn/news/216060.html

相关文章:

  • 点云从入门到精通技术详解100篇-基于 3D 激光雷达的车厢冻煤存量检测
  • idea使用MyBatisX插件
  • Open3D(C++) 最小二乘拟合平面(间接平差法)
  • Linux中搭建coturn服务器
  • 【Proteus仿真】【Arduino单片机】SG90舵机控制
  • 程序员有哪些规避风险的合法兼职渠道?
  • OpenGL_Learn04
  • 【嵌入式】HC32F07X CAN通讯配置和使用配置不同缓冲器以连续发送
  • Linux的常见指令(一)
  • Jenkins 参数动态获取目录里面的内容
  • centos 搭建内网ntp时间服务器
  • FreeRTOS-消息队列的使用
  • 喜欢 Android 14 的 14 个理由
  • 图解系列--路由器和它庞大的功能
  • DBeaver 23.2.3发布,带来多项增强和修复
  • Proteus仿真--基于51单片机的按键选播电子音乐(仿真文件+程序)
  • node使用http模块
  • Golang Study 进阶
  • Shopee买家通系统详细功能介绍
  • git生成gitee和github两个不同的公钥
  • 基于SSM的同学录网站
  • 第十五节——观察者watch
  • tauri 访问静态资源,响应头为Content-Type:‘text/html‘
  • 【佳学基因检测】Node.js中如何读取并调用内容
  • java根据音频流或者音频的地址获取分贝的工具类
  • Pycharm出现的一些问题和解决办法
  • 进程优先级(nice值,top指令),独立性,竞争性,进程切换(时间片),抢占与出让,并发并行概念
  • 若依微服务集成Mybatis-plus详细教程
  • WebSocket:实现实时双向通信的利器
  • 【uniapp】html和css-20231031