购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 网络体系结构

为了减少网络设计和实现的复杂性,人们提出网络体系结构的概念用来指导网络的设计和实现,本节主要讨论分层模型、网络协议和网络服务等概念。

1.4.1 分层模型

很显然,两台联网的计算机之间要完成数据通信,必须有密切的合作。我们并不是把完成这一任务的所有功能以单一模块的形式实现,而是将这一任务划分成一些子任务,不同的子任务由不同的模块单独完成,而且这些模块之间形成单向依赖关系,即模块之间是单向的服务与被服务的关系,从而构成层次关系,这就是 分层 layering )。

分层有两个优点:第一,它将建造网络这样一个复杂的任务分解为多个可处理的部分;第二,分层模型提供了一种更为模块化的设计。

为了便于大家更好地理解分层的概念,我们先以邮政系统分层模型为例进行说明,如图1-12所示。

图1-12 邮政系统分层模型

人们平常写信时都有些约定成俗的习惯。比如,我们写信时必须采用通信双方都懂的文字,信的开头是对方称谓,最后是落款和日期等,这就是对信件的格式和内容的要求。这样,对方收到信后,才可以看懂信中的内容,知道是谁在什么时候写的。当然还可以采用一些特殊约定,如间谍们采用特殊的密写方式写信,但是这些特殊的约定必须是双方都能够明白的,否则就需要第三方进行翻译。

写好信之后,如果收信人与写信人离得很近,写信人就可以直接将写好的信交给收信人。但是更多情况下,收信人与写信人相距很远,于是双方必须通过邮局进行信件转交。为此,写信人将信件装到信封里并交由邮局寄发,这时写信人和邮局之间有约定,这就是邮局所规定的关于信封的书写格式以及写信人必须向邮局付费(通过贴邮票的方式实现)。比如在中国境内寄信,写信人必须在信封上填写邮政编码、收信人地址和姓名以及写信人的地址和姓名。

邮局接到写信人交来的信后(含信封和信纸),首先对信件进行分类和分拣,然后将不同类别、不同目的地的信(含信封和信纸)装到不同的邮政包裹里面,再交由相关的运输部门进行运输,如航空公司、铁路部门或公路运输部门等。这时,邮局和运输部门也有约定,如运输部门对邮政包裹形式的要求,而邮局对运输部门也有相应的要求,如包裹的到达目的地的时间等。

邮政包裹经过运输部门运输到目的地后,首先由运输部门将邮政包裹送到邮局(或者由邮局派人到运输部门来领取邮政包裹,这取决于运输部门和邮局之间的事先约定),然后邮局派人将信送给收信人,收信人收到信后就可以打开信封,取出信并阅读此封信,至此就完成了一次完整的邮政通信。

在上面给出的邮政系统的例子中,主要包含三个子系统,分别是用户子系统、邮政子系统和运输子系统。在用户子系统中,用户之间有约定(关于如何写信的约定);在邮政子系统中,不同地区的邮局之间也有约定;在运输子系统中,不同地区的运输部门之间也有约定。在同一个地区的邮政用户、邮局和运输部门之间也有约定。很显然,这两种约定是不同的。一种是同等机构间的约定,如用户之间的约定、邮局之间的约定和运输部门之间的约定,这些约定为部门内部的约定;另一种是不同机构间的约定,如用户与邮局之间的约定、邮政与运输部门之间的约定。

1.4.2 网络协议

下面回到计算机之间的通信问题上。计算机之间的数据通信实际上是指计算机上的对等层(peer-to-peer)实体之间进行数据交换(实体是指计算机上能够发送和接收数据的任何事物,比如进程或硬件设备)。要想让不同计算机上的两个对等层实体顺利通信(即一台计算机上的第 N 层实体与另一台计算机上的第 N 层实体进行对话),两个实体之间必须就通信内容(讲什么)、如何通信(怎么讲)、何时通信(什么时候讲)等事项达成一致,这就是协议(protocol)。

协议定义了两个或多个通信实体之间交换的报文格式和次序,以及在报文传输、报文接收或其他事件方面所采取的动作。

一般来说,计算机网络和互联网广泛地使用了协议。不同协议用于完成不同的通信任务。当阅读完本书之后你将会知道,一些协议简单且直接,而另外一些协议复杂且难懂。掌握计算机网络领域知识的过程就是理解网络协议的构成和原理的过程。

实际上,协议就是控制和管理两个实体之间数据通信过程的一组规则和约定,如图1-13所示。

图1-13 协议和接口

同一台计算机上相邻层之间(即不同实体之间,如不同进程之间)的通信也有约定,我们称这种约定为接口(interface)或服务接口(service interface),即下层通过接口向上层提供服务。接口定义了上层如何调用下层提供的服务。当网络设计者决定在一个网络中应该包含多少层以及每一层应该提供哪些功能时,其中最需要清楚地定义好不同层之间尤其是相邻层之间的接口。为了做到这一点,网络设计者应准确定义好每一层要完成的特定功能。良好的接口定义除了可以尽可能地减少层与层之间要传递的信息的数量以外,还可以方便人们用某一层协议的新实现来代替原来的实现或者用新的协议来代替原来的旧协议。

