网络数据传输中的封装与解封装详解

注:机翻,未校对。

The goal of networks is to transmit data from one host to another.
网络的目标是将数据从一个主机传输到另一个主机。

在这里插入图片描述

Encapsulation 封装

To achieve this goal, each layer adds its own header to the data. A header contains information specific for that layer, and it precedes the data itself.
为了实现此目标,每一层都会向数据添加自己的标头。标头包含特定于该层的信息,并且位于数据本身之前

在这里插入图片描述

Consider a case where we have a lookup service, used in order to find a person’s phone number, given the person’s name. The data consists of the person’s first and last name.
考虑一个案例,我们有一个查找服务,用于查找一个人的电话号码,给定这个人的名字。数据由此人的名字和姓氏组成。

Before the packet is sent, the fifth layer might add its own header, describing that this is a REQUEST packet. The header might also specify that this is a request to map from a person’s name to a phone number, and not vice versa.
在发送数据包之前,第五层可能会添加自己的标头,描述这是一个 REQUEST 数据包。标头还可以指定这是从人员姓名映射到电话号码的请求,反之亦然。

image-64

Header of the 5th layer, with data

Then, the fifth layer passes the data to the fourth layer. Note, that the fourth layer regards everything as data – ones and zeroes. It doesn’t care if the fifth layer added a header, or what is written inside that header.
然后,第五层将数据传递到第四层。请注意,第四层将所有内容视为数据——1 和 0。它不在乎第五层是否添加了标题,也不在乎该标题中写了什么。

The fourth layer then adds its own header. For instance, it might specify that the requested service is the names-and-phones service. It may also include a sequential number for the packet, so it can be identified later.
然后,第四层添加自己的标题。例如,它可能指定请求的服务是姓名和电话服务。它还可能包括数据包的序列号,以便以后可以识别。

image-65

Header of the 4th layer, with data which includes the 5th layer’s header

Afterwards, the fourth layer will pass the packet to the third layer. Again, the third layer will regard everything it has received – including the data itself, the header added by the fifth layer, and the header added by the fourth layer – simply as a chunk of data.
之后,第四层将数据包传递到第三层。同样,第三层将它收到的所有内容(包括数据本身、第五层添加的标头和第四层添加的标头)简单地视为数据块。

Then, the third layer will add its own header. For instance, it may include the source address and destination address of the packet.
然后,第三层将添加自己的标题。例如,它可能包括数据包的源地址和目标地址。

image-66

Header of the 4th layer, with data which includes the 4th layer’s header and data

This process goes on. So, each layer adds its own header to the packet*. This process is called encapsulation.*
这个过程还在继续。因此,每一层都会向数据包*添加自己的标头。此过程称为封装。

On the other end, the receiver gets the packet and needs to read and remove the headers.
在另一端,接收方获取数据包,需要读取和删除标头。

* The second layer may also include a trailer – an additional chunk of bits following the data, with some information.
* 第二层也可包括一个“尾部” —— 一组附加在数据后面的比特块,包含一些信息。

Putting it All Together 把它们放在一起

Now that we have covered the five layers, let’s have one example using all of them together.
现在我们已经介绍了这五个层,让我们举一个例子来同时使用它们。

在这里插入图片描述

Let’s say we would like to send a video file to our friend who lives in France, while we are enjoying a trip in Argentina. For that, we are using an email service.
假设我们想向住在法国的朋友发送一个视频文件,而我们正在阿根廷旅行。为此,我们正在使用电子邮件服务。

The fifth layer defines how the email will be transmitted. For example, it includes the email address of the sender, as well as the receiver. It contains a title, and the body of the message. It requires that we follow a specific template of an email address, that will be included in the header of this layer.
第五层定义了电子邮件的传输方式。例如,它包括发件人和收件人的电子邮件地址。它包含标题和邮件正文。它要求我们遵循电子邮件地址的特定模板,该模板将包含在此图层的标题中。

image-63

The five layers model, with an example of sending an email

Then, the fifth layer uses the fourth layer in order to split the email into chunks. Of course, each chunk will also carry the fourth layer’s header. It is also used in order to specify that we are currently using an email service.
然后,第五层使用第四层将电子邮件拆分为块。当然,每个块也将携带第四层的标题。它还用于指定我们当前正在使用电子邮件服务。

In this case, we definitely want the connection to be reliable – so the receiver will be able to play our video file correctly. Thus, the fourth layer will also handle reliability. On the receiver’s end, it might send an acknowledgment packet for every packet it receives.
在这种情况下,我们绝对希望连接可靠——这样接收器才能正确播放我们的视频文件。因此,第四层也将处理可靠性。在接收方端,它可能会为接收的每个数据包发送一个确认数据包。

