第4章 ISO/OSI参考模型
4.1 关于网层次结构的基本概念
4.1.1 分层原则
在层次结构的计算机网络系统中,每一层都具有相对独立的通信功能。各
层间相对独立的通信就好像国家之间的往来,分为元首级的通信、部长级的通
信、工作人员级的通信,他们各以不同方式进行不同内容的通信;同一级的通信
都是对等的,并且都是在各自的下一级的通信支持下进行的。在计算机网络中的
通信也是如此,通信的双方都可以分为不同的层次,每一层之间进行对等的通信。
基于不同的现实和考虑原则,计算机网络可以有不同的分层方法。但是,一
般说来有一些原则基本上是共同的,如:
(1)每层的功能应当明确、各层相对独立,使得当某层的方法变更时,只要
保持接口关系不变,不会影响其他层的结构和方法;
(2)各层功能的确定应当有助于网络协议国际标准的制定;
(3)层间接口要清晰,尽量减少跨越接口的信息量;
(4)层数适当,不可太少,只要增加一个不同等级的抽象,就应当为网络增
加相应的层次;也不可太多,否则使网络结构过于复杂。
4.1.2 服务与接口
用于同层间通信的协议称为同层协议,并且每一层间通信的协议都是在下
一层间通信的协议提供的服务基础上进行工作的。因此,协议和服务是两个不
同的概念:协议是“水平的”,是控制对等实体之间通信的规则;服务是“垂直的”,
是下层通过接口向上层提供的支持。
1.(N)服务与(N)协议
与前述国家间的交往相似,在对等层间形成虚拟通信。在通信过程中,第
(N)层向第(N+1)层提供服务,而第(N)层的服务除了要使用(N)层的功能
———(N)功能外,还需要第(N-1)层以下服务的支持。这里,将第(N)层对第
(N+1)层提供服务称为(N)服务,显然,(N)服务是(N)层及其以下各层服务的
综合。对于第(N+1)层来说,只关心(N)服务,而不必关心(N-1)服务。
对等层之间的虚拟通信是通过执行(N)功能实现的。这时要使用一组规则
(语义)和格式(语法)。这组规则(语义)和格式(语法)称为(N)协议。
2.接口
由前面的讨论可知,上、下层间通过接口交换信息。图4.1表示了层间接口
中的活动。
图4.1 层间接口中的活动
可以看出,两个相邻层间的信息交换,实际上是由两层间的实体通过服务访
问点相互作用的。这里,(N)实体是N层中一个活动的元素,可以是软实体(如
一个进程),也可以是硬实体(如智能输入输出芯片)。
接口以一个或多个服务访问点(SAP,ServiceAccessPoint)的形式存在,并通
过访问服务点来实现其功能。(N)SAP位于N层和N+1层的逻辑交界面上,是
(N)实体向(N+1)实体提供服务的地方,或者说是(N+1)实体请求N层服务
———(N)服务的地方。每个SAP有一个惟一的标识标明它的地址,如在物理层
的SAP地址可以是异步通信口的地址。
OSI模型是面向连接的。两个(N)实体利用一种协议并通过(N-1)连接实
现通信。但是,一个(N)SAP一次只能连接一个(N)实体和一个(N+1)实体,而
一个(N)实体可以同时通过多个(N)服务连接一个或多个(N+1)实体。
3.服务原语
(1)原语的概念
服务在形式上由一组原语(Primitive)描述。原语规定了应完成的功能,并用
于传送数据以及控制信息,它们供用户和其他实体访问某服务时调用。它们通
知服务提供者采取某些行动或报告某个对等实体的活动。
· 0 8 · 第2篇 计算机网络体系结构
(N)服务原语可以由(N)实体向(N+1)实体发送,也可以由(N+1)实体向
(N)实体发送。ISO/OSI定义了表4.1所示的4种类型的服务原语。
表4-1 ISO/OSI定义的4种类型的服务原语
名称 格式 发送方向 含义
请求原语(N)PRIMITIVENAME.request(a0,…,an-1)(N+1)→(N)请求(N)实体的服务
指示原语(N)PRIMITIVENAME.indication(a0,…,an-1)(N)→(N+1)通知服务已开始
响应原语NPRIMITIVENAME.response(a0,…,an-1)(N+1)→(N)已响应最近的一次指示
证实原语NPRIMITIVENAME.confirm(a0,…,an-1)(N)→(N+1)请求的服务已完成
大部分原语都带有参数。例如一个运输连接请求原语可以写为
TCONNECT.request(被叫地址,主叫地址,…)
这里,TCONNECT是原语名称,request是原语类型,中间用圆点分隔,“被
叫地址”和“主叫地址”是原语参数。
(2)有证实服务和无证实服务
服务有有证实(Confirmed)和无证实(Unconfirmed)之分。有证实服务包括请
求、指示、响应和证实4个原语,无证实服务只包括请求、指示2个原语。图4.2
以张给李打电话通知开会为例,说明有证实服务和无证实服务的交互过程。
图4.2 有证实服务和无证实服务的交互过程
· 1 8 · 第4章 ISO/OSI参考模型
这里,CONNECT和DATA过程是有证实服务,DISCONNECT是无证实服务。
(3)原语的参数
大多数原语都有参数。例如:连接请求的参数可能要指明是与哪一台计算
机连接,需要的服务类别,以及在该连接上使用的最大报文长度;连接指示原语
的参数可能包括呼叫者标识,需要的服务类型,以及建议的最大报文长度等。在
典型情形下,当接收到一个服务原语时,该层的协议实体读原语中的参数,并把
它们与附加的协议控制信息相结合形成该层的PDU,所产生的PDU再放到带有
附加参数的服务原语的用户段中,以便传给相邻的下层。
4.协议与服务的关系
服务与协议关系非常密切,但却是完全不同的概念,然而又却容易被混淆。
服务定义了相邻两层之间的接口关系,上层是服务的用户,下层是服务的提
供者,并用一组原语描述服务内容———下层能够为它的上层给予的支持。
协议是同层实体之间数据交换的规则。实体利用协议来实现它们的服务的
定义。
在某一层上,只要不改变提供给上层的服务,实体可以使用不同的协议。这
样,就把服务同协议完全分离开来。OSI的一大贡献也就是实现了服务同协议
的分离。
4.1.3 各层设计中的流量控制
在第2章介绍了用滑动窗口协议实现链路上数据流量控制的方法。实际
上,不仅在数据链路层,在网络层和运输层都要进行流量控制,如路由器也有流
量控制的功能。这一小节对流量控制做一些较系统的分析,以便使读者在不同
层次上了解流量控制的相同点和不同点。
1.拥塞与死锁
在公路上,车流量超过一定限度,大家的速度就不得不减慢;再超过一定的
限度,就会出现谁也走不动的现象。计算机网络也是如此,无论是计算机装置还
是通信设备,对数据的处理能力总是有限的。当网上传输的数据量增加到一定
程度时,网络的吞吐量下降,这种现象称为“拥塞”(Congestion)。传输数据量急剧
增加时,丢弃的数据帧不断增加,从而引起更多的重发;重发数据所占用的缓冲
区得不到释放,又引起更多的数据帧丢失;这种连锁反应将很快波及全网,使通
信无法进行,网络处于“死锁”(Deadlock)状态,陷于瘫痪。图4.3表明了网络系
统吞吐量与输入负载的关系。
· 2 8 · 第2篇 计算机网络体系结构
图4.3 网络系统吞吐量与输入负载的关系
2.流量控制的基本原理
防止拥塞和死锁的办法是制定网上交通规则,进行流量控制。从原理上说,
拥塞和死锁是网上可用资源不能满足各用户资源需求造成的,即
∑用户资源需求≥可用资源
由此,可以得到进行流量控制的基本策略:
�增加用户可用资源;
�限制用户资源需求。
3.流量控制的级别
计算机网络是一个复杂的系统。如图4.4所示,它的流量控制可以从两种
角度来研究。从网络的组成环节上看,涉及相邻节点间(段级)的流量控制、节点
间(入口出口级)的流量控制、主机与节点间(进网级)的流量控制和主机间(传输
级)的流量控制;从网络的体系结构上看,涉及到物理层、链路层、网络层和传输
层。这二者之间具有以下几点联系:
�物理层提供了系统最基本的可用资源;
�段级流量控制在链路层实现;
�入口出口级的流量控制在网络层实现;
�进网级的流量控制在网络层和链路层实现;
�传输级的流量控制在传输层实现。
其中,物理层流控的主要目的是提供网络的基本可用资源,基本策略有:
�合理选择路径,均衡网上负荷;
�增加通道带宽,增加信息速率;
�增加缓冲区,等等。
其他层的流控策略主要是限制用户资源需求。
· 3 8 · 第4章 ISO/OSI参考模型
图4.4 流量控制的级别
4.用户资源需求限制策略
下面介绍几种通过限制用户资源需求来控制流量的策略。
(1)等待传输法
当接收节点的缓冲区将被占满、死锁来临之前,向发送节点发送暂停发送信
息;当危险解除后,再通知发送节点恢复发送。
(2)预约缓冲区法
源主机在开始传输数据之前,首先了解目的主机的可用缓冲区大小,预约一
定大小的缓冲区,根据分配的缓冲区大小控制数据的发送量。当缓冲区用完后,
等待对方重新分配缓冲区。
(3)数据单元丢弃法
当目的主机有缓冲区时就接收数据单元,无缓冲区时就将数据单元丢弃,被
丢弃的数据单元由于源主机得不到确认而重发。
(4)许可证法
这是一种全网流量控制策略。其基本方法为:网络初启时,给每个节点各分
配一定数量的许可证;一个节点上的主机要发送数据,必须从该节点获得一个许
可证,将许可证与数据一起发送,这时发送节点将减少一个许可证,没有许可证
可用的节点不能发送数据;目标节点收到一个数据的同时,也收到一个许可证,
供自己的主机发送数据使用。为了防止某一个节点积累的数据太多,超过限量
时,将把多余的许可证单独发送或让数据单元捎带到别的节点上。