需要注意的是,协议通常由协议规范(protocol specification)来描述,例如可以用文字、伪代码、状态转换图等形式来描述协议。而同一个协议规范可以由不同人员在不同的软硬件平台上采用不同的方法来实现,即同样的协议规范可能有不同的实现。如果某个协议规范的两个不同实现(即不同的软硬件)能够成功地交换信息,我们就称这两个协议实现彼此是可互操作的(interoperable),协议实现之间的互操作是非常重要的特性。

我们将网络中层次和协议的集合称为网络体系结构(network architecture)。实际上,网络体系结构包括网络的层数、每一层所必须完成的功能以及每一层使用的协议等。对网络体系结构的描述必须包括足够的信息,使实现者可以为每一层进行软硬件设计与实现,并使之符合相关协议。协议实现的内部细节和接口规范不属于网络体系结构的内容,因为它们隐藏在机器内部,对外界是不可见的。一个特定的网络系统所使用的一组协议(每一层至少有一个协议)称为协议栈(protocol stack)。

下面来考察一个五层网络示例,看看在图1-14给出的五层网络中,下层是如何向上层提供通信服务的。

图1-14 五层网络示例

在第5层运行的某应用进程产生了消息 M 并把它交给第4层进行发送。第4层在消息 M 前加上一个报头(header),报头主要包括控制信息,如序号,以便目标机器上的第4层在下层不能保持消息顺序时,把乱序的消息按原来的顺序组装好。

在很多网络中,第4层对接收的消息长度没有限制,但在第3层通常存在一个限度。因此,第3层必须将接收的消息分成较小的单元,如报文(packet),并在每个报文前加上一个报头。在本示例中,消息 M 被分成两部分: M 1 M 2

第3层确定主机之间的通信使用哪一条路径,然后将报文传送给第2层。第2层不仅给每个报文加上头部,还要加上尾部信息,构成新的数据单元,通常称为帧(frame),然后将其传送给第1层进行实际的物理传输。在接收端,数据每向上递交一层,该层的头部就被剥掉。

在图1-14中,除了在最下层对等实体之间直接通过一条物理链路进行通信外,其他层对等实体之间的通信是间接的。我们称最下层对等实体之间的直接通信为物理通信(physical communication),而其他层对等实体之间的间接通信为虚拟通信(virtual communication)。

比如,第4层的对等进程,在概念上认为它们之间的通信是水平方向地应用第4层协议。每一方好像都有一个叫作“发送到另一方”和一个叫作“从另一方接收”的过程,尽管实际上这些过程是跨过3/4层接口与下层通信而不是直接与另一方通信。

对等通信这一抽象概念对网络设计是至关重要的。有了这种抽象技术,就可以把网络设计这种难以处理的大问题划分成几个易于处理的小问题,这就是分层的设计。

在上面给出的分层网络示例中,还涉及一个关于报文封装的概念。第4层在接收到第5层交给它的消息 M 时,要加上一个头部,从而构成第4层的报文。一般来说,头部是一个小的数据结构,大小为几个字节到十几个字节,用于对等层实体之间的通信。另外,在有些情况下,对等层通信所需要的控制信息还可以加在消息的尾部(tailer),图1-14所示的第2层的报文中就有一个尾部。不管某层协议的控制信息在头部还是尾部,其确切的格式和含义都由该层协议规范来定义。

1.4.3 网络服务

服务这个普通的术语在计算机网络中无疑是一个重要的概念。在网络体系结构中,下层协议的主要功能是向上层提供特定的通信服务。

网络分层中的单向依赖关系使得网络中相邻层之间的服务也是单向的:下层是服务提供者,上层是服务使用者。在网络中,下层可以向上层提供两种不同类型的服务:面向连接服务和无连接服务。在本节中,我们将介绍这两种类型的服务并比较两者的区别。

面向连接服务(connection-oriented service)是基于电话系统模型的。当人们打电话的时候,首先必须拿起话机,拨对方的电话号码,然后通话,最后挂机。简单来说,要使用面向连接的网络服务,服务使用者必须先与对方建立一个连接,使用该连接,最后释放连接。

所谓连接,是指发送端和接收端在进行数据传输之前,发送端、接收端以及网络必须就某些参数进行协商(negotiation),比如最大报文长度、缓存区大小等。通常情况下,由发送端提出建议,接收端接受或拒绝该建议,或者提出自己的建议,最终达成一致。而且,提供面向连接服务的网络一般能够提供可靠的数据传输服务。可靠的服务通常是这样实现的:接收端每接收到一个正确的报文,就向发送端返回一个确认报文;如果发送端没有接收到确认报文,就重发该报文。确认报文的引入增加了额外的负载和延迟,一般情况下是值得的,也是必要的,但有时也不尽然。

相反,无连接服务(connectionless service)是基于邮政系统模型的。每个报文都携带了完整的目的地址,每个报文单独发送。一般来说,当两个报文被发送给同一个目的地址的时候,先发送的报文将会先到达目的地。然而,先发送的报文被延迟从而导致后发送的报文先到达的情况也有可能发生。

我们可以用服务质量(Quality of Service,QoS)来描述上述两种不同服务的特征。对于面向连接服务,服务是可靠的,也就是说面向连接服务提供的数据传输服务从来不丢失、不出错、不乱序、不重复,但是面向连接服务会引起额外的延迟。无连接服务一般是不可靠的,但是它的延迟比较低。 VEjgPAHPaBQrtugtqkLgIr1t0CtjzI+ODu2Y/iRPEuFt/YRG+gdR7dANgMCkj8El

点击中间区域
呼出菜单
上一章
目录
下一章
×