The third layer will define the best route for every packet to be sent. It might choose different routes for different packets. Among other things, its header will contain the source and destination addresses for the packet.
第三层将为要发送的每个数据包定义最佳路由。它可能会为不同的数据包选择不同的路由。除其他事项外,其标头将包含数据包的源地址和目标地址。

The second layer will be responsible for every link between two directly connected devices. Its header will include the MAC addresses for each device.
第二层将负责两个直接连接的设备之间的每个链接。其标头将包括每个设备的 MAC 地址。

The first layer is responsible for encoding all the ones and zeros, and to pass them over the line. And then, decoding and reading those ones and zeroes on the other end. On this layer, we don’t really have a header, as it consists of single bits only.
第一层负责对所有 1 和 0 进行编码,并将它们传递到行上。然后,解码并读取另一端的 1 和 0。在这个层上,我们实际上没有标头,因为它只由单个位组成。
在这里插入图片描述

Summary 总结

This way, every layer uses the services provided by the lower layers, and the huge problem of transmitting data over the network becomes doable. How amazing is that?
这样一来,每一层都使用下层提供的服务,通过网络传输数据的巨大问题就变得可行了。


via: Omer Rosenbaum OCTOBER, 2022

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

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

相关文章

Vue3的模板语法插值表达式用法

在template中输入“5 3” &#xff0c;是没有运算能力的&#xff0c;只会把字符直接显示出来&#xff0c;代码如下&#xff1a; <template><view>这是demo</view><view>5 3</view><navigator open-type"navigateBack"><vi…

【OpenSSH】立即检测 OpenSSH 的 regreSSHion 漏洞

OpenSSH regreSSHion 漏洞简介 OpenSSH 是一种广泛使用的网络协议&#xff0c;提供加密的数据通信和远程登录功能。然而&#xff0c;最近发现的一个漏洞&#xff08;CVE-2024-6387&#xff09;&#xff0c;被称为 regreSSHion&#xff0c;使得未经身份验证的攻击者能够在 Linu…

FlowUs新一代内容创作营销平台|FlowUs息流国产 好用 不限速

FlowUs 作为一个知识管理和协作平台&#xff0c;知识库功能可以被视为一个强大的学习工具&#xff01; 为什么FlowUs知识库可以成为学习利器呢&#xff1f;原因有以下几点 集中化知识存储&#xff1a;FlowUs允许我们将所有相关信息和资料集中在一个地方&#xff0c;便于访问和复…

zed_ros2_wapper colcon 报错

问题一&#xff1a; CMake Error at CMakeLists.txt:129 (find_package): By not providing “Findnmea_msgs.cmake” in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by “nmea_msgs”, but CMake did not find one. Co…

不可忽视的安全防线:深入探讨安全阀检测时间的选择

在工业生产中&#xff0c;安全阀被誉为设备的“守护者”&#xff0c;它承担着防止压力过高导致设备损坏或事故发生的重要使命。然而&#xff0c;安全阀的性能并非永恒不变&#xff0c;其有效性需要通过定期检测来验证。 接下来&#xff0c;佰德将深入探讨安全阀检测的重要性、…

K8s 的最后一片拼图:dbPaaS

K8s 的发展使得私有云跟公共云之间的技术差不断的缩小&#xff0c;不管是在私有云还是公共云&#xff0c;大家今天都在基于 K8s 去开发 PaaS 系统。而 K8s 作为构建 PaaS 的基础&#xff0c;其全景图里还缺最后一块“拼图”——dbPaaS。作为一个云数据库行业干了十几年的资深从…

在uni-app使用vue3使用vuex

在uni-app使用vue3使用vuex 1.在项目目录中新建一个store目录&#xff0c;并且新建一个index.js文件 import { createStore } from vuex;export default createStore({//数据&#xff0c;相当于datastate: {count:1,list: [{name: 测试1, value: test1},{name: 测试2, value: …

LLM笔记:训练大模型之并行化

1 数据并行 最常见的并行化手段主要是把数据分成多个块&#xff0c;然后每个节点就可以在本地独立的跑各自的数据任务&#xff0c;最后再和其他节点通信&#xff0c;进而汇总最后的结果好处就是计算效率高&#xff0c;每个节点可以独自计算自己的任务且这种方法易于实现缺点就…

【长亭WAF(雷池)——网站保护之“动态防护”】

在当今的网络安全环境中&#xff0c;Web应用防火墙&#xff08;WAF&#xff09;扮演着至关重要的角色。 它们不仅能够防御常见的Web攻击&#xff0c;如SQL注入、跨站脚本攻击&#xff08;XSS&#xff09;等&#xff0c;还能够应对日益复杂的网络威胁。 作为业内领先的Web安全解…

