网络协议分析(2)判断两个ip数据包是不是同一个数据包分片

news/2024/11/24 13:32:20/

一个节点收到两个IP包的首部如下:

(1)45 00 05 dc 18 56 20 00 40 01 bb 12 c0 a8 00 01 c0 a8 00 67

(2)45 00 00 15 18 56 00 b9 49 01 e0 20 c0 a8 00 01 c0 a8 00 67

分析并判断这两个IP包是不是同一个数据报的分片?如果是那将二者排序,并判断是否能重组完成。

大家可以点击链接参考我之前的文章:网络协议分析(1)已知ip包内容,分析报文内容及作用

这个问题主要考察ip数据包的分片与重组,记住下面这句话:

判断是不是来自同一数据报,需要看这两个ip包的标识,协议,源ip,目的ip

MF=0,则是最后一片,MF=1,不是最后一遍。

答:

由以上数据可知,两个数据的标识位都为18 56(十六进制),换算成十进制为6230,协议都为01(十六进制),换算成十进制为1,源ip地址都为c0 a8 00 01,换算成十进制为192.168.0.1,目的ip地址都为c0 a8 00 67,换算为十进制为192.168.0.103,故两个ip包来自于同一数据报。

由第一个数据包可知:标志和片偏移为20 00(十六进制),换算为二进制位0010 0000 0000 0000,格式为:

由第二个数据包可知:标志和片偏移为00 b9(十六进制),换算为二进制为0000 0000 1011 1001,

格式为:

第一个MF为1,片偏移量为0,故为这是第一个分片的数据报,第二个MF为0,故这是最后一个分片的数据报。

检验是否可以重组,就需要检验一数据报的数据长度和二数据报的片偏移*8,由一数据报数据可得,首部长度为20,总长度为05 dc(十六进制),十进制为1500,则数据部分长度=总长度-首部长度,为1480,等于二数据报片偏移(185)*8,故两个数据报可以重组完成。

注:标红的这个8,大家要记住,固定就是乘8


http://www.ppmy.cn/news/283588.html

相关文章

leetcode周赛第二题6230. 长度为 K 子数组中的最大和

题目: 给你一个整数数组 nums 和一个整数 k 。请你从 nums 中满足下述条件的全部子数组中找出最大子数组和: 子数组的长度是 k,且 子数组中的所有元素 各不相同 。 返回满足题面要求的最大子数组和。如果不存在子数组满足这些条件&#xff0…

MT7621_基础篇(2) 芯片资料了解 二

本篇依然为MT7621相关外设的介绍,pin和交换switch。(无介绍的模块将在分析章节研究些许细节) USB3主机控制器和PHY 手册中没有任何介绍,只有寄存器描述。详情见手册寄存器列表。 网络 PSE: 线速(1000 Mbps&#xff0…

Linux - 如何根据名字杀掉一个进程

Linux提供了许多工具来管理系统中的进程。你可以用它们来创建、克隆、甚至销毁进程(create, clone, destroy)。有时你可能需要在Linux中按名称杀死所有进程。在Linux中,有多种方法可以做到这一点。你可以使用pkill、pgrep、pidof和killall中的任何一个函数。在这篇文…

MTK-6235

1:UCS2Strlen mmi_ucs2strlenpfnUnicodeStrlen ---> mmi_ucs2strlen;AnsiiToUnicodeString mmi_asc_to_ucs2UnicodeToAnsii mmi_ucs2_to_ascpfnUnicodeStrncmp mmi_ucs2ncmp; 2: 墙纸 #define CFG_MMI_WA…

HDU6230-Palindrome (马拉车 +BIT )

题意描述 给定一个字符串,统计有多少个子串是one−and−half palindromicone−and−half palindromic. (即字符串长度为3n−23n−2,且满足S[i]S[2n−i]S[2ni−2](1≤i≤n)S[i]S[2n−i]S[2ni−2](1≤i≤n)。 数据范围:字符串长度小于等于500000500000. …

PostgreSQL使用入门

官网:https://www.postgresql.org/中文文档:http://www.postgres.cn/docs/12/ 安装配置 MacOS HomeBrew 安装 安装: # 查找 postgresql 可用版本 $ brew search postgresql# 安装指定版本 $ brew install postgresql15# 安装默认版本 $ brew instal…

【C++】deque的用法

目录 一、容器适配器二、deque的介绍三、deque的使用及缺陷1、deque的构造函数2、deque的元素访问接口3、deque的 iterator的使用4、deque的增删查改4、deque的缺陷5、为什么选择deque作为stack和queue的底层默认容器 一、容器适配器 在了解deque前,我们先讲一讲什…

ESP32(MicroPython) 几个动画

ESP32(MicroPython)几个动画 本次发布的动画程序如下 矩形缩放 接线:OLED(IIC)SCL-->(18)SDA-->(23) #导入Pin模块 from machine import Pin import time from machine import SoftI2C from ssd1306 import SSD1306_I2C #I2…