当前位置:网站首页>网络基础 —— 报头、封装和解包
网络基础 —— 报头、封装和解包
2022-07-07 02:18:00 【abs(ln(1+NaN))】
目录
下面以快递的派发为例,来理解报头、封装和解包。
假设你在网上买了一瓶洗发水,卖家帮你装到了盒子里,盒子上注明了这个产品的质量(多少克)等信息,然后交给了快递站,快递站贴上快递单就把这个快递发出去了。
一、理解"报头"
1、什么是报头?
上面有提到两个东西,这里的快递单或者盒子上的产品信息、卖家地址就类似于报头所包含的信息。
站在网络的角度,这个产品就是数据,应用层把这个数据给传输层之前,需要加一个报头,报头包含了数据的有效长度、上层协议是什么等信息。
2、为什么需要报头?
可以举一个反例,如果没有报头,也就是说没有快递单和产品盒子,我们根本不知道这个东西从哪来,也不知道要发到哪里去,这样的话就无法进行数据传输。
3、报头包含了哪些信息?
从应用层到数据链路层,每一层都有自己的协议,而且几乎每一层都会添加一层报头,而这个报头包含的两个重要信息如下,这两个信息将会解包过程派上大用场!
- 当前层报头的长度
- 当前层使用的协议
因为不同主机要实现通信,对应层使用的协议必须相同,好比你顺丰发货,对方在圆通等快递,这显然不合理。
二、理解"封装"
那什么又是封装呢??我们把洗发水装进盒子,给盒子贴上快递单,这个过程就是封装!!
上图蓝色的方块就代表应用层添加的报头 —— 包含了有效载荷的长度(后面统一把数据称为载荷)
上图橙色的方块就代表传输层添加的"报头" —— 包含了上层协议是谁(即从哪来的)、当前层添加的"报头"长度。
网络传输中,每向下传一层就会在最前面添加一层内容。
三、理解"解包"
假设卖家收到快递了,外面的层层包装、快递单、还有产品盒子对于卖家而言,都是不需要的,卖家拆快递,把包装拆下来的过程就叫做解包!
每一层只解开与当前层对应的报头,现在报头里的两个重要内容就可以派上用场了
- 当前层报头的长度(用于解包)
- 上一层协议(要传给上一层的哪个协议)
1、如何解包
站在OS内核角度,我们只让一个指针指向数据包最开始的位置,现在已经知道了当前层报头的长度,我们只需要让指针向右移动相应的位置即可。
2、要传给上层的谁
现在解包解完了,那要继续向上传递,应该给谁呢?你可能会问,这不是直接就给上一层"传输层"吗?
准确来说是要给上层哪个协议,比如卖家是顺丰发货,而你却在圆通快递站等着,这肯定不合理。
站在网络角度,对方使用UDP协议,报头就包含了这个信息,你就应该传给传输层的UDP
边栏推荐
- Learning notes | data Xiaobai uses dataease to make a large data screen
- 请问如何查一篇外文文献的DOI号?
- How to set up in touch designer 2022 to solve the problem that leap motion is not recognized?
- Unity C# 函数笔记
- Redhat5 installing vmware tools under virtual machine
- [SOC FPGA] peripheral PIO button lights up
- 地质学类比较有名的外文期刊有哪些?
- How to install swoole under window
- C interview 24 (pointer) define a double array with 20 elements a
- Leite smart home longhaiqi: from professional dimming to full house intelligence, 20 years of focus on professional achievements
猜你喜欢
uniapp开发小程序如何使用微信云托管或云函数进行云开发
dolphinscheduler3. X local startup
一段程序让你明白什么静态内部类,局部内部类,匿名内部类
Redis (I) -- getting to know redis for the first time
【从零开始】win10系统部署Yolov5详细过程(CPU,无GPU)
How to install swoole under window
Go straight to the 2022ecdc fluorite cloud Developer Conference: work with thousands of industries to accelerate intelligent upgrading
偏执的非合格公司
2022Android面试必备知识点,一文全面总结
Ha Qu projection dark horse posture, only half a year to break through the 1000 yuan projector market!
随机推荐
Performance comparison between Ceres solver and g2o
学术报告系列(六) - Autonomous Driving on the journey to full autonomy
ETCD数据库源码分析——从raftNode的start函数说起
JWT 认证
线性代数(一)
Niuke Xiaobai monthly race 52 E. sum logarithms in groups (two points & inclusion and exclusion)
雷特智能家居龙海祁:从专业调光到全宅智能,20年专注成就专业
Prompt for channel security on the super-v / device defender side when installing vmmare
JVM in-depth
快速定量,Abbkine 蛋白质定量试剂盒BCA法来了!
【从零开始】win10系统部署Yolov5详细过程(CPU,无GPU)
Abnova 体外转录 mRNA工作流程和加帽方法介绍
[start from scratch] detailed process of deploying yolov5 in win10 system (CPU, no GPU)
【解决】Final app status- UNDEFINED, exitCode- 16
[SOC FPGA] peripheral PIO button lights up
Redhat5 installing vmware tools under virtual machine
Abnova 免疫组化服务解决方案
Haqi projection Black Horse posture, avec seulement six mois de forte pénétration du marché des projecteurs de 1000 yuans!
如何解决数据库插入数据显示SQLSTATE[HY000]: General error: 1364 Field ‘xxxxx‘ doesn‘t have a default value错误
Postgresql中procedure支持事务语法(实例&分析)