《安富莱嵌入式周报》第339期:单片机运行苹果早期Mac系统模拟器,2GHz示波器有源探头,下一代矩阵开关面包板,卡片式声音分贝器,HP经典示波器,ReRAM

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版 https://www.bilibili.com/video/BV1Kf421Q7Lh 《安富莱嵌入式周报》第339期&#xff1a;单片机运行苹果早期Ma…

嵌入式Linux系统编程 — 6.3 kill、raise、alarm、pause函数向进程发送信号

目录 1 kill函数 1.1 kill函数介绍 1.2 示例程序 2 raise函数 2.1 raise函数介绍 2.2 示例程序 3 alarm函数 3.1 alarm函数介绍 3.2 示例程序 4 pause函数 4.1 pause函数介绍 4.2 示例程序 与 kill 命令相类似&#xff0c; Linux 系统提供了 kill()系统调用&#…

Chapter9 更复杂的光照——Shader入门精要学习笔记

Chapter9 更复杂的光照 一、Unity的渲染路径1.渲染路径的概念2.渲染路径的类型①前向渲染路径a. 前向渲染路径的原理b. Unity中的前向渲染c. 两种Pass ②延迟渲染路径a. 延迟渲染路径的原理b. Unity中的延迟渲染c. 两种Pass ③顶点照明渲染路径 二、Unity的光源类型1.光源类型①…

Webpack: 核心流程之Init、Make、Seal

概述 在前文中&#xff0c;我们了解了 Webpack 的基本应用、性能优化、Loader 与 Plugin 组件开发方方面面的知识&#xff0c;相信学习过这些内容之后&#xff0c;你已经对 Webpack 有相当深入的理解了&#xff0c;可以开始从更底层的视角&#xff0c;自底向上重新审视 Webpac…

直流电机介绍

一、引入 电机&#xff0c;即电动机&#xff08;motor&#xff09;俗称马达&#xff0c;是电能转化为机械能的总称&#xff0c;按工作原理分类电机可以分为&#xff1a;直流电机&#xff08;通过直流电源供电&#xff0c;依靠电刷和换向器改变电流方向&#xff0c;产生连续转动…

文献解读-长读长测序-第十四期|《作为了解棉花驯化的资源,印度棉(Gossypium herbaceum L. Wagad)基因组》

关键词&#xff1a;基因组&#xff1b;长读长测序&#xff1b;棉花基因组&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;The Gossypium herbaceum L. Wagad genome as a resource for understanding cotton domestication标题&#xff08;中文&#xff…

DBdoctor v3.2.2 版本发布,支持对sqlserver、vastbase的纳管!

DBdoctor 3.2.2版本新增PgSQL的索引推荐及性能审核功能&#xff1b;拓展了oracle的纳管版本并支持纳管oracle rac&#xff1b;新增对sqlserver、vastbase数据库的纳管支持&#xff1b;修复了体验官活动中大家提出的一系列体验问题。 详细更新内容如下&#xff1a; 功能优化 Pg…

贪心算法题目总结

1. 整数替换 看到这道题目&#xff0c;我们首先能想到的方法就应该是递归解法&#xff0c;我们来画个图 此时我们出现了重复的子问题&#xff0c;就可以使用递归&#xff0c;只要我们遇到偶数&#xff0c;直接将n除以2递归下去&#xff0c;如果是奇数&#xff0c;选出加1和减1中…

我在手提电脑上将大模型训练成了语文老师

&#xff08;图片由大模型生成&#xff0c;如有侵权&#xff0c;立删&#xff09; 记得一年多以前&#xff0c;和不少商家交流大模型解决方案时&#xff0c;他们谈到内部有很多的资料&#xff0c;可以对大模型进行训练&#xff0c;让大模型变得更有智慧&#xff0c;从而为客户…

Day9:逆波兰表达式求值150 滑动窗口最大值239 前 K 个高频元素347

题目150. 逆波兰表达式求值 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int evalRPN(vector<string>& tokens) {//使用栈来消除stack<string> st;for(int i0;i<tokens.size();i){if(tokens[i]""||tokens[i]"-"|…

创新赋能,高效二开!CRMEB 标准版 v5.4公测版发布

历经十年磨砺&#xff0c;CRMEB 标准版如今已成为众多技术开发者与企业二次开发、构建定制化项目的热门系统&#xff0c;其全开源无加密、功能齐全、独立部署的特质&#xff0c;造就了标准版系统方便二开的优势&#xff0c;不仅深受开发者喜爱&#xff0c;更因其实用性和可靠性…