1.4.1 分层模型
很显然,两台联网的计算机之间要完成数据通信,必须有密切的合作。我们并不是把完成这一任务的所有功能以单一模块的形式实现,而是将这一任务划分成一些子任务,不同的子任务由不同的模块单独完成,而且这些模块之间形成单向依赖关系,即模块之间是单向的服务与被服务的关系,从而构成层次关系,这就是分层(layering)。
分层有两个优点:第一,它将建造网络这样一个复杂的任务分解为多个可处理的部分;第二,分层模型提供了一种更为模块化的设计。
为了便于大家更好地理解分层的概念,我们先以邮政系统分层模型为例进行说明,如图1-12所示。
图1-12 邮政系统分层模型
人们平常写信时都有些约定成俗的习惯。比如,我们写信时必须采用通信双方都懂的文字,信的开头是对方称谓,最后是落款和日期等,这就是对信件的格式和内容的要求。这样,对方收到信后,才可以看懂信中的内容,知道是谁在什么时候写的。当然还可以采用一些特殊约定,如间谍们采用特殊的密写方式写信,但是这些特殊的约定必须是双方都能够明白的,否则就需要第三方进行翻译。
写好信之后,如果收信人与写信人离得很近,写信人就可以直接将写好的信交给收信人。但是更多情况下,收信人与写信人相距很远,于是双方必须通过邮局进行信件转交。为此,写信人将信件装到信封里并交由邮局寄发,这时写信人和邮局之间有约定,这就是邮局所规定的关于信封的书写格式以及写信人必须向邮局付费(通过贴邮票的方式实现)。比如在中国境内寄信,写信人必须在信封上填写邮政编码、收信人地址和姓名以及写信人的地址和姓名。
邮局接到写信人交来的信后(含信封和信纸),首先对信件进行分类和分拣,然后将不同类别、不同目的地的信(含信封和信纸)装到不同的邮政包裹里面,再交由相关的运输部门进行运输,如航空公司、铁路部门或公路运输部门等。这时,邮局和运输部门也有约定,如运输部门对邮政包裹形式的要求,而邮局对运输部门也有相应的要求,如包裹的到达目的地的时间等。
邮政包裹经过运输部门运输到目的地后,首先由运输部门将邮政包裹送到邮局(或者由邮局派人到运输部门来领取邮政包裹,这取决于运输部门和邮局之间的事先约定),然后邮局派人将信送给收信人,收信人收到信后就可以打开信封,取出信并阅读此封信,至此就完成了一次完整的邮政通信。
在上面给出的邮政系统的例子中,主要包含三个子系统,分别是用户子系统、邮政子系统和运输子系统。在用户子系统中,用户之间有约定(关于如何写信的约定);在邮政子系统中,不同地区的邮局之间也有约定;在运输子系统中,不同地区的运输部门之间也有约定。在同一个地区的邮政用户、邮局和运输部门之间也有约定。很显然,这两种约定是不同的。一种是同等机构间的约定,如用户之间的约定、邮局之间的约定和运输部门之间的约定,这些约定为部门内部的约定;另一种是不同机构间的约定,如用户与邮局之间的约定、邮政与运输部门之间的约定。