IP报文格式详解

article/2025/10/3 19:23:31

转载:https://www.cnblogs.com/zhangbing12304/p/11016921.html

下图为常见的IP报文格式表:

                                         

上面是IP的报文格式,接下来我们先说明各个字段的意义。然后,用Etheral软件转包分析IP的报文格式。

1.版本:ip报文中,版本占了4位,用来表示该协议采用的是那一个版本的ip,相同版本的ip才能进行通信。一般此处的值为4,表示ipv4。

 

2.头长度:该字段用四位表示,表示整个ip包头的长度,其中数的单位是4字节。即二进制数0000-1111(十进制数0-15),其中一个最小长度为0字节,最大长度为60字节。一般来说此处的值为0101,表示头长度为20字节。

 

3.Tos服务字段:该字段用8位表示。该字段一般情况下不使用。

 

4..总长度:该字段表示整个ip报文的长度,单位是1字节。能表示的最大字节为2^16-1=65535字节。不过由于链路层的MTU限制。超过1480字节后就会被分片(以太帧MTU为1500的情况下,除去20字节的包头)

 

5.标识:该字段是ip软件实现的时候自动产生的,该字段的目的不是为了接受方的按序接受而设置的,而是在ip分片以后,用来标识同一片分片的。方便ip分片的重组。

 

6.标志:该字段是与ip分片有关的。其中有三位,但只有两位是有效的,分别为MF,DF,MF。MF标识后面是否还有分片,为1时,表示后面还有分片。DF标识是否能分片,为0表示可以分片。

 

7.片偏移:该字段是与ip分片后,相应的ip片在总的ip片的位置。该字段的单位是8字节。比如,一个长度为4000字节的ip报文,到达路由器。这是超过了链路层的MTU,需要进行分片,4000字节中,20字节为包头,3980字节为数据,需要分成3个ip片(链路层MTU为1500),那么第一个分片的片偏移就是0,表示该分片在3980的第0位开始,第1479位结束。第二个ip片的片偏移为185(1480/8),表示该分片开始的位置在原来ip的第1480位,结束在2959。第三片的片偏移为370(2960/8),表示开始的时候是2960位,结束的时候在3979位。

 

8.TTL:该片表示生存周期,该值占8位。ip分片每经过一个路由器该值减一,它的出现是为了防止路由环路,浪费带宽的问题。比如,该ip在R1路由器发送到R2路由器。R2路由器又发给R1路由器。防止这种循环。window系统默认为128.

 

9.协议:该值标识上层的协议。占8位。其中1,标识ICMP、2标识IGMP、6标识TCP、17标识UDP、89标识OSPF。

 

10校验和:该值是对整个数据包的包头进行的校验。占16位。

 

11.源地址和目的地址。标识发送ip片的源和目的ip,32位

 

12.接下来是可选的部分,一般一些特殊的要求会加在这个部分。

 

13:数据

 

j接下来,我们用一个具体的ip报文来进行分析。该报文是Etheral报文分析软件抓的包。

 

 

这是是ip报文的第一行,Version是版本,Header length是头长度,Differentiated Services Field就是区分服务,Total Lehgth为总长度。

 

 

其中,45 00 05 dc 为上面的四个信息的传输过程中的值,这里面一个数代表4位二进制数。其中,4和5分别表示版本,头长度,00表示TOS为0。05,

 

 

这是ip报文的第二行,Identification 位标识,FLags为标志,在这里可以看到MF为 set 标识还有分片,DF为not set可以分片。片偏移为0.标识这是初始的ip片

 

 

90 ad 20 00 为上面的标识字段,90 ad 标识该ip的标识, 2转换为二进制为0010,其中前三位001位标志,后面的0,是13位的标识的一部分。

 

 

这是 TTL  协议 检验和这几部分。可以看到TTL为12,上层协议为ICMP,头部检验和为true.

 

 

80 01 ef 05为相应字段的值80位生存时间转换成10进制为128. 01为协议。ef 05为首部检验和。

 

 

上面是源和目的IP,

下面是相应的编码

 

c0 a8 0a 0e 为源ip

c0 a8 0a of 为目的ip

 

以上就是我对于ip报文的理解。


http://chatgpt.dhexx.cn/article/5hLnNpXq.shtml

相关文章

matlab fsolve 与fzero,fsolve / fzero:找不到解决方案,看似常规

您的系统设置方式,绘制它并观察其行为实际上很方便 . 我向你的函数进行了矢量化并绘制了 f(x) = MLNEfun(x)-x ,其中 MLNE(x) 的输出是 newA . 实际上,您对系统的固定点感兴趣 . 我观察到的是: 在A~3800处有一个奇点和一个根交叉 . 我们可以使用 fzero ,因为它是一个括号中…

matlab fsolve实例,转 Matlab非线性方程求解器fsolve总结(含实例)

