IP协议报文结构

news2024/11/23 22:24:00

IP报文结构

在这里插入图片描述

  • 4位版本号: 指定IP协议的版本, 对于IPv4来说, 就是4.
  • 4位头部长度: IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节.
  • 8位服务类型: 3位优先权字段(已经弃用) + 4位TOS字段 + 1位保留字段(必须置为0). 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本.。这四者相互冲突, 只能选择一个。 对ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序, 最大吞吐量比较重要.
  • 16位总长度: IP数据报整体占多少个字节.
  • 16位标识: 唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id都是相同的.
  • 3位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第三位表示"更多分片", 如果分片了的话, 最后一个分片置为0, 其他是1. 类似于一个结束标记.
  • 13位分片偏移: 是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了最后一个报文之外, 其他报文的长度必须是8的整数倍(否则报文就不连续了).
  • 8位生存时间(TTL): 数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL -= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环
  • 8位协议: 表示上层协议的类型
  • 16位头部校验和: 使用CRC进行校验, 来鉴别头部是否损坏.
  • 32位源地址和32位目标地址: 表示发送端和接收端.
  • 选项字段(不定长, 最多40字节)

IP如何区分有效载荷和报头

IP数据包中的报头和有效载荷主要可以通过以下两点进行区分:

  1. 报头长度字段

IP头部有一个4位的"报头长度"字段,单位为4字节,它指明了当前报头包含的4字节段数量。

所以根据这个长度值就可以确定报头部分的字节数。

例如,如果报头长度值为5,则报头的大小是 5 * 4 = 20字节。

  1. 报头固定格式

IP报头有固定的格式,共包含了10个标准字段,加上可选字段,最大长度为60字节。这些字段包含版本号、服务类型、总长度等信息。

每个字段的位置和长度是固定的。所以可以通过格式解析出报头的具体内容。

有效载荷部分则没有固定格式,它存放的是上层协议(TCP/UDP等)的报文。

为什么需要4位首部长度

IP报头的最小长度确实是20字节。之所以还需要在报头中指定长度,主要有以下两个原因:

  1. IP报头长度可变

虽然最小长度是20字节,但IP头部中的可选字段使得其长度可以变化,最大可达60字节。这就需要长度字段来动态指示当前报头的实际长度。

  1. 方便解析报文

在数据链路层,IP数据报会加上各种头部,形成帧。接收方需要先解析这些头部,才能获得IP报头的位置。如果每次都默认IP头部是20字节,解析就会非常不灵活。

所以,尽管最小长度固定是20字节,IP头部中还是有必要包含一个 LENGTH 字段,来动态指示当前报头的长度,这对解析报文和扩展协议都非常重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/923476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【使用perf和火焰图分析PostgreSQL数据库的性能瓶颈】

Perf工具可用来对软件进行优化,包括算法优化(空间复杂度、时间复杂度)和代码优化(提高执行速度、减少内存占用)等等,perf 最常用的参数有top、stat、record,另外还有list和report等。 本文主要使…

枚举和反射

枚举 枚举 枚举是一种特殊的类,它可以有自己的属性、方法和构造方法。 两种枚举的方法 自定义枚举 a.将构造器私有化,防止外部直接new b.去掉set方法,防止属性被修改 c.在内部直接创建固定的对象 通过类名直接去访问 关键字枚举 用…

即拼七人拼团:突破传统模式,二二复制结合拼团快速引流

如何解决平台运营难的问题?企业主要关注的点则是新客的引流、用户的留存、平台活跃度提高以及如何变现等一些的问题,下面就针对这块分析提出一个七人拼团的解决方案。一个7人成团的即拼模式,为什么会在众多拼团模式中脱颖而出,即拼…

学会Mybatis框架:一文掌握MyBatis与GitHub插件分页的完美结合【三.分页】

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Mybatis的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Mybatis分页 1. Mybatis自带分页 2…

职业技术培训内容介绍

泰迪职业技术培训包括:Python技术应用、大数据技术应用、机器学习、大数据分析 、人工智能技术应用。 职业技术培训-Python技术应用 “Python技术应用工程师”职业技术认证是由工业和信息化部教育与考试中心推出一套专业化、科学化、系统化的人才考核标准&…

8.24随笔记录科研灵感

在B站浏览关于人脸3D的视频,无意看到这一部分“结构光-深度图信息” 【巧的是这也是微软的模型】 就想到了自己的V4.3版本的算法里面估计距离其实用的也是结构光(红光)来估测距离,而且目前水下图像处理领域并没有采用这个方法&am…

【DC】逻辑综合实战

