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

【在Linux世界中追寻伟大的One Piece】IP分片和组装的具体过程

目录

1 -> IP分片和组装的具体过程

2 -> 分片与组装的过程

2.1 -> 分片

2.2 -> 组装

3 -> 分片与组装的示意图

3.1 -> 分片组装场景


1 -> IP分片和组装的具体过程

  • 16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。
  • 3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片置为0,其他是1。类似于一个结束标记。
  • 13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值除以8得到的。因此,除了最后一个报文之外(之前如果都是8的整数倍,最后一片的偏移量也一定是8的整数倍),其他报文的长度必须是8的整数倍(否则报文就不连续了)。
  • 注意:片偏移(13位)表示本片数据在它所属的原始数据报数据区中的偏移量(以8字节为单位)。

2 -> 分片与组装的过程

2.1 -> 分片

1. 检查 MTU 限制:

  • 当一个IP数据报的大小超过了网络的MTU(最大传输单元)限制时,就需要进行分片。MTU是数据链路层对IP层数据包进行封装时所能接受的最大数据长度。

2. 分割数据报:

  • IP层将原始的IP数据报分割成多个较小的片段。
  • 对于每个片段,IP层会设置相应的标识(Identification)、偏移量(Fragment Offset)和标志位(Flags)等字段。
  • 标识字段用于标识属于同一个数据报的不同分片,确保所有分片能够被正确地重新组装。
  • 偏移量字段指示了当前分片相对于原始数据报的起始位置,以 8 字节为单位。
  • 标志位字段包含了 3 个位,其中 MF(More Fragment)位用于指示是否还有更多的分片,DF(Do Not Fragment)位用于指示数据报是否允许进行分片。

3. 添加 IP 头部:

  • 每个分片都会加上自己的IP头部,与完整IP报文拥有类似的IP头结构,但MF和Fragment Offset等字段的值会有所不同。

4. 发送分片:

  • 分片在传输过程中独立传输,每个分片都有自己的IP头部,并且各自独立地选择路由。

2.2 -> 组装

1. 接收分片:

  • 当目的主机的IP层接收到这些分片后,会根据标识字段将属于同一个数据报的所有分片挑选出来。

2. 排序与组装:

  • 利用片偏移字段,IP层会对属于同一个数据报的分片进行排序。
  • 当所有的分片都到达并正确排序后,IP层会将这些分片重新组装成一个完整的IP数据报。

3. 传递给上层协议:

  • 组装好的IP数据报会传递给上层的协议进行处理。

注意:

  • IP分片对传输层是透明的,这意味着传输层无需关心数据是否被分片以及如何重新组装。

3 -> 分片与组装的示意图

3.1 -> 分片组装场景


感谢各位大佬支持!!!

互三啦!!!

相关文章:

【在Linux世界中追寻伟大的One Piece】IP分片和组装的具体过程

目录 1 -> IP分片和组装的具体过程 2 -> 分片与组装的过程 2.1 -> 分片 2.2 -> 组装 3 -> 分片与组装的示意图 3.1 -> 分片组装场景 1 -> IP分片和组装的具体过程 16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片…...

2024年中国研究生数学建模竞赛A/C/D/E题全析全解

问题一: 针对问题一,可以采用以下低复杂度模型,来计算风机主轴及塔架的疲劳损伤累积程度。 建模思路: 累积疲劳损伤计算: 根据Palmgren-Miner线性累积损伤理论,元件的疲劳损伤可以累积。因此,…...

【图虫创意-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…...

解决 npm ERR! node-sass 和 gyp ERR! node-gyp 报错问题

前言 在对一个项目进行npm i的时候 一直报错 npm ERR! code 1 npm ERR! path D:....\node-sass npm ERR! command failed 显示没有办法安装这个node-sass包 包兼容性 我电脑中默认使用的16的node版本,查找本地项目中这个包的版本和官方对于这个包的兼容&#xff…...

Golang | Leetcode Golang题解之第421题数组中两个数的最大异或值

