【在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 -> 分片组装场景


感谢各位大佬支持!!!

互三啦!!!

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

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

相关文章

利士策分享,华为三折叠手机:重塑未来科技生活的里程碑

利士策分享,华为三折叠手机:重塑未来科技生活的里程碑 在这个日新月异的科技时代,华为再次以惊人的创新力,引领我们迈向智能设备的全新纪元——华为三折叠手机, 不仅是技术的飞跃,更是对未来生活方式的一次…

【保奖思路】2024年华为杯研赛B题完整代码建模过程(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 点击链接加入【2024华为杯研赛资料汇总】:https://qm.qq.com/q/XzdIsvbiM0https://qm.qq.com/q/XzdIsvbiM0请根据附件WLAN网络实测训练集中所提供…

代理IP对于网络爬虫业务的重要性

在现代互联网业务中,网络爬虫已成为企业获取大量数据的重要工具。在这一过程中,代理IP发挥着至关重要的作用,特别是对于高频率的数据抓取任务,代理IP能够有效提升爬虫的成功率和安全性。 1. 绕过IP封禁 网站为了防止过度的爬虫行…

TC-RAG: 图灵完备的检索增强

1. 背景 大型语言模型在众多关键领域均已取得显著进展,并在各种下游任务中展现出卓越性能。 在医疗领域,这些模型尤显潜力,特别是在对责任感和可靠性要求极高的健康护理领域。这些模型通过全面的医学知识预训练,不仅能支持医生做…

Python语法(二)——函数

文章目录 函数语法格式函数参数链式调用嵌套调用函数递归变量作用域 函数 一段可以被重复使用的代码片段 求数列的和, 不使用函数 # 1.求1-100的和 sum 0 for i in range(1, 101):sum i print(fsum {sum})# 2.求300-400的和 sum 0 for i in range(300, 401):sum i print(…

NASA:ATLAS/ICESat-2 L3A 陆地和植被高度速览,第 6 版

目录 简介 参数 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3A 陆地和植被高度速览,第 6 版 ATLAS/ICESat-2 L3A Land and Vegetation Height Quick Look V006 简介 ATL08QL 是 ATL08 的快速查看版本。 一旦 ATL08 的最终文件可…

MongoDB在Linux系统中的安装与配置指南

在这篇文章中,我们将介绍如何在CentOS 7服务器上安装MongoDB,并通过DataX将数据从MongoDB迁移到MySQL数据库。这将包括MongoDB的安装、配置、数据准备以及使用DataX进行数据迁移的详细步骤。 MongoDB简介 MongoDB是一个高性能、开源、无模式的文档型数据…

[Java并发编程] synchronized(含与ReentrantLock的区别)

文章目录 1. synchronized与ReentrantLock的区别2. synchronized的作用3. synchronized的使用3.1 修饰实例方法,作用于当前实例,进入同步代码前需要先获取实例的锁3.2 修饰静态方法,作用于类的Class对象,进入修饰的静态方法前需要…

数据结构:二叉树(2)

ps:爆更第二期 前言 普通的树的实用价值比较小,将树更一步特殊化成二叉树,将获得更多的特殊性质。 例如搜索二叉树,红黑树等。 这篇博文主要介绍二叉树的基础知识,进阶版高级二叉树,后续会持续更新。 二叉…

RK3568平台(基础篇)万用表的使用

一.万用表的通断判断 万用表两个笔头的插法:黑笔头是插在COM的孔里面,红色笔头可以插在其他的三个孔里面,20A和mA分别用来测电流,另外一个孔可以用来测其他(电压 电阻)。 以下这个三角符号(像wifi一样的)可以用来测通断: 使用万用表的红笔和黑笔进行短接,这时候两端…

PAT (Advanced Level) Practice——1020Tree Traversals

链接: 1020 Tree Traversals - PAT (Advanced Level) Practice (pintia.cn) 题目大意: 首先给出一个整数n,表示序列一共有多少个数。接下来给出一棵树的后序遍历和中序遍历,根据后序遍历和中序遍历给出层序遍历。 题解&#x…

【技术调研】三维(7)-Unity基础笔记

安装 ​ 最好使用长期维护版本。 创建项目 ​ 略 窗口布局 Hierarchy:层级面板,展示当前打开的场景里面有哪些物体。 Scene:场景面板,显示当前场景的样子 Game:游戏面板,场景运行的时候的样子 Inspector:检视面板(或属性面板),查看一个游戏物体由哪些组件组成。 …

德勤校招网申笔试综合能力测试SHL题库与面试真题攻略

德勤的综合能力测试(General Ability)是其校园招聘在线测评的关键环节,旨在评估应聘者的多项认知能力。以下是对这部分内容的全面整合: 综合能力测试(General Ability) 测试时长为46分钟,包含…

9.3Otsu阈值分割

基本概念 在OpenCV中,Otsu阈值分割是一种全局阈值分割方法,但它会自动选择一个最佳的阈值来分割图像,这个阈值是通过最小化类内方差或等价地最大化类间方差来确定的。OpenCV提供了cv::threshold函数来实现这一功能,其中可以指定c…

线段树-认识线段树+实现线段树

一、认识线段树 1、定义 线段树是平衡二叉树 2、特点 线段树将一个区间划分成单元区间,每个单元区间对应线段树中的一个结点 3、应用 频繁查找一个数组中指定区间内的和、最值 学了动态规划后使用迭代要好过使用递归,因为递归每次进去是有空间损耗…

如何在qtcreator debugger上运行gdb命令

How to run gdb commands from qtcreator debugger? | Qt Forum gdb 调试基础操作和在qtcreator中使用gdb调试_qt gdb-CSDN博客 输出变量名: p变量名 ------------ gdb调试技巧(二)———— gdb 条件断点_gdb设置带函数入参判断的条件断点…

UE Asset Batch Duplication插件

目录 准备工作 "Scripting library" 三个最重要的功能(前两个是UEditorUtilityLibrary中的) 自动创建声明: TArray T 的含义 F 的含义 Live Coding (Ctrlalt F11) Live Coding 的工作流程&#xff…

时序预测|基于灰狼优化LightGBM的时间序列预测Matlab程序GWO-LightGBM 单变量和多变量 含基础模型

时序预测|基于灰狼优化LightGBM的时间序列预测Matlab程序GWO-LightGBM 单变量和多变量 含基础模型 文章目录 一、基本原理原理概述流程注意事项 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 时序预测中使用灰狼优化(GWO)结合LightGBM的…

Hash-通过哈希桶解决Hash冲突

哈希桶 基本结构 template<class T> struct HashNode {T _data;HashNode<T>* _next; }; template<class K,class T,class KeyOfT> class HashTable {typedef HashNode<T> Node; public:private:vector<Node*> _tables;size_t _num; }; insert …

《飞机大战游戏》实训项目(Java GUI实现)(设计模式)(简易)

目录 一、最终实现后&#xff0c;效果如下。 &#xff08;1&#xff09;简单介绍本游戏项目&#xff08;待完善&#xff09; &#xff08;2&#xff09;运行效果图&#xff08;具体大家自己可以试&#xff09; 初始运行情况。 手动更换背景图。 通过子弹攻击敌机&#xff0c;累…