当前位置:网站首页>网络基础 —— 报头、封装和解包
网络基础 —— 报头、封装和解包
2022-07-07 02:18:00 【abs(ln(1+NaN))】
目录
下面以快递的派发为例,来理解报头、封装和解包。
假设你在网上买了一瓶洗发水,卖家帮你装到了盒子里,盒子上注明了这个产品的质量(多少克)等信息,然后交给了快递站,快递站贴上快递单就把这个快递发出去了。
一、理解"报头"
1、什么是报头?
上面有提到两个东西,这里的快递单或者盒子上的产品信息、卖家地址就类似于报头所包含的信息。
站在网络的角度,这个产品就是数据,应用层把这个数据给传输层之前,需要加一个报头,报头包含了数据的有效长度、上层协议是什么等信息。
2、为什么需要报头?
可以举一个反例,如果没有报头,也就是说没有快递单和产品盒子,我们根本不知道这个东西从哪来,也不知道要发到哪里去,这样的话就无法进行数据传输。
3、报头包含了哪些信息?
从应用层到数据链路层,每一层都有自己的协议,而且几乎每一层都会添加一层报头,而这个报头包含的两个重要信息如下,这两个信息将会解包过程派上大用场!
- 当前层报头的长度
- 当前层使用的协议
因为不同主机要实现通信,对应层使用的协议必须相同,好比你顺丰发货,对方在圆通等快递,这显然不合理。
二、理解"封装"
那什么又是封装呢??我们把洗发水装进盒子,给盒子贴上快递单,这个过程就是封装!!
上图蓝色的方块就代表应用层添加的报头 —— 包含了有效载荷的长度(后面统一把数据称为载荷)
上图橙色的方块就代表传输层添加的"报头" —— 包含了上层协议是谁(即从哪来的)、当前层添加的"报头"长度。
网络传输中,每向下传一层就会在最前面添加一层内容。
三、理解"解包"
假设卖家收到快递了,外面的层层包装、快递单、还有产品盒子对于卖家而言,都是不需要的,卖家拆快递,把包装拆下来的过程就叫做解包!
每一层只解开与当前层对应的报头,现在报头里的两个重要内容就可以派上用场了
- 当前层报头的长度(用于解包)
- 上一层协议(要传给上一层的哪个协议)
1、如何解包
站在OS内核角度,我们只让一个指针指向数据包最开始的位置,现在已经知道了当前层报头的长度,我们只需要让指针向右移动相应的位置即可。
2、要传给上层的谁
现在解包解完了,那要继续向上传递,应该给谁呢?你可能会问,这不是直接就给上一层"传输层"吗?
准确来说是要给上层哪个协议,比如卖家是顺丰发货,而你却在圆通快递站等着,这肯定不合理。
站在网络角度,对方使用UDP协议,报头就包含了这个信息,你就应该传给传输层的UDP
边栏推荐
- Install mongodb database
- How to find the literature of a foreign language journal?
- How to set up in touch designer 2022 to solve the problem that leap motion is not recognized?
- Unity C# 函数笔记
- C language (structure) defines a user structure with the following fields:
- POI导出Excel:设置字体、颜色、行高自适应、列宽自适应、锁住单元格、合并单元格...
- Cloudcompare point pair selection
- 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
- HKUST & MsrA new research: on image to image conversion, fine tuning is all you need
猜你喜欢
How to use wechat cloud hosting or cloud functions for cloud development of unapp development applet
What books can greatly improve programming ideas and abilities?
[SOC FPGA] custom IP PWM breathing lamp
Several key steps of software testing, you need to know
途家、木鸟、美团……民宿暑期战事将起
Audio distortion analysis of DSP and DAC based on adau1452
string(讲解)
LM11丨重构K线构建择时交易策略
2022Android面试必备知识点,一文全面总结
JWT certification
随机推荐
C interview 24 (pointer) define a double array with 20 elements a
直击2022ECDC萤石云开发者大会:携手千百行业加速智能升级
力扣62 不同路径(从矩阵左上到右下的所有路径数量) (动态规划)
POI export to excel: set font, color, row height adaptation, column width adaptation, lock cells, merge cells
K8s running Oracle
Knight defeats demon king (Backpack & DP)
Handling hardfault in RT thread
微信小程序隐藏video标签的进度条组件
Doctoral application | Professor Hong Liang, Academy of natural sciences, Shanghai Jiaotong University, enrolls doctoral students in deep learning
Redis(一)——初识Redis
Abnova 免疫组化服务解决方案
CloudCompare-点对选取
HKUST & MsrA new research: on image to image conversion, fine tuning is all you need
【OpenCV】形态学滤波(2):开运算、形态学梯度、顶帽、黑帽
JMeter function assistant - random value, random string, fixed value random extraction
MySQL installation
Force deduction 62 different paths (the number of all paths from the upper left to the lower right of the matrix) (dynamic planning)
怎样查找某个外文期刊的文献?
Markdown displays pictures side by side
2022Android面试必备知识点,一文全面总结