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

news2024/11/18 14:45:07

目录

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.coloradmin.cn/o/2166702.html

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

相关文章

linux入门到实操-11 Linux用户权限管理:添加和查看用户、获取root权限和删除用户、用户组管理

教程来源:B站视频BV1WY4y1H7d3 3天搞定Linux,1天搞定Shell,清华学神带你通关_哔哩哔哩_bilibili 整理汇总的课程内容笔记和课程资料(包含课程同版本linux系统文件等内容),供大家学习交流下载:…

Verba - Weaviate RAG 私人助理

文章目录 一、关于 Verba什么是Verba?功能列表 二、Verba入门安装部署 三、API密钥1、Weaviate2、Ollama3、UNSTRUCTURED4、AssemblyAI5、OpenAI6、HuggingFace 四、如何使用pip进行部署五、如何从源代码构建六、如何使用Docker安装VerbaVerba Walkthrough选择您的部…

进来看看吧,产品经理做APP从头到尾的所有工作流程详解!

一、项目启动前 从事产品的工作一年多,但自己一直苦于这样或者那样的困惑,很多人想要从事产品,或者老板自己创业要亲自承担产品一职,但他们对产品这个岗位的认识却不明晰,有的以为是纯粹的画原型,有的是以…

BACnet MS/TP协议解析(3)

1、MS/TP帧格式 例如数据(hex):55 FF 01 03 02 00 00 D7 0x550xff0x010x030x020x000x000xD7BACnet数据BACnet数据CRC帧头帧类型目的地址源地址BACnet数据长度,大端CRC 2、帧类型 帧类型目前定义为 0-7,8-127 为 AS…

vue3 vite模式配置测试,开发、生产环境以及代理配置

1、首先在根目录下创建三个文本文件:.env.development,.env.production,.env.test .env.development中的内容为: // 开发环境 .env.development NODE_ENV development VITE_APP_MODE development VITE_OUTPUTDIR dist_dev /…

基于Java的宠物之家小程序 宠物服务小程序【源码+调试】

精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻 💖🔥作者主页:计算机毕设木哥🔥 💖 文章目录 一、宠物之家小程…

FPGA第 11 篇,Verilog 系统函数( Verilog 中的系统函数)

前言 Verilog 作为一种强大的硬件描述语言,不仅提供了用于设计和仿真数字电路的基础语法,还包含了丰富的系统函数,帮助我们高效地完成复杂的硬件操作。系统函数是 Verilog 语言中预定义的特殊函数,通常以 $ 开头,它们…

【深度学习】(7)--神经网络之保存最优模型

文章目录 保存最优模型一、两种保存方法1. 保存模型参数2. 保存完整模型 二、迭代模型 总结 保存最优模型 我们在迭代模型训练时,随着次数初始的增多,模型的准确率会逐渐的上升,但是同时也随着迭代次数越来越多,由于模型会开始学…

今日不错的讲企业架构的好图

今日不错的讲企业架构的好图,来源B站不错的UP主:企业架构知识体系-业务技术管理的知识框架_哔哩哔哩_bilibili

grafana频繁DataSourceError问题

背景 随着 Grafana 数据量的不断增加,逐渐暴露出以下问题: Grafana 页面加载缓慢;Grafana 告警频繁出现 DatasourceError 错误。 对于第一个问题,大家可以参考这篇文章:Grafana 加载缓慢的解决方案。 不过&#xf…

【Unity踩坑】Textmesh Pro是否需要加入Version Control?

问题:如果Unity 项目中用到了Textmesh pro,相关的文件是否也需要签入呢? 回答: 在使用 Unity 的 Version Control(例如 Plastic SCM 或 Git)时,如果你的项目中使用了 TextMesh Pro&#xff0c…

条件字段有索引,为什么查询也这么慢?

如果我们想在某一本书中找到特定的主题,一般最快的方法是先看索引,找到对应的主题在哪个页码。 而对于 MySQL 而言,如果需要查找某一行的值,可以先通过索引找到对应的值,然后根据索引匹配的记录找到需要查询的数据行。…

家政服务预约系统小程序的设计

管理员账户功能包括:系统首页,个人中心,客户管理,员工管理,家政服务管理,服务预约管理,员工风采管理,客户需求管理,接单信息管理 微信端账号功能包括:系统首…

Java | Leetcode Java题解之第430题扁平化多级双向链表

题目: 题解: class Solution {public Node flatten(Node head) {dfs(head);return head;}public Node dfs(Node node) {Node cur node;// 记录链表的最后一个节点Node last null;while (cur ! null) {Node next cur.next;// 如果有子节点&#xff0…

后端(实例)08

设计一个前端在数据库调取数据的表格&#xff0c;并完成基础点击增删改查的功能&#xff1a; 1.首先写一个前端样式&#xff08;空壳&#xff09; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Insert title here&l…

VUE条件树查询

看如下图所示的功能&#xff0c;是不是可高级了&#xff1f;什么&#xff0c;你没看懂&#xff1f;拜托双击放大看&#xff01; 是的&#xff0c;我最近消失了一段时间就是在研究这个玩意的实现&#xff0c;通过不懈努力与钻研并参考其他人员实现并加以改造&#xff0c;很好&am…

人工智能时代的网络空间战略稳定及其挑战

文章目录 前言一、人工智能时代的网络空间战略稳定及其挑战(一)国内政治与官僚主义二、大国竞争与溯源政治三、国际法规与治理限制总结前言 人工智能的武器化应用在短期内将同时强化网络空间中进攻方和防御方的能力,但从长期看将有利于防御方。这种态势将令传统威慑逻辑重新…

[数据库实验三]安全性

目录 一、实验目的与要求&#xff1a; 二、实验内容&#xff1a; 三、实验小结 一、实验目的与要求&#xff1a; 1、设计用户子模式 2、根据实际需要创建用户角色及用户&#xff0c;并授权 3、针对不同级别的用户定义不同的视图&#xff0c;以保证系统的安全性 二、实验内…

Springboot jPA+thymeleaf实现增删改查

项目结构 pom文件 配置相关依赖&#xff1a; 2.thymeleaf有点类似于jstlel th:href"{url}表示这是一个链接 th:each"user : ${users}"相当于foreach&#xff0c;对user进行循环遍历 th:if进行if条件判断 {变量} 与 ${变量}的区别: 4.配置好application.ym…

【SemeDrive】【X9H】如何修改 SAFETY_FAULT 输出 PWM 频率

前言&#xff1a; SAFETY_FAULT 也是 SEM_FAULT&#xff0c;在原理图上会有不同的标注&#xff0c;但意义一样。 默认的 SAFETY_FAULT 正常时输出 PWM 频率为 100 MHz&#xff0c;过高的频率有时会导致无法通过 EMI 测试&#xff0c;需要降低频率。以下描述如何将正常时的 S…