数据包的跨层封装

首先,我们先简单地分析一下数据包的组成结构:
如图
在这里插入图片描述
数据包简略地分为以下几层:
二层:封装MAC地址(数据链路层)
三层:封装IP地址 — 表明源IP和目标IP,主要用于路由器之间的信息转发(网络层)
四层:封装TCP、UDP端口号,通过端口号表示访问的服务(传输层)
五层:封装DATA数据,即要传输的数据信息(应用层)

跨层封装

接下来就开始讲跨层封装
跨层封装— 应用层数据直接封装于3层报头或者2层报头
数据包的5层应用层包含了数据包要传输的信息所以一定有,后面的可以跳,例如跨过4层,只有2,3,5层,或者跨过3,4层,只有2,5层

首先,我们要知道的是,并不是所有的协议都可以进行跨层封装的,正常应用程序封装的数据流量不做跨层处理
因此跨层封装的意义在于更快的完成服务型协议间的沟通计算

那么有哪些协议可以跨层封装呢?

封装3层报头:同一广播域内的服务型协议 — ARP/OSPF… 使用的设备均为3层设备
封装2层报头:同一交换网络内的二层设备服务型协议 — STP
还有一个可以跨越网段的协议 — ICMP
这些都不是实际传输的应用,而是辅助型的协议,只是为了让网络可以通,不需要实质性的信息
可以封装的原因:
1、OSPF是路由间建邻用的,而路由器是三层设备,三层通讯设备如果携带4层,封装和解封装会变慢,且路由器是三层设备,本身就只识别三层报头
2、ARP是广播域里面获取对方MAC的,而这个行为仅限于在同一个广播域
3、ICMP的ping虽然可以跨网段,但是只是个测试型协议,不需要携带图或表等信息

那么3层或者4层都被跳过了,数据包缺少了一两层,该怎么解决?

这个简单,我们只要将该层主要的信息分片然后放入报头中就行了
跨层封装到3层报头时,IPV4报头可以对数据进行分片,之后每片内容填充于报头中,携带到目的地;

3层报头中还存在协议号,用于对标后方所封装的协议0-255,6代表TCP/17代表UDP;

其余数字每一个皆对应一个固定的跨层封装协议

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

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

相关文章

Windows图形界面(GUI)-DLG-C/C++ - 树形视图(TreeView)

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​​​​链接点击跳转博客主页 目录 树形视图(TreeView) 使用场景 消息处理 示例代码 树形视图(TreeView) 使用场景 文件浏览器:显示文件和目录的层次结构。设置菜单:在配置界面中显示嵌套…

【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)

​​​​​​​ 一、引言 pipeline(管道)是huggingface transformers库中一种极简方式使用大模型推理的抽象,将所有大模型分为音频(Audio)、计算机视觉(Computer vision)、自然语言处理&#x…

【Pytorch笔记】张量

torch.Tensor() 是 PyTorch 库中用于创建张量的一个函数。在 PyTorch 中,张量是多维数组,它们可以存储在 CPU 或 GPU 上,并且支持自动求导,这使得它们非常适合进行深度学习和科学计算。 张量可以在Python list形式下通过 torch.T…

挖矿宝藏之硬盘分区

目录 一、硬盘分区的相关知识 二、主分区、活动分区、扩展分区、逻辑盘和盘符 三、硬盘分区原因 1.减少硬盘空间的浪费 2.便于文件的分类管理 3.有利于病毒的防治 四、硬盘分区的原则 1.方便性 2.实用性 3.安全性 五、利用Diskpart进行分区 1.命令行工具Diskpart …

ARM体系结构和接口技术(五)封装RCC和GPIO库

文章目录 一、RCC(一)思路1. 找到时钟基地址2. 找到总线的地址偏移(1)AHB4总线(2)定义不同GPIO组的使能宏函数(3)APB1总线(4)定义使能宏函数 二、GPIO&#x…

捷配笔记-混合信号PCB布局设计的基本准则是什么?

混合信号PCB设计需要对模拟和数字电路有基本的了解,以最大限度地减少(如果不能防止的话)信号干扰。现代系统由数字域和模拟域均可操作的组件组成,这些组件必须经过精心设计,以确保整个系统的信号完整性。 在混合信号系…

MySQL学习记录 —— 이십이 MySQL服务器文件系统(2)

文章目录 1、日志文件的整体简介2、一般、慢查询日志1、一般查询日志2、慢查询日志FILE格式TABLE格式 3、错误日志4、二进制日志5、日志维护 1、日志文件的整体简介 中继服务器的数据来源于集群中的主服务。每次做一些操作时,把操作保存到重做日志,这样崩…

