分层架构与协议栈
分层架构是一种组织计算机网络的方式。让我们直接开始!
分层架构简介
在构建大型复杂系统时,逐步提高抽象层次来解决问题会非常有帮助。因此,系统可以由多个层组成,每一层执行特定的一组任务。
为什么使用分层?
分层架构通过允许我们讨论大型系统中具体且定义清晰的部分,提供了模块化设计。这使得修改实现细节和定位错误变得更加容易。
类比:邮寄信件
在深入探讨网络层栈的不同模型之前,先来看一个有趣的类比。
想象一下寄一封信或一个包裹。整个过程通常包括以下几个步骤:
注意,这里有几个方面与计算机网络有着相似之处。以下是一些对应关系的例子:
层与层之间的服务关系:垂直通信
每一层都为上一层提供服务。同时,上一层并不关心下一层是如何实现这些服务的。这种机制称为抽象。因此,各层之间以一种垂直的方式进行交互。
邮寄中的垂直分层
在信件邮寄的类比中,每一层都在为上一层提供服务。例如,邮递员为发信人和收信人提供服务,他们从信箱中收取信件,并将邮件投递到住户家中。
此外,发信人所知道并关心的只是:只要把信写好、放进信封、贴上邮票、投入信箱,信件最终就会送达目的地。至于信件是通过卡车、火车还是飞机运输,对发信人来说完全无关紧要。因此,第4层如何完成其工作对上层而言并不重要,这就是所谓的抽象。
网络中的垂直分层
同样地,计算机网络在概念上也被划分为若干层,每一层既服务于上一层,也受制于下一层。
-
例如,在大多数分层模型中,最顶层被称为应用层。用户终端应用程序(如网页浏览器、电子邮件客户端)位于应用层,几乎总是以软件形式实现。这也是传出消息旅程的起点。
-
应用层需要底层提供一种服务,能够将应用消息从源端可靠地传输到目的端,并将回复带回。这正是后续各层所承担的任务。
由于底层从上层收集消息用于发送,并将目标为上层的消息传递上去,因此它为应用层提供服务。同时,应用层进行了抽象,不关心下层的具体实现细节。
层与层之间的对等通信:水平通信
请注意,发送端的每一层在接收端都有一个对应的平行层。
邮寄中的水平分层
在邮寄类比中,写信人和收信人似乎直接在交流。写信人书写,收信人阅读,完全无视底层耗费的人力物力。同样地,发信方的邮局与另一方的邮局进行协作,共同完成信件投递任务。在最低层,可能涉及多个中间环节。例如:有人骑自行车从信箱取信,送到邮局;然后信件被打包,由卡车运往机场;机场将信件空运至另一个机场;再由卡车将信件运送到当地邮局,最后完成派送。虽然过程中存在多个横向实体,但我们只看到发信人和收信人。
网络中的水平分层
在计算机网络中,这种情况更加清晰。例如,应用层的应用程序在两端系统之间发送和接收数据。一端系统的应用层与另一端系统的应用层存在对应关系——比如一台设备上的聊天应用正在与另一台设备上的聊天应用通信。这些应用层的应用程序看似直接相互沟通,即以一种水平方式通信。它们并不了解下层的存在。
各层可独立演进
在此模型中,任何下层提供的服务都可以被上层用来构建其他服务。上层可以独立发展出各种新的服务形态,例如从基于文本的电子邮件,发展到支持附件、万维网、动态网站、互动游戏、实时视频会议等,所有这些都在相同的基础设施之上运行于顶层。
邮寄系统中的独立演进
- 例如,被寄送的物品不一定是信件——也可以是包裹。
- 它可以放入信封或箱子中。
- 可以送到邮局,投入信箱,或由专人上门收取。
- 收件方可以是邮局信箱、家庭住址或办公场所。
网络中的独立演进
应用层的应用程序可以发送和接收几乎任何形式的数据,无论是MP3文件还是Word文档。
封装与解封装
每一层都会在其来自上层的消息上添加自己的头部信息,而在接收端,对应的实体则移除这些头部。每个头部中包含的信息有助于消息向上传递。添加头部的过程称为封装,移除头部的过程称为解封装。请看下面的示意图,了解其工作原理。
我们尚未为这些层命名,因为还没有介绍它们,但整体思路已经呈现出来。
现在我们已经对分层架构有了基本了解,下一节课我们将讨论一个流行的网络参考模型。