this.p{ m:2, b:2, loftPermalink:, id:fks_080067080082080074080086083095085085082071082086082074092, blogTitle:转 Matlab非线性方程求解器fsolve总结(含实例), blogAbstract: fsolve是采用最小二乘法来求解非线性方程。它的一般求解方式为: XFSOLVE(FUN,X0,O…

MATLAB-fsolve函数帮助文档翻译与补充

fsolve 解非线性方程组 非线性系统解算器 解决指定的问题 F(x) 0对于x, F(x)是一个返回向量值的函数。 x是一个向量或者一个矩阵;看矩阵参数。 语法: x fsolve(fun,x0) x fsolve(fun,x0,options) x fsolve(problem) [x,fval] fsolve(___) [x,fval,exitfla…

[Matlab] fsolve函数隐藏输出

fsolve函数用于求解方程的解,第一参数是要求解的方程,方程形式是f(x)0,第二个参数是从哪个点开始迭代搜索。 比如: fsolve会输出两部分内容,第一部分是迭代的结果(是否找到根),第二部分是求解结果(如果没找…

matlab之fsolve方法求解复杂非线性方程常见问题(入门)

问题描述: 二十六道二次方程,共二十个未知数。 考虑了matlab中可用的各类算法,最后采用fsolve函数解该复杂非线性方程。 参考:非线性方程(组):MATLAB内置函数 solve, vpasolve, fsolve, fzero, roots [MATLAB] - Ge…

matlab fsolve()函数的使用

fsolve()函数通常用于数值求方程或方程组的解,更常用于求解非线性方程组。其基本结构如下:(可以在matlab命令页面输入help fsolve查询) fsolve()解决的方程形式为F(X)0; 用法为: X fsolve(FUN,X0,OPTIONS) 或者写为 […

仿射变换和透视变换详解

仿射变换和透视变换都是计算机视觉中重要的图像变换操作,然而也困扰了我很久,通过找寻很多资料总算大致弄明白了这两个变换。 仿射变换 旋转和平移都是仿射变换的特殊形式。 wiki详细解释: https://en.wikipedia.org/wiki/Affine_transformat…

Opencv_10 图像的透视变换

文章目录 一. 透视变换的原理二. 透视变换实现① 函数原型② 透视变换实现 三. 透视变换的案例 一. 透视变换的原理 透视变换(Perspective Transformation)是将图片投影到一个新的视平面(Viewing Plance),也称为投影映射(Projective Mapping).通用的变换公式为: 透视变换矩阵 …

【OpenCV】透视变换 仿射变换

目录 一:透视变换基本概念 二:透视变换工作原理 三:findHomography函数 四:warpPerspective函数 五:getPerspectiveTransform函数 一:透视变换基本概念 仿射变换(affine transform)与透视变换(perspec…

逆透视变换详解 及 代码实现(二)

根据 逆透视变换详解 及 代码实现(一)的原理 下面我用车上拍摄的车道图像,采用逆透视变换得到的图像,给出代码前我们先看下处理结果。 首先是原始图像: 下图为逆透视变换图像: 下面说具体的实现吧!! 一、…

透视变换的实现以及透视变换矩阵的构造

透视变换(Perspective Transformation)是什么,无需多说,但是一个非常惨痛的现实是如果你想知道怎么样才能在编程做,你只能得到一些调用opencv函数的文章,简直有病,谁不会调用函数,我搜索实现肯定是要找代码参考看下是怎么实现算法的,你调用函数还敢叫自己“实现”?那我…

图像处理之_仿射变换与透视变换

1. 仿射变换 1) 用途 旋转 (线性变换),平移 (向量加).缩放(线性变换),错切,反转 2) 方法 仿射变换是一种二维坐标到二维坐标之间的线性变换,它保持了二维图形的“平直性”(直线经过变换之后依然是直…

Matlab 透视变换 原理及其代码实现

一、透视变换内涵 透视变换本质:将一个图像投影到新的视平面 透视变换思路: 将二维坐标系转换为三维坐标系。 将三维坐标系投影到新的二维坐标系。 该过程属于非线性变换过程,一个菱形在经过非线性变换后得到一个四边形,但是…

art上的透视变换

透视变换 透视变换在比赛中非常重要,我们在地图识别与微调时用到了透视变换。 1. 微调上的使用 在车抵达目标板附件时,摄像头检测到目标板后,可以通过透视变换确定图片距车的位置。这里需要强调下,我们使用的透视变换与四轮使用…

透视变换(Perspective Transform)

**透视变换(Perspective Transform)**是将图片投影到一个新的视角或平面,变换公式如下。 在之前的章节中我们学习过仿射变换(affine transform) 可以看到,而射变换的变换矩阵是3x2的变换矩阵。和仿射变换不同的是,透视变换的变换矩阵是一个3…

仿射变换与透视变换区别

仿射变换 1) 用途 旋转 (线性变换),平移 (向量加).缩放(线性变换),错切,反转 2) 方法 仿射变换是一种二维坐标到二维坐标之间的线性变换,它保持了二维图形的“平直性”(直线经过变换之后依然是直线&…

用OpenCV进行透视变换

1. 引言 欢迎回来!今天我们将焦点聚焦在我在图像处理中最喜欢的话题之一——透视变换。使用该技术,可以灵活方便的实现各种各样好玩的特效。 闲话少说,我们直接开始吧! 2. 单应矩阵 我们首先展开对单应矩阵的深入研究。作为图…

透视变换矩阵详解

原文: OpenGLProjection Matrix (songho.ca) 看这篇文章主要是因为对learnopengl深度测试这一章的些许疑惑, 为什么在片段着色器中,存储的每一个fragment的深度值并不是线性分布?体现在想要显示出场景里面所有物体的深度值&#x…

【图像处理】透视变换 Perspective Transformation

透视变换(Perspective Transformation)是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。通用的变换公式为: u,v是原始图片左边,对应得到变换后的图片坐标x,y,其中。变换矩阵可以拆成4部分,表示…

Opencv中的透视变换

唐宇迪视频学习笔记 def four_point_transform(image, pts):# 获取输入坐标点rect order_points(pts)(tl, tr, br, bl) rect# 计算输入的w和h值widthA np.sqrt(((br[0] - bl[0]) ** 2) ((br[1] - bl[1]) ** 2))widthB np.sqrt(((tr[0] - tl[0]) ** 2) ((tr[1] - tl[1])…