vscode+wsl2+anaconda环境的配置与使用

目录 下载anaconda Anaconda使用参考 vscodeubuntuanaconda 先用vscode连接本地ubuntu。 如果没有安装wsl2与ubuntu,可点击下面的链接。 问题:wsl install 无法解析服务器 成功记录: 在vscode终端用ubuntu安装anaconda。 创建pytho…

Spring如何管理Mapper

目录 一、背景二、猜测三、源码查看步骤1、创建MapperScannerConfigurer.java2、MapperScan注解3、MapperScannerRegistrar执行registerBeanDefinitions方法4、MapperScannerConfigurer执行postProcessBeanDefinitionRegistry方法5、执行doscan6、设置beanClass7、使用jdk生成代…

万界星空科技电线电缆MES系统实现线缆全流程追溯

MES系统通过高度集成的数据平台,对电线电缆的生产全过程进行实时监控与记录,从原材料入库开始,到生产过程中的各个关键控制点,再到成品出库,每一步操作都被详细记录并可追溯。这种全流程追溯能力主要体现在以下几个方面…

在组件中显示tuku的照片

一、问题 (1)错误:域名前面一定要加http://要不然会报错 (2)在使用 defineModel传值时一定要动态绑定,要不然图片不显示 (3)改完后在商品列表中显示图片信息必须 在显示的图片中取…

【Qt】QWidget在隐藏时,发送信号

1. 介绍 Qt中&#xff0c;QWidget隐藏时&#xff0c;默认不发送信号。需要重写hideEvent()函数实现。 2. 代码 #include <QWidget> class MyWidget : public QWidget {Q_OBJECT signals:void hiddenStateChanged(bool isHidden);protected:void hideEvent(QHideEvent*…

【代码随想录】【算法训练营】【第69天】总结篇

前言 day 69&#xff0c;训练营的最后一个周一~ 总结 收获 历时近70天的训练营&#xff0c;打卡上百道题目&#xff0c;对于数组、链表、指针等的使用更加熟练了&#xff0c;也对dfs、bfs、动态规划有所熟悉&#xff08;当然前提是我得发现题目是该解法&#xff09;……代码…

js | this 指向问题

https://juejin.cn/post/6844904083707396109 任何函数运行的时候&#xff0c;都会创建一个context对象&#xff0c;context对象有一个this对象&#xff0c;在运行的时候决定。任何函数都对应一个reference类结构体&#xff08;具体叫啥有点忘了&#xff09;&#xff0c;简单就…

Linux入门笔记(指令)

操作系统是什么&#xff1f; 操作系统是一款做软硬件管理的软件。计算机系统自下而上可以大致分为4部分&#xff1a;硬件、操作系统、应用程序和用户。操作系统管理各种计算机硬件&#xff0c;为应用程序提供基础&#xff0c;并且充当计算机硬件与用户之间的中介。重点&#x…

Mybatis——生命周期和作用域

理解不同作用域和生命周期类别是至关重要的&#xff0c;因为错误的使用会导致非常严重的并发问题。 SqlSessionFactoryBuilder&#xff1a; 一旦创建了 SqlSessionFactory&#xff0c;就不再需要它了。 局部方法变量 SqlSessionFactory&#xff1a; 可以想象为&…

WebGIS面试题(第八期)

WebGIS面试题&#xff08;第八期&#xff09; 因为这些题目都是之前面试通过记忆面试结束后记录、部分通过录音。目前我还在整理&#xff0c;当然有一部分也是我在做项目中出现的问题&#xff0c;今天就先整理一点&#xff08;偷懒&#xff09;&#xff0c;因为有些答案还需要…

力扣145题:二叉树的后序遍历

给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[3,2,1]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&#xff1a;root [1] 输出…

C++复习的长文指南

C复习的长文指南 一、入门语法知识1.预备1.1 main函数1.2 注释1.3 变量1.3 常量1.4 关键字1.5 标识符明明规则 2. 数据类型2.1 整型2.1.1 sizeof关键字 2.2 实型&#xff08;浮点型&#xff09;2.3 字符型2.4 转义字符2.5 字符串型2.6 布尔类型bool2.7 数据的输入 3. 运算符3.1…

C语言 default 踩坑

void fun(char c) {switch(c){case b :cout << "ttt" << endl;break;defualt:cout << "test" <<endl;} }这段代码中&#xff0c;理论上来说&#xff0c;当cb’时应该打印 “ttt”&#xff0c;否则&#xff0c;应该打印 “test”。…