3.2.2 网络体系结构
为了有效地建立信息通信网络,必须使网络的各个构件协同工作,而它们之间的行为都由多种协议约束。网络体系结构就是将网络中的一系列协议按一定的功能配置和逻辑结构有效地组织起来的有机体。
层次结构是网络体系结构常用的一种组织形式,本节将讲述这种网络体系结构。通常网络体系结构把计算机间互连的功能划分成具有明确定义的层次,并规定了同层次进程通信的协议及相邻层之间的接口服务,以便于计算机间的协同工作。层次、协议、接口是网络体系结构的基本要素。
1.层次
分层是人们处理复杂问题的一种方法。为了减少协议设计的复杂性,大多数网络都按层(Layer)或级(Level)的方式来组织,将总体要实现的很多功能分配在不同层次中。每个层次要完成的功能都有明确规定并且每层功能独立。每一层的目的都是向它的上层提供一定的服务,也就是说每层建立在下一层的基础上,可调用下一层的服务。而使用下层提供的服务时,并不需要知道其具体实现方法。不同的网络,其层的数量,各层的名字、内容和功能都不尽相同。
分层的好处是每一层只实现一种相对独立的功能,采用的技术也相对独立,这有利于将一个复杂问题分解为若干个较容易处理的问题。当任何一层的实现有所改变时,只要保证本层实现的功能不变,则其他各层均不受影响。因此分层的结构具有较强的灵活性。
然而在层次划分上还要注意分层的数量要适当。若层数太少,就会使某一层要完成的功能太多,导致协议太复杂;而层数太多又会使某些层次可能需要共同实现一个功能,导致逻辑混乱或者在描述和综合各层功能时遇到困难。
为便于理解划分层次的概念,下面举一个生活中的例子。邮政系统是一个较为复杂的系统,包含了许多组成部分:写信人、收信人、邮局服务部门、邮局转送部门、运输部门,等等。写信人写好信件后,信件会被装进信封,送到邮箱。邮局服务人员对发送的信件进行收集、盖上邮戳,邮局转送人员将信件分类打包,然后交给运输部门进行运输。信件包到达目的地后,由当地邮局转送人员将信件拆包分发,服务人员将信件投递到收信人手中,收信人拆开信封、阅读信件。这些是信件传送过程中涉及的邮政系统的活动。
这些活动按不同功能可以被划分为4层:读/写信层、邮件服务层、邮件转送层和邮件运输层,如图3-4所示。
图3-4 邮政系统分层结构
划分的4层中,每层都有明确而独立的功能,如第4层有读/写信件功能,包括写/读信件,装/拆信封,送入邮箱/取回信件,等等;第3层提供邮件服务功能,包括收集/投递信件,对已经封装的信封提供邮戳功能等;第2层提供邮件转送功能,包括对盖好邮戳的信件提供分拣打包/信件拆包分发等;第1层对分拣好的信件提供运输功能。
同时,每一层的目的都是向它的上层提供一定的服务。如第2层发/收信人的邮局对信件进行分拣打包/拆包分发,是基于第1层的运输功能。如果没有底层运输,信件无法从发信人所在邮局送达收信人所在邮局。
因此可以看到,这种模块化的分层结构,有助于我们明确一个大而复杂的系统的逻辑结构。
2.协议
协议的概念在上一节已经介绍了。在邮政系统的例子中,存在着许多人与人、部门与部门之间的行为,必然需要有多种不同的协议来规范与协调它们之间的动作和行为。这些协议组成了关于邮政系统网络运行规范的协议集。有的协议适用于收发信的用户,比如发信者应在信件的什么位置写地址、收信人和落款;有的协议适用于邮局转送部门的内部运行,如信件分拣打包的规范;有些适用于邮局服务部门,如盖邮戳和投递信件的规定;还有的适用于运输部门的活动,如什么时间开始运输、通过什么交通工具运输,等等。类似地,在网络进行层次划分之后,每层都有相应的一系列协议,如TCP、HTTP,用以约束网络中的通信行为。网络中这一系列的协议正是以分层的形式被有效地组织起来并协调工作的。
此外协议也需要根据实际运行过程的变化与新服务功能的加入进行修改。例如,一旦要求用户在发信的信封上增加收信者与发信者的邮政编码时,设计者就需要对邮政编码的编码方法、邮政编码的填写方法、邮政编码的使用方法分别做出规定,这些规定将作为新的协议加入已经存在的协议集中。同样,比如早期提供电子邮件服务的应用层协议RFC822只支持ASCII字符,为满足图片、音视频、非ASCII字符等多媒体传输的需求,后续发展出多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extension)协议。
3.接口
系统功能层次化之后,层与层之间的边界和在这个边界上进行的信息传送变得很重要。边界又称为层边界,层间的信息传送的规约称为接口,它定义了下层向上层提供哪些服务和原语操作。
服务定义为下层(n—1层)向上层(n层)提供的功能,方向是垂直的。服务定义了该层代表其用户执行哪些操作,也会涉及两层之间的接口,但是它并不涉及如何实现这些操作。服务在形式上是由一组原语(Primitive)来描述的。由于协议通常位于操作系统中,这些服务原语往往就是一些系统调用。
总的来说下层可以向上层提供两种不同类型的服务,即面向连接的服务(Connectionoriented Service)和无连接的服务(Connectionless Service)。
面向连接的服务是基于专用连接提供的保证传输质量的服务。它类似于电话系统模型,当两个端系统之间交换数据时,用户首先建立一个连接,然后才发送实际数据,最后释放连接。面向连接的服务往往提供可靠的数据传输确保从发送方发出的数据最终按顺序完整地交付给接收方。A和B打电话的过程、远程登录等都属于面向连接的过程。
无连接的服务是指不使用专用连接不保证传输质量的服务。它类似于邮政系统模型,每一条报文(信件)都携带了完整的目标地址,都可以被系统独立地路由。两个端系统之间交换数据时,无须建立连接,直接通信,源主机不能确定数据是否已经到达目的地,不能对最终交付做任何保证,但速度快,因而无连接的服务是不可靠的,又称为尽最大努力服务。例如,数据报网络提供的就是无连接的服务。
当某层的实现方式变化时,应保证本层的接口不变,这样可以保证整个系统的功能不受影响。例如,运输层实现方式改变了,原本由汽车运输信件改为火车运输,但是它仍然提供相同的功能和服务,系统的其余部分将保持不变。
4.其他术语
实体是每一层的活动元素,表示任何可发送或接收信息的硬件或软件进程。不同系统中同一层的实体叫对等实体。这些对等实体可能是进程或者硬件设备,甚至可能是人。
协议是控制两个对等实体进行通信的规则的集合,它规定了同一层上对等实体之间所交换的消息或者分组的格式和含义,方向是“水平的”。换句话说,正是这些对等实体在使用协议进行通信来实现它们的服务定义。一台机器的第n层与另一台机器的第n层进行对话,在对话中用到的规则和约定称为第n层协议。第n层的对等实体之间通过第n层协议进行通信,而第n+1层对等实体之间则通过第n+1层协议进行通信,如图3-5所示。
图3-5 相邻两层的关系
在协议的控制下,两个对等实体间的通信使得本层能够通过接口向上一层提供服务。第n层向第n+1层提供的服务中已经包含了在它下面各层所提供的服务。n层相对于它的上层是服务提供者,而n+1层则称为服务用户。
同一系统相邻两层的实体进行交互的地方,称为服务访问点(SAP,Service Access Point)。
此外,实际的“物理”通信仅在最底层之间存在,其他层对等实体之间的通信是“虚拟”通信,在图3-5中用虚线表示。在邮政系统的例子中,第4层的对等实体为发信者和收信者,可以认为“他们的通信是水平的”,他们使用了第4层协议。但是,发信者并不是直接与收信者进行通信,而是通过层之间的接口将信息传给底下的层,真正的“物理”通信是由最底层的运输部门实现的。
总的来说,为确保所形成的网络是完整而有效的,必须把通信问题的所有方面划分成一个个协调工作的分块结构,从而构建一整套协议。这些协议被组织成一个线性序列,也就是不同的层。把协议划分到不同的层中,使它们各自专注于处理通信的某部分功能,而所有协议联合起来完成整个通信功能。把各种协议集成为一个统一整体的抽象结构,就是分层模型,也称为参考模型。本节介绍的网络体系结构实际包含了分层模型和协议集合。用来展现分层模型的直观图形像一个堆积起来的栈,各层的所有协议集合统称为协议栈。下面将介绍一些典型的分层模型和协议栈。