当前位置:网站首页>网络基础 —— 报头、封装和解包
网络基础 —— 报头、封装和解包
2022-07-07 02:18:00 【abs(ln(1+NaN))】
目录
下面以快递的派发为例,来理解报头、封装和解包。
假设你在网上买了一瓶洗发水,卖家帮你装到了盒子里,盒子上注明了这个产品的质量(多少克)等信息,然后交给了快递站,快递站贴上快递单就把这个快递发出去了。
一、理解"报头"
1、什么是报头?
上面有提到两个东西,这里的快递单或者盒子上的产品信息、卖家地址就类似于报头所包含的信息。
站在网络的角度,这个产品就是数据,应用层把这个数据给传输层之前,需要加一个报头,报头包含了数据的有效长度、上层协议是什么等信息。
2、为什么需要报头?
可以举一个反例,如果没有报头,也就是说没有快递单和产品盒子,我们根本不知道这个东西从哪来,也不知道要发到哪里去,这样的话就无法进行数据传输。
3、报头包含了哪些信息?
从应用层到数据链路层,每一层都有自己的协议,而且几乎每一层都会添加一层报头,而这个报头包含的两个重要信息如下,这两个信息将会解包过程派上大用场!
- 当前层报头的长度
- 当前层使用的协议
因为不同主机要实现通信,对应层使用的协议必须相同,好比你顺丰发货,对方在圆通等快递,这显然不合理。
二、理解"封装"
那什么又是封装呢??我们把洗发水装进盒子,给盒子贴上快递单,这个过程就是封装!!
上图蓝色的方块就代表应用层添加的报头 —— 包含了有效载荷的长度(后面统一把数据称为载荷)
上图橙色的方块就代表传输层添加的"报头" —— 包含了上层协议是谁(即从哪来的)、当前层添加的"报头"长度。
网络传输中,每向下传一层就会在最前面添加一层内容。
三、理解"解包"
假设卖家收到快递了,外面的层层包装、快递单、还有产品盒子对于卖家而言,都是不需要的,卖家拆快递,把包装拆下来的过程就叫做解包!
每一层只解开与当前层对应的报头,现在报头里的两个重要内容就可以派上用场了
- 当前层报头的长度(用于解包)
- 上一层协议(要传给上一层的哪个协议)
1、如何解包
站在OS内核角度,我们只让一个指针指向数据包最开始的位置,现在已经知道了当前层报头的长度,我们只需要让指针向右移动相应的位置即可。
2、要传给上层的谁
现在解包解完了,那要继续向上传递,应该给谁呢?你可能会问,这不是直接就给上一层"传输层"吗?
准确来说是要给上层哪个协议,比如卖家是顺丰发货,而你却在圆通快递站等着,这肯定不合理。
站在网络角度,对方使用UDP协议,报头就包含了这个信息,你就应该传给传输层的UDP
边栏推荐
- C面试24. (指针)定义一个含有20个元素的double型数组a
- Unity C# 函数笔记
- Redhat5 installing vmware tools under virtual machine
- tkinter窗口选择pcd文件并显示点云(open3d)
- Navicat importing 15g data reports an error [2013 - lost connection to MySQL server during query] [1153: got a packet bigger]
- Postgresql源码(60)事务系统总结
- Basic DOS commands
- 线性代数(一)
- uniapp开发小程序如何使用微信云托管或云函数进行云开发
- 途家、木鸟、美团……民宿暑期战事将起
猜你喜欢
The difference between string constants and string objects when allocating memory
[GNN] graphic gnn:a gender Introduction (including video)
Force deduction 62 different paths (the number of all paths from the upper left to the lower right of the matrix) (dynamic planning)
ip地址那点事
开发者别错过!飞桨黑客马拉松第三期链桨赛道报名开启
Markdown displays pictures side by side
matlab / ENVI 主成分分析实现及结果分析
How to install swoole under window
Linear algebra (1)
Pinduoduo lost the lawsuit: "bargain for free" infringed the right to know but did not constitute fraud, and was sentenced to pay 400 yuan
随机推荐
Overview of FlexRay communication protocol
What are the classic database questions in the interview?
微信小程序隐藏video标签的进度条组件
Navicat导入15G数据报错 【2013 - Lost connection to MySQL server during query】 【1153:Got a packet bigger】
POI导出Excel:设置字体、颜色、行高自适应、列宽自适应、锁住单元格、合并单元格...
一段程序让你明白什么静态内部类,局部内部类,匿名内部类
博士申请 | 上海交通大学自然科学研究院洪亮教授招收深度学习方向博士生
Learning notes | data Xiaobai uses dataease to make a large data screen
哈趣投影黑馬之姿,僅用半年强勢突圍千元投影儀市場!
MySQL卸载文档-Windows版
基本Dos命令
Install mongodb database
港科大&MSRA新研究:关于图像到图像转换,Fine-tuning is all you need
项目实战 五 拟合直线 获得中线
屏幕程序用串口无法调试情况
基于FPGA的VGA协议实现
谷歌 Chrome 浏览器发布 103.0.5060.114 补丁修复 0-day 漏洞
[FPGA] EEPROM based on I2C
2022Android面试必备知识点,一文全面总结
"Parse" focalloss to solve the problem of data imbalance