题目: 题解: const highBit 30type trie struct {left, right *trie }func (t *trie) add(num int) {cur : tfor i : highBit; i > 0; i-- {bit : num >> i & 1if bit 0 {if cur.left nil {cur.left &trie{}}cur cur.left} else …...

每天一道面试题(15):谈谈你对CAS的理解

CAS(Compare And Swap)机制在并发编程中是一个非常重要的概念,主要用于实现原子性操作,避免使用传统的锁机制,从而提高性能。 CAS 的基本原理 CAS 的核心思想是通过比较当前值与预期值来决定是否执行修改。其流程如下…...

如何将MySQL卸载干净(win11)

相信点进来的你肯定是遇到了这个问题,那就是在安装MySQL的时候操作错误,最后结果不是自己想要的。卸载重新安装又发现安装不了。其实最主要的原因就是没有将MySQL卸载干净,那么如何把MySQL卸载干净?下面本篇文章就来给大家一步步介…...

【Linux】简易日志系统

目录 一、概念 二、可变参数 三、日志系统 一、概念 一个正在运行的程序或系统就像一个哑巴,一旦开始运行我们很难知晓其内部的运行状态。 但有时在程序运行过程中,我们想知道其内部不同时刻的运行结果如何,这时一个日志系统可以有效的帮…...

yum 集中式安装 LNMP

目录 安装 nginx 安装 mysql 安装 php 配置lnmp 配置 nginx 支持 PHP 解析 安装 nginx 修改yum源 将原本的yum源备份 vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/7/$basearch/ gpgcheck0 enable…...

淘宝扭蛋机小程序,扭蛋机文化下的新体验

在数字化时代中,扭蛋机逐渐从传统的线下机器转移到了线上互联网中,市场得到了创新发展。扭蛋机小程序具有便捷、多样化、个性化的特点,迎合了当下消费者的线上消费习惯,又能够让扭蛋机玩家体验到新鲜有趣的扭蛋。 扭蛋机是一种热…...

Go搭建TcpSocket服务器

1.net包的强大功能 不可否认,go在网络服务开发有强大的优势。net库是一个功能强大的网络编程库,它提供了构建TCP、UDP和HTTP服务器和客户端所需的所有基础工具。 例如,搭建tcp服务器,只需要几行代码。 func main() {listener, …...

hadoop3跑第一个例子wordcount

1、创建目录 hdfs dfs -mkdir -p /user/input2、创建测试文件,并上传文件到hdfs echo 1 > 1.txt hdfs dfs -put 1.txt /user/input3、进入hadoop-3目录,并创建测试文件 cd /app/hadoop-3创建目录 mkdir wcinput cd wcinput 保存wc.input nano wc.i…...

Maven笔记(二):进阶使用

Maven笔记(二)-进阶使用 一、Maven分模块开发 分模块开发对项目的扩展性强,同时方便其他项目引入相同的功能。 将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享(类似Jar包一样之间引用、复用)…...

Apache ZooKeeper 及 Curator 使用总结

1. 下载 官网地址:Apache ZooKeeper 点击下载按钮 选择对应的版本进行下载 2. 使用 1、解压 tar -zxf apache-zookeeper-3.9.2-bin.tar.gz2、复制配置文件,有一个示例配置文件 conf/zoo_sample.cfg,此文件不能生效,需要名称为…...

深入探索:MATLAB中的硬件支持包(HSP)及其应用

在MATLAB环境中,硬件支持包(HSP)扮演着至关重要的角色,尤其是在与硬件交互和嵌入式系统开发方面。HSP提供了一套工具和库,使得MATLAB能够与特定的硬件平台进行有效通信,实现代码的生成和优化。本文将详细介…...

5.内容创作的未来:ChatGPT如何辅助写作(5/10)

引言 在信息爆炸的时代,内容创作已成为连接品牌与受众、传递信息与知识、以及塑造文化与观念的重要手段。随着数字媒体的兴起,内容创作的需求日益增长,对创作者的写作速度和质量提出了更高的要求。人工智能(AI)技术的…...

Day26_0.1基础学习MATLAB学习小技巧总结(26)——数据插值

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。 参考书目: 1、《MATLAB基础教程 (第三版) (薛山)》 2、《MATL…...

SQL进阶技巧:火车票相邻座位预定一起可能情况查询算法 ?

目录 0 场景描述 1 数据准备 2 问题分析 2.1 分析函数法 2.2 自关联求解 3 小结...

神经网络构建原理(以MINIST为例)

神经网络构建原理(以MINIST为例) 在 MNIST 手写数字识别任务中,构建神经网络并训练模型来进行分类是经典的深度学习应用。MNIST 数据集包含 28x28 像素的手写数字图像(0-9),任务是构建一个神经网络,能够根据输入的图像…...

【ArcGIS微课1000例】0123:数据库中要素类批量转为shapefile

除了ArcGIS之外的其他GIS平台,想要打开ArcGIS数据库,可能无法直接打开,为了便于使用shp,建议直接将数据库中要素类批量转为shapefile。 文章目录 一、连接至数据库二、要素批量转shp一、连接至数据库 打开ArcMap,或者打开ArcCatalog,找到数据库连接,如下图: 数据库为个…...

6自由度KUKA机械臂自主抓取系统:ROS架构设计与逆运动学技术实现深度解析

6自由度KUKA机械臂自主抓取系统:ROS架构设计与逆运动学技术实现深度解析 【免费下载链接】pick-place-robot Object picking and stowing with a 6-DOF KUKA Robot using ROS 项目地址: https://gitcode.com/gh_mirrors/pi/pick-place-robot 在工业自动化领…...

从零上手向量数据库:基于Pinecone官方示例构建AI应用实战指南

1. 项目概述:从零上手向量数据库与AI应用开发如果你对AI应用开发感兴趣,尤其是想了解如何让大语言模型(LLM)拥有“记忆”,或者想构建一个能理解语义而非关键词的智能搜索系统,那么你很可能已经听说过“向量…...

SRWE终极窗口管理指南:免费解锁Windows窗口任意调整能力

SRWE终极窗口管理指南:免费解锁Windows窗口任意调整能力 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否曾为Windows窗口管理的限制感到困扰?想要调整游戏窗口大小进行高清截图&am…...

免费图片转3D模型完整指南:5分钟学会ImageToSTL将照片变成立体浮雕

免费图片转3D模型完整指南:5分钟学会ImageToSTL将照片变成立体浮雕 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the…...

Spinach印相紧急修复方案:当--v 6.2输出突然丢失青橙分离感时,立即执行的4步CLI热补丁与config.json强制回滚指令

更多请点击: https://intelliparadigm.com 第一章:Spinach印相紧急修复方案:当--v 6.2输出突然丢失青橙分离感时,立即执行的4步CLI热补丁与config.json强制回滚指令 Spinach 6.2 版本在部分 GPU 加速路径下会因色彩空间映射缓存污…...

Anaconda环境翻车实录:从‘CondaMemoryError’到完美恢复的完整指南

Anaconda环境崩溃自救手册:从诊断到彻底修复的实战指南 那天下午,当你在终端第15次尝试运行conda update --all时,屏幕上突然跳出鲜红的"CondaMemoryError"字样,整个开发环境瞬间陷入瘫痪。这不是普通的报错&#xff0c…...

告别软件模拟!用GD32F303硬件I2C驱动AT24C02 EEPROM保姆级教程(附完整代码)

从软件模拟到硬件加速:GD32F303硬件I2C驱动AT24C02全流程解析 当你在嵌入式项目中频繁操作EEPROM时,是否遇到过这样的困扰:软件模拟I2C占用大量CPU资源,时序稳定性受中断影响,传输速率始终无法突破瓶颈?这些…...

NVIDIA Profile Inspector完整指南:解锁显卡隐藏性能的终极方案

NVIDIA Profile Inspector完整指南:解锁显卡隐藏性能的终极方案 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是否曾经感觉自己的NVIDIA显卡性能没有完全发挥?明明配置不差&…...

关于python中打开文件,以及可能错误,介绍

**该mode是基于open()函数里参数的调整** 错误代码 f r"C:\dj\dw1.txt" b f.read(c) print(b) f.close() 正确代码 f open(r"C:\dj\dw1.txt") s f.read() print(s) f.close()open()函数需要后面的打开路径,r/R表示该代码的的原意 mode…...

告别图形界面:在Linux终端中高效管理百度网盘文件的完整指南

1. 为什么需要命令行管理百度网盘? 很多开发者都遇到过这样的场景:远程连接到Linux服务器时,需要快速上传日志文件到网盘,或者从网盘下载数据集到服务器。传统做法是先把文件下载到本地电脑,再用SFTP工具上传到服务器—…...