当前位置: 首页 > 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整除
在这里插入图片描述

相关文章:

IPv4首部格式

IPv4首部格式 IPv4数据报的首部格式及其内容是实现IPv4协议各种功能的基础。 在TCPIP标准中,各种数据格式常常以32比特(即4字节)为单位来描述。 IPv4首部格式图 ## IPv4数据报的组成 主要由固定部分(20字节)可变部分(最大40字节) - 固定部分是指每个IPv4数据报都必…...

点云从入门到精通技术详解100篇-基于 3D 激光雷达的车厢冻煤存量检测

目录 前言 研究意义 研究现状(Research status) 3D 激光雷达检测技术研究现状...

idea使用MyBatisX插件

1.MyBatisX功能 (1).实现mapper和xml的跳转 (2).自动生成java文件,比如mapper、service、dao、pojo 2.安装MyBatisX插件 install后然后重启idea即可 3.使用MyBatieX实现mapper和xml跳转 (1).点击mapper中的红色图标即可跳转到对应的xml方…...

Open3D(C++) 最小二乘拟合平面(间接平差法)

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。 一、算法原理 1、原理概述 通过传统最小二乘法对点云数据进行平面拟合时,可将误差只归因于一个方向上,本文假设误差只存在于 Z Z...

Linux中搭建coturn服务器

1、下载coturn源码 git clone https://github.com/coturn/coturn.git2、进入到coturn路径下,执行一下命令。 ./configure出现以下错误: 问题1:ERROR: OpenSSL Crypto development libraries are not installed properly in required locati…...

【Proteus仿真】【Arduino单片机】SG90舵机控制

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用SG90舵机等。 主要功能: 系统运行后,舵机开始运行。 二、软件设计 /* 作者:嗨小易(QQ&#x…...

程序员有哪些规避风险的合法兼职渠道?

近期,承德程序员事件冲上热搜,这对许多程序员的心灵是多么大的伤害啊! 人人自危,大家开始顾虑自己接私活、找兼职的方式和前景了。毕竟,谁也不想”辛辛苦苦几十年,一把回到解放前“。那有什么办法既可以接私…...

OpenGL_Learn04

我这边并不是教程&#xff0c;只是学习记录&#xff0c;方便后面回顾&#xff0c;代码均是100%可以运行成功的。 1. 渐变三角形 #include <glad/glad.h> #include <GLFW/glfw3.h>#include <iostream> #include <cmath>void framebuffer_size_callba…...

【嵌入式】HC32F07X CAN通讯配置和使用配置不同缓冲器以连续发送

一 背景说明 使用小华&#xff08;华大&#xff09;的MCU HC32F07X实现 CAN 通讯配置和使用 二 原理分析 【1】CAN原理说明&#xff08;参考文章《CAN通信详解》&#xff09;&#xff1a; CAN是控制器局域网络(Controller Area Network, CAN)的简称&#xff0c;是一种能够实现…...

Linux的常见指令(一)

目录 一、文件 二、常见指令 1、pwd 2、ls 1、ls -a 2、ls -l 3、ls -i ​编辑 3、touch 4、mkdir 5、cd 6、rmdir 和 rm 7、man 8、cp 一、文件 目录和文件是在磁盘上建立的&#xff0c;空文件是在磁盘上占用空间的&#xff08;文件包括文件内容和文件的各种属…...

Jenkins 参数动态获取目录里面的内容

Jenkins 参数动态获取目录里面的内容 假如我们想把一个目录下面的tar.gz文件作为jenkins参数&#xff0c;这个目录会实时更新&#xff0c;每次运行job的时候需要把目录里面的文件作为输入&#xff0c;这时候我们可以使用jenkins自带的Active Choices Parameter参数 在参数中写…...

centos 搭建内网ntp时间服务器

在 CentOS 搭建内网 NTP 时间服务器&#xff0c;你可以按照以下步骤操作&#xff1a; 安装 NTP 服务&#xff1a; 打开终端并以 root 用户身份登录。使用以下命令安装 NTP 服务&#xff1a; sudo yum install ntp配置 NTP 服务器&#xff1a; 打开 NTP 配置文件 /etc/ntp.conf&…...

FreeRTOS-消息队列的使用

1. 定义队列传输的内容和队列结构体对象 使用 xQueueHandle结构体创建对象 typedef struct {u8 TaskNum;u8 Cmd;u8 * buf;}QueueObject_t;xQueueHandle xQueue NULL; 2. 调用xQueueCreate API创建队列 xQueueCreate()函数&#xff1a;用于创建一个消息队列。 QueueHan…...

喜欢 Android 14 的 14 个理由

和去年 8 月中旬发布的 Android 13 正式版不同&#xff0c;今年的 Android 14 正式版延后到了 10 月 4 日——也就是 Pixel 8 系列发布的同一天。原因我们似乎也能从 Google 宣传新特性中略窥一二&#xff1a; 除了明确表示会率先向特定 Pixel 机型推送的 AI 壁纸生成&#xf…...

图解系列--路由器和它庞大的功能

03.01 何为路由器 路由器是指主要负责 OSI参考模型中网络层的处理工作&#xff0c;并根据路由表信息在不同的网络 之间转发IP 分组的网络硬件(图3-1)。这里的网络一般是指IP 子网&#xff0c;也可以称为广播域。此外&#xff0c;现在的路由器还会搭载其他各种各样的功能。 0…...

DBeaver 23.2.3发布,带来多项增强和修复

数据库管理工具DBeaver最新版本23.2.3已经发布。这个版本带来了一系列的增强和修复&#xff0c;提升了用户的使用体验和工作效率。 以下是DBeaver 23.2.3版本的一些亮点功能&#xff1a; 数据编辑器方面的改进&#xff1a; Excel (XLSX) 导出现在支持列自动拟合&#xff0c;…...

Proteus仿真--基于51单片机的按键选播电子音乐(仿真文件+程序)

本文主要介绍基于51单片机的按键选播电子音乐&#xff08;完整仿真源文件及代码见文末链接&#xff09; 本设计中包括一个按键和一个喇叭&#xff0c;点击按键可以切换选择播放不同的音乐 仿真图如下 其中点击按键K1进行音乐选播选择切换 仿真运行视频 Proteus仿真--基于5…...

node使用http模块

文章目录 前言一、创建http服务二、设置http的响应报文三、不同请求响应不同数据四、请求响应不同html文件1. 添加www文件夹2. js代码3. 效果 五、get和post请求的区别 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 一、创建http服务 // 1&#xff1a…...

Golang Study 进阶

Golang 本文章中记录一些 Golang 中的语言特性&#xff0c;包括 init 函数&#xff0c;面向对象&#xff0c;defer 关键字&#xff0c;并发编程等。 init 函数与导包 init函数的执行流程是早于main函数的&#xff0c;如果想在main函数执行前做一些事情&#xff0c;可以在init函…...

Shopee买家通系统详细功能介绍

Shopee买家通系统是一款全自动化操作的软件&#xff0c;可以批量注册买家号、自动加购加心愿单、自动下单等。 批量注册买家号 准备好相应资料后&#xff0c;在运行注册时可以自动输入手机号、自动输入短信、自动输入设置的密码。 自动加购加心愿单 根据设置的关键词及产品编…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...