DC实战 0. 学习目标1. Design1.1 Design Schematic1.2 Design Specification 2. 配置文件和约束文件2.1 配置文件(1) common_setup.tcl 文件(2) dc_setup.tcl 文件(3) .synopsys_dc.setup 文件 2.3 启动工具查看单元库信息(1) 查看目标库的时间单位 2.3 设计约束文件(1) 时钟约…

洗涤护理门店小程序搭建全攻略:数字化转型的起点

在现代社会中,人们越来越注重便捷和个性化的服务体验。而随着智能手机的普及,小程序成为了商家与用户之间沟通的重要桥梁。在这篇文章中,将介绍如何使用第三方小程序制作平台搭建一个个性化干洗店洗护小程序。 首先,我们需要注册并…

ORB-SLAM2报错集合(数据集测试系列1)

目录 错误1 错误2 错误3 错误4 错误5 错误6 错误7 错误8 TUM-RGBD测试 KITTI测试 EuRoC测试 写在前面~ ORB-SLAM2 github链接:GitHub - electech6/ORB_SLAM2_detailed_comments: Detailed comments for ORB-SLAM2 with trouble-shooting, key formula …

单个无人机三维路径规划问题及其建模

单个无人机三维路径规划问题及建模如下: 参考文献: [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120

Grafana Dashboard 备份方案

文章目录 Grafana Dashboard 备份方案引言工具简介支持的组件要求配置备份安装使用 pypi 安装grafana备份工具配置环境变量使用Grafana Backup Tool 进行备份恢复备份 Grafana Dashboard恢复 Grafana Dashboard结论Grafana Dashboard 备份方案 引言 每个使用 Grafana 的同学都…

vue离线缓存资源文件

本文章主要是解决大文件,实时请求资源浪费网络资源的问题 从而有效的将解决用户体验的问题 话不多说上才艺 ⬇️⬇️⬇️⬇️⬇️⬇️⬇️ 找到项目中的 index.html 文件,并在 html 标签中加入 manifest"manifest.appcache" 安装 appcache-manifest 包 npm ins…

深入浅出理解相机标定原理

重要说明:本文从网上资料整理而来,仅记录博主学习相关知识点的过程,侵删。 一、参考资料 微信公众号:计算机视觉life 专栏:#相机标定 Camera Calibration 张正友标定法-完整学习笔记-从原理到实战 二、相机标定相…

C语言刷题训练DAY.12

1.统计成绩 解题思路&#xff1a; 这里我们设置两个变量记录最大值和最小值&#xff0c;再用一个sum统计分数总和即可。 解题代码&#xff1a; #include<stdio.h> int main() {int n 0;scanf("%d", &n);double arr[100] { 0 };int i 0;//最高分double …

UVM Heartbeat机制

1. 前言 在硬件电路中&#xff0c;为了使系统在异常情况下能自动复位&#xff0c;一般都需要引入看门狗(Watchdog)。看门狗其实就是一个定时器电路。当看门狗启动后&#xff0c;计数器开始自动计数&#xff0c;经过一定时间&#xff0c;如果没有被清零&#xff0c;计数器溢出就…

谁为软件质量负责?

如果我们直接问自己以下问题——谁负责软件质量&#xff0c;我们首先想到的就是——当然是测试人员&#xff01;但这并不像看起来那么容易。 IT领域有几个特点&#xff0c;总是发生在软件测试的最后阶段&#xff0c;就在它发布之前。它们使我们不仅从软件的技术质量保证的角度…

学习JAVA打卡第四十一天

字符串与字符数组、字节数组 ⑴字符串与字符数组 String类的构造方法String&#xff08;char a[]&#xff09;和String&#xff08;char a[]&#xff09;,int offset,int length,分别用数组a中的全部字符和部分字符创建string对象。 String类也提供将string对象的字符序列存…

vray for Cinema 4D如何创建照片级真实室内效果?

在V-Ray for Cinema 4D中渲染 3D室内设计一开始可能会很困难&#xff0c;但您投入的努力总会得到回报。无论您的技术水平和创意眼光如何&#xff0c;在 V-Ray 中创建室内设计时都需要考虑很多事项。 在这篇博文中&#xff0c;我们将分享一些最佳实践&#xff0c;帮助您创建令人…

12-总结-从 0 开始搭建框架

项目结构: 一. 安装第三方库 # 下载源: https://pypi.tuna.tsinghua.edu.cn/simple/pip3 install flask2.3.2 pip3 install jinja23.1.2 pip install pymysql # 保持持久化pip install flask-script2.0.3 # 管理应用程序 pip install flask-sqlalchemy3.0.3 # 实现ORM映射…

高等数学之不定积分

由导函数推原函数就是不定积分 只是一个&#xff01; 记得常数C!!! 不定积分的几何含义