网络数据传输 | 封装与解封装详解
网络数据传输 | 封装与解封装详解
网络数据传输是一个复杂的过程,涉及多个层次的封装与解封装操作。本文将详细解释这一过程,帮助读者理解数据如何从发送端传输到接收端。
封装、解封装与排队
网络的目标是将数据从一个主机传输到另一个主机。为了实现这一目标,每一层都会向数据添加自己的头部。头部包含特定于该层的信息,并且位于数据本身之前。
考虑一个案例,我们有一个查找服务,用于查找一个人的电话号码,给定这个人的名字。数据由此人的名字和姓氏组成。
在发送数据包之前,第五层可能会添加自己的头部,描述这是一个 REQUEST 数据包。头部还可以指定这是从人员姓名映射到电话号码的请求,反之亦然。
第五层的头部,带有数据
然后,第五层将数据传递到第四层。请注意,第四层将所有内容视为数据——1 和 0。它不在乎第五层是否添加了标题,也不在乎该标题中写了什么。
第四层然后添加自己的标题。例如,它可能指定请求的服务是姓名和电话服务。它还可能包括数据包的序列号,以便以后可以识别。
第四层的头部,带有数据,其中包括第五层的头部
之后,第四层将数据包传递到第三层。同样,第三层将它收到的所有内容(包括数据本身、第五层添加的标头和第四层添加的标头)简单地视为数据块。
第三层将添加自己的标题。例如,它可能包括数据包的源地址和目标地址。
这个过程还在继续。因此,每一层都会向数据包添加自己的头部。此过程称为封装。
在另一端,接收方获取数据包,需要读取和删除标头。
第二层也可包括一个“尾部”——一组附加在数据后面的比特块,包含一些信息。
把它们放在一起
现在我们已经介绍了这五个层,让我们举一个例子来同时使用它们。
假设我们想向住在法国的朋友发送一个视频文件,而我们正在阿根廷旅行。为此,我们正在使用电子邮件服务。
第五层定义了电子邮件的传输方式。例如,它包括发件人和收件人的电子邮件地址。它包含标题和邮件正文。它要求我们遵循电子邮件地址的特定模板,该模板将包含在此图层的标题中。
第五层模型,带有发送邮件的示例
然后,第五层使用第四层将电子邮件拆分为块。当然,每个块也将携带第四层的标题。它还用于指定我们当前正在使用电子邮件服务。
在这种情况下,我们绝对希望连接可靠——这样接收器才能正确播放我们的视频文件。因此,第四层也将处理可靠性。在接收方端,它可能会为接收的每个数据包发送一个确认数据包。
第三层将为要发送的每个数据包定义最佳路由。它可能会为不同的数据包选择不同的路由。除其他事项外,其标头将包含数据包的源地址和目标地址。
第二层将负责两个直接连接的设备之间的每个链接。其标头将包括每个设备的 MAC 地址。
第一层负责对所有 1 和 0 进行编码,并将它们传递到行上。然后,解码并读取另一端的 1 和 0。在这个层上,我们实际上没有标头,因为它只由单个位组成。
总结
这样一来,每一层都使用下层提供的服务,通过网络传输数据的巨大问题就变得可行了。这真是太神奇了!
via: Omer Rosenbaum OCTOBER, 2022