4.2 ISO/OSI参考模型结构
网络发展的早期,各个计算机网络厂家都分别有自己的网络体系结构,如
IBM的SNA网络体系,DEC的DNA网络体系和UNIVAC的DCA分布式网络体系
等。不同的网络体系结构分别有自己的层次结构和协议,给网络标准化和互连
· 4 8 · 第2篇 计算机网络体系结构
造成很大困难。为此,ISO(InternationalStandardsOrganization,国际标准化组织)于
1978年2月开始研究解决这个问题的方法草案,于1982年4月形成一个开放系
统互连参考模型(OpenSystemInterconnection/ReferenceModel,OSI/RM)的国际标
准草案。OSI/RM是一个七层模型,如图4.5所示。
图4.5 开放系统互连参考模型
在OSI参考模型中,每一层的功能都在下一层的支持下实现,并支持上一
层。OSI/RM中的低三层通常归入通信子网的功能范畴,通常靠硬件做成通信卡
或由通信处理机实现;网络中的高四层归入资源子网的功能范畴,通常用软件方
法实现,形成网络操作系统(最高层常由应用软件实现)。如果按相互通信的对
象进行划分,可将OSI参考模型的通信分为计算机系统间的通信和计算机系统
中进程间的通信。由会话层、表示层、应用层构成的上三层为进程间的通信,主
要解决两台通信的主机间信息传输问题;由物理层、数据链路层、网络层构成的
下三层为系统间的通信,主要解决通信子网中的数据传输问题;传输层处于两部
分的中间,可以看作系统通信与进程通信间的接口层。
应当注意,OSI模型仅仅是“参考模型”,而不是网络体系结构的全部;它仅
仅描述了每一层的功能,而没有描述每一层使用哪些协议和承担哪些服务。现
在,ISO已经为各层制定了标准,不过这些标准并不是OSI模型的一部分,而是
独立存在的。这一节在介绍各层功能的同时,虽然也顺便介绍一些有关协议,但
读者一定不要认为它们也是OSI模型的一部分。
· 5 8 · 第4章 ISO/OSI参考模型
4.2.1 OSI的低层
OSI的低层包括物理层、数据链路层和网络层。这一部分的功能主要是实
现通信功能,也称为通信子网部分。
1.物理层
ISO给出的物理层(PhysicalLayer)定义为:“物理层为启动、维护和释放数据
链路实体之间二进制位传输而进行的物理连接提供机械的、电气的、功能的和规
程的特性。这种物理连接可以通过中间系统在物理层内进行二进制位传输。它
允许进行全双工或半双工的二进制位传输,对物理数据单元(即二进制位)可以
以同步方式或异步方式进行传输。”
从这段定义可以看出,物理层的功能是解决“物理连接”的标准问题,它包含
了如下几个方面的含义。
(1)它建立在传输介质之上,并不考虑传输介质的具体敷设问题,而只关心
介质两端的连接,或者说它只关心链路两端点的物理特性。这些物理特性包括:
�机械特性———插头尺寸、各脚位置;
�电气特性———表示“1”和“0”的电压各为多少,一个比特的宽度;
�功能特性———某一根线上出现某一电平所代表的意义;
�规程特性———不同功能的各种可能事件出现的顺序。
(2)建立物理层的目的是提供一条物理链路上“1”、“0”码传输的物理条件
———为数据链路层提供这个服务。
(3)同时还要涉及下列问题:
�数据传输的单位———串行(1bit),并行(nbit);
�数据传输方式———全双工或半双工以及同步方式(这些概念见第2章);
�服务质量参数———出错率、服务可用性、传输速率和延迟;
�物理层本身的管理问题,等等。
常用的物理层协议有EIA-232-D、V.35和X.21等。例如,在使用电缆进
行设备连接时,都要使用连接头,即插头和插座,有名的EIA-232-D(前身是
RS-232C)就是关于接口的协议之一。它按照ISO2110标准定义的DB-25接
插件,规定了如图4.6所示的外形尺寸———机械特性,还规定DB-25的阳件(带
插针的件)安装在DTE(DataTerminalEquipment,数据终端设备)方,阴件(带插孔
的件)安装在DCE(DataCommunicationEquipment,数据通信设备)方。
为了保证正确地传输二进制数据并使设备控制能有效地进行,EIA-232-D
提供了数据信号和控制信号的电压标准———电气特性,具体分配如图4.7所示。
· 6 8 · 第2篇 计算机网络体系结构
图4.6 DB-25外形尺寸
图4.7 EIA-232-D的电气特性
EIA-232-D标准还描述了引脚的功能分配———功能特性,如表4.2所示。
表4.2 EIA-232-D接口引脚功能
引脚号
25脚9脚
助记符 信号功能 信号方向 类型 简要描述
1 5 屏蔽地
接至机壳或机架,消除静电干
扰;可不接
2 3 TXD 发送数据 DTE→DCE数据
DTE发送数据,不发送数据时为
负电压
3 2 RXD 接收数据 DCE→DTE数据
DTE接收数据,无接收数据时为
负电压
4 7 RTS 请求发送 DTE→DCE控制 请求发送/准备好接收
5 8 CTS 清除发送 DCE→DTE控制DCE同意接收,对RTS的应答
6 6 DSR 数据设备就绪 DCE→DTE控制DCE(数据设备)准备好
7 GND 信号地 公共 必不可少的公共接地线
8 1 CD 载波测试 DCE→DTE控制 接收方导线信号检测器
· 7 8 · 第4章 ISO/OSI参考模型
续表
引脚号
25脚9脚
助记符 信号功能 信号方向 类型 简要描述
9
10
11
保留
12 次信道载波检测 控制
13 次信道清除发送 控制
14 次信道发送数据 数据
15 TXC 发送定时 DTE→DCE计时
16 次信道接收数据 数据
17 RXC 接收定时 DCE→DTE计时
18 保留 控制
19 次信道请求发送 控制
20 4 DTR 数据终端准备好DTE→DCE控制DTE准备好
21 信号质量检测 控制
22 9 RI 振铃指示 DCE→DTE控制
23 DRI 信号速率检测 控制
24 TXC 发送定时 DTE→DCE计时
25 保留 控制
V.35和X.21则是由国际电报电话咨询委员会ITU-T提出的两种物理层
协议,前者主要用于模拟传输,后者用于数字传输。
物理层的功能实现后,表示两点之间的链路已连接好,就可以传输0、1码了。
2.数据链路层
在物理层实现了透明的0、1码传输的基础上,数据链路层(datalinklayer)将
加强这些原始比特的传输,使之成为一条无错的数据传输链路。
为了达到“无错的数据传输链路”的目标,对链路层的设计通常要解决如下
3方面的问题:
(1)成帧。帧(Frame)就是一段或一组位串。从发送方来讲,网络层的数据
是以分组的形式传输的。这些分组传输到数据链路层后,首先要解决这些分组
的同步传输问题,于是要加上一个头尾标志,经过这样包装的分组就称为帧。或
者说,帧解决了同步传输问题。也可以说,同步传输问题是在数据链路层解决
的。帧送到物理层后,是以位串形式传输的。对于接收端来说,数据链路层从物
理层接收到的是一串0、1码,到了数据链路层后,要首先根据帧头和帧尾判定出
帧中的数据部分(要传向网络层的分组)。图4.8所示为一般帧的格式。
· 8 8 · 第2篇 计算机网络体系结构
图4.8 一般帧格式
(2)确定帧的顺序,以便数据拼接。
(3)差错校验———根据校验序列对帧进行校验。
(4)流量控制和差错控制(如停等协议、滑动窗口协议)。
(5)数据链路管理(链路的建立、维护和拆除)。
目前,典型的数据链路层协议有:面向字符的协议(如ISO-1745基本型控
制规程、IBM的二进制同步通信协议BSC等)和面向位的协议(如IBM研制的同
步数据链路控制协议SDLC,以及SDLC的修改版本———ISO的高级数据链路控
制协议HDLC、ITU-T的链路访问协议LAP等)。
3.网络层
数据链路层从一条传输链路的角度来解决传输中的可靠性问题。网络层则
是从整个网络的角度来处理数据传输中的有关问题,处理问题过程中需要考虑
通信双方的终端节点及中间节点间的关系,具体内容包括:
(1)路由选择。如何在组成网络的各子网之间找到到达传送目的地的最佳
路径。
(2)流量和拥塞控制。防止在子网中间出现过多的分组,造成通路阻塞,形
成瓶颈。
(3)差错及故障的恢复。
网络层中有代表性的标准协议有:ITU-T的X.25、Internet中使用的IP协议等。
4.2.2 OSI的高层
OSI的高层包括会话层、表示层和应用层,属于资源的分配和处理的部分,
通常称为资源子网部分。
1.会话层
会话层是建立在用户与网络间的接口,好像两台主机间的联络官,主要处理
通信双方交互的建立、组织,并协调、控制会话过程的进行(会话服务)。
2.表示层
表示层处理两个应用实体间数据交换的语法问题,解决数据交换中存在的
数据格式不一致和数据表示方法不同等问题。例如IBM系统采用EBCD编码,
· 9 8 · 第4章 ISO/OSI参考模型
而其他一些系统用户采用ASCII编码,表示层要为它们的转换服务,转换后传输
给会话层。此外,表示层还进行加密、压缩或终端仿真处理。图4.9形象地描述
了表示层的功能。
图4.9 表示层的功能
3.应用层
应用层主要进行应用管理和系统管理,直接为用户服务,在信息网络用户之
间形成一个交换信息的界面kk用户应用程序。简单地说,就是接收用户数据。
信息网络系统接受了用户的数据后,立即把它们传输给表示层。
4.2.3 传输层
1.传输层的功能
传输层是站在比网络层更高的角度来研究问题。如图4.10所示,网络层考
虑的是网络的细节,而传输层屏蔽了这些细节,只从主机间逻辑连接(或进程间
通信)的角度来处理数据的传输问题。
图4.10 网络层与传输层的研究角度
传输层与数据链路层不同,数据链路层处理的是相同网络中两个节点间的
数据通信;而传输层处理的是主机间的数据通信,是源节点到目的节点之间的传
输,它考虑的具体内容有:
(1)两个主机间数据传输的方式。虚电路方式,与连接有关的数据传输服
务,像打电话;数据报方式,与连接无关的数据传输服务,像邮局传输信件。
· 0 9 · 第2篇 计算机网络体系结构
(2)把数据分割成数据包,分组,为会话层提供最佳的数据传输服务,以便
充分地利用网络。
传输层是计算机网络中非常关键的一层。可以说,当在传输层中解决了两
台主机间的通信问题后,在其上就可以进一步解决通信双方的交互问题、数据的
表示问题和具体应用了。
2.传输模型
传输层是整个协议层次结构的中心,它下靠传输服务提供者(Transport
ServiceProvider)———通信子网的支持,上为传输服务用户(TransportService
User)———上面的3层提供从源端机到目的端机的可靠的、价格合理的数据传输
服务。图4.11是传输层的一个抽象模型。其中,TSAP(TransportServiceAccess
Pointer)为传输层服务访问点,NSAP(NetworkServiceAccessPointer)为网络层服务
访问点,传输实体(TransportEntity)为完成传输层任务的硬件和软件,TPDU
(TransportProtocolDataUnit)是传输协议数据单元。
图4.11 传输层抽象模型
3.传输层的基本开发思想
传输层建立在网络层之上。在通信子网范畴中,连接通常叫做虚电路
(VirtualCircuit),无连接的独立报文通常叫做数据报。网络层建立在数据链路层
的基础上,向传输层提供两种服务:面向连接的服务和无连接的服务。通常把面
向连接的服务也叫做虚电路服务,把无连接的服务叫做数据报服务。由于网络
层是通信子网的边沿,采用哪一种服务方式,实际上就是将报文的差错和顺序控
制等复杂的功能放在通信子网中,还是放在主机(传输层)中。这代表了两种建
网的思想。Internet是采用无连接服务的代表者,这类网络开发者的基本思想
是:由于计算机处理设备已经非常便宜,把复杂性放在主机中是非常合算的;而
且,对于数据准确性要求很高的用户,对子网的可靠性总是留有戒心,为了保护
· 1 9 · 第4章 ISO/OSI参考模型
自己,总要在传输层设置差错和报文顺序的控制功能,再在子网中设置这些功能
就没有多大意义了。ATM则是采用面向连接服务的代表者,这类网络开发者的
基本思想是:通信子网是一项重要的公共基础设施,应当能为多种需求服务,其
中包括对子网质量要求高的用户(如银行系统)的服务,这对子网的可靠性提出
了较高的要求;另一方面,这样重要的基础设施不能朝建夕改,应当有一定的超
前性和稳定性。这两种思路,孰优孰劣,极难定断,它们各自都在向前发展。
传输层与网络层一样,也有两种服务:面向连接的服务和无连接的服务。这
两种服务与网络层是一致的,因为传输层是对网络层在可靠性方面最后的补充。
也就是说,在传输层之上不再考虑传输的可靠性问题。为了让用户更放心,为了
给应用于各种网络的应用程序提供更可靠的网络服务,使这些应用程序能够采
用一个标准的原语集来编写,而不必担心不同的通信子网接口和不可靠的数据
传输,才设置了传输层。
4.传输层协议类型与网络层服务质量的关系
传输层的主要功能是增强和优化网络层提供的服务质量。因此,传输层的
工作情形依赖于网络层提供的服务质量。网络层提供的服务愈完善,传输层协
议就愈简单;反之,网络层提供的服务愈简单,传输层协议就愈复杂。
按照质量,可以把网络层的服务分为A,B,C三级:A级网络提供完善的服
务,分组的丢失、重复和错序极少。C级网络提供的服务几乎是不可靠的,它会
出现分组丢失和重复分组。B级网络服务介于A级和C级之间。基于A级网
络服务的传输层协议非常简单,基于C级网络服务的传输层协议非常复杂。广
域网几乎不能提供A级服务,面向连接的广域网常提供B级服务,面向无连接
的广域网则提供C级服务;少数局域网可以提供A级服务。根据网络层提供的
服务,ISO/OSI把传输层协议分为0~4等5类,如表4.3所示。
表4.3 网络层的服务等级与传输层协议类型
传输层协议类型 网络层等级 说明
0类:简单类 A 最简单:不进行排序和流控
1类:基本错误恢复类 B 不需错误检测和流量控制
2类:多路复用类 A 允许多个连接向一个网络发送数据
3类:出错恢复和多路复用类 B 集中了1、2两类协议的特点
4类:出错检测和恢复类 C 最复杂:必须能处理分组丢失、重复、出错
5.传输服务过程
传输层向传输服务用户提供面向连接的服务和无连接的服务,并且服务是
· 2 9 · 第2篇 计算机网络体系结构
通过建立的两个传输实体之间所用的传输协议实现的。下面通过介绍面向连接
的传输服务过程,使读者了解传输协议的基本要素。
(1)建立连接
面向连接的服务是从使用服务原语建立连接开始的。然而,一个应用程序
要与一个远程应用程序建立连接,首先必须明确是与哪个远方应用程序建立连
接,也就是要确定一对传输地址TSAP。每一个传输地址都与一定的功能相联
系。一般说来,本地传输地址不难确定,可以依据传输服务用户(进程)所依附的
TSAP确定。而远端的TSAP确定不这么简单。
传输地址TSAP有点像电话的号码,每个电话号码是与特定的用户或用途
相联系的。但是,有的人有电话,还可能有几部电话;而有的人没有固定电话可
用,别人要找他,就得借助一些固定电话。传输地址也有这样的情况,有的TSAP
是约定俗成具有不变功能的,有的则是临时分配的,传输服务用户无法直接知
道。
(a)与远端固定传输地址的连接
端-端通信向上提供的服务最终表现为面向应用程序的服务。应用程序间
的通信具体由多个进程实现,在多用户、多任务的网络中要求一台主机能并发地
处理多个进程。为此,传输层顶端提供了多个“端口”(传输地址)的服务,一个端
口对应一个进程,以满足一台主机同时并发地处理多个进程的要求。
首先讨论与远端固定传输地址连接的情形。设源端机上一个依附于8号
TSAP的进程需要远端的一个时间进程的服务;远端时间进程依附于123号
TSAP,并处于休眠状态。连接过程如下:
①源主机上的进程需要查询时间时,发出连接请求———源传输地址为8号
TSAP,目标地址为123号TSAP。
②源主机传输层收到连接请求后,在源主机和目标主机上选择NSAP,并在
它们之间建立一个网络连接。
③源主机上的传输实体利用上述连接,将服务质量参数通知目的主机上的
传输实体。
④目的主机上的传输实体发送连接指示给时间进程。
⑤如果时间进程同意,就发出连接响应原语。
⑥源主机的传输实体收到确认信号,连接便建立。
(b)与非固定传输地址的连接
一个人要是没有固定电话,而别人要与他通信,就得借助某个固定电话(如
秘书的电话)。具体的实现可能有多种方式。例如,请求通话者先打一个电话到
某固定电话(秘书处),让该固定电话通知他,如果他愿意与请求者通话,(秘书)
· 3 9 · 第4章 ISO/OSI参考模型
就为他选定一台电话并把这台电话的号码通知请求者,再由请求者打过来。
通过公用传输地址TSAP与非固定传输地址进行连接,也有许多方法。其
中一种方法是:主机为远程进程的使用提供注册程序或进程连接服务程序(相当
于秘书);该程序可常驻内存并附在固定TSAP地址上(这个地址可以在网络使
用手册中找到)。任何进程要访问远程服务,步骤如下:
①首先与注册进程连接(在ARPA网中称为初始连接)———相当于先接通
秘书的电话。
②请求进程给注册进程发消息,说明要服务的程序———相当于告诉对方秘
书要找谁。
③注册进程按照消息要求产生一个新的进程运行该服务进程,并为它分配
一个未用的传输地址———相当于分配一部临时可用电话。
④注册进程将分配的传输地址发给远端请求进程,并释放与请求进程的传
输连接,然后进入休眠状态———相当于把临时分配的电话号码告知来电者,然后
挂机。
⑤请求进程收到传输地址后,释放与注册进程的连接———相当于也挂机。
⑥请求进程与服务进程连接———相当于再拨给欲联系者的临时电话。
(c)TSAP地址和NSAP地址结构
一般地,通用TSAP地址具有下面的层次结构:
<国家><部门><网络><主机><端口>
实际上,也就是:
TSAP地址=NSAP地址+<端口>
因此,当一个传输实体收到一个TSAP地址并想与之连接时,只要使用TSAP
地址中的NSAP地址,就可以首先建立一个网络连接,进而到达适当的远端传输
实体。也就是说,网络连接是传输连接的一部分,传输连接是基于网络连接的。
(2)数据传输
两个要通信的传输服务用户进程一旦建立了连接,便可以立即开始数据传
输。传输层要向传输用户提供可靠的、透明的和价格合理的数据传输。下面介
绍传输实体在数据传输过程中要处理的一些问题。
(a)数据封装
在源端,传输层接收来自高层的服务数据单元TSDU,然后加上报头进行封
装,使之成为传输层的协议数据单元TPDU。这时,如果报文太长,则应将其分
段;如果报文太短,应将它们组装。与之对应,在目的端再恢复原状。
(b)拼接和分割
从传输层往下看,TPDU实际上是要通过网络层进行实际的数据传输。为
· 4 9 · 第2篇 计算机网络体系结构
此,要按网络层的NPDU大小,对传输层的TPDU进行拼接或分割。
随着分组一层一层地向下层传输,数据分组被进行一层一层的封装,最后到
达物理层按比特流传输。图4.12表明了这一层层封装的过程。
图4.12 TPDU的层层封装过程
(c)多路复用和分流
传输连接是建立在网络连接基础上的,网络连接是建立在虚电路概念上的。
多路复用是指当传输服务进程产生的数据流较少时,可以将几条传输数据流映
射到同一物理连接(即一条虚电路)上,以充分利用网络带宽,减少网络连接,降
低费用。分流是指当用户进程发送的数据量大于网络连接的容量时,该传输连
接可以打开多个网络连接(即多条虚电路)来提高带宽。
(d)流量控制和缓冲管理
流量控制就是控制发送数据量,使其不超过接收者的能力。这一点与数据
链路层的流量控制概念相同,并且它们都是基于滑动窗口技术的。但是,数据链
路层线路较少,通信量大,常采用固定大小的窗口;传输层则由于所需的连接个
数远比数据链路层要多,但同时建立连接的可能性又比较小,为了提高缓冲区的
利用率,常采用可变大小的窗口以及动态缓冲分配技术。
(3)释放连接
当数据传输完毕或出现异常情况时,都需要释放连接。
6.传输服务原语
(1)传输服务原语的参数
在传输服务原语中,要涉及如下参数:
�callee,被呼方传输实体使用的地址(即被呼方TSAP的地址);
�caller,呼叫方传输实体使用的地址(即呼叫方TSAP的地址);
�expwanted,是否加快数据发送(布尔值);
�qos,希望的服务质量;
�userdata,传输服务用户数据;
�responder,目标方作为响应的传输地址;
�reason,连接释放原因。
· 5 9 · 第4章 ISO/OSI参考模型
(2)传输服务原语的类型
每种传输服务各有自己的访问原语。ISO/OSI服务原语是提供给面向连接
的和无连接的服务使用的。传输服务原语也分这样两大类:面向连接的传输服
务原语和无连接的传输服务原语。
(a)面向连接的传输服务原语
连接服务原语
�TCONNECT.request(callee,caller,expwanted,qos,userdata)
�TCONNECT.indication(callee,caller,expwanted,qos,userdata)
�TCONNECT.response(qos,responder,expwanted,userdata)
�TCONNECT.confirm(qos,responder,expwanted,userdata)
连接释放服务原语
�TDISCONNECT.request(userdata)
�TDISCONNECT.indication(responder,userdata)
数据正常传输服务原语
�TDATA.request(userdata)
�TDATA.indication(userdata)
数据加速传输服务原语
�TEXPEDITEDDATA.request(userdata)
�TEXPEDITEDDATA.indication(userdata)
(b)无连接的传输服务原语
�TUNIDATA.request(callee,caler,expwanted,qos,userdata)
�TUNIDATA.indication(callee,caller,expwanted,qos,userdata)
(3)传输服务原语使用的时序
图4.13表示了几种典型传输服务过程的原语时序关系。图中,两条竖线将
空间分为3部分:中间为传输服务提供者,两侧为进行通信的两个传输服务用
户。
4.2.4 OSI/RM各层中的数据流动
从OSI/RM中还可以看出,在每一层中数据的格式是不相同的。图4.14描
绘了从用户应用程序进程将数据送入应用层开始,直到在物理层中按比特流进
行实际传送,数据在各层中被所在层的协议加工、流动的过程。
下面进一步加以说明。
假定要将数据M从用户应用进程PA传向用户应用进程PB。其过程如下:
· 6 9 · 第2篇 计算机网络体系结构
图4.13 几种典型传输服务过程的原语时序关系
�在发送端进程PA首先要将数据AP送到应用层;
�在应用层,加上一些控制信息组成的报头H7,形成第7层的报文———协
议数据单元PDU7,再将PDU7传到表示层;
�在表示层,加上第6层协议要求的控制信息组成的报头H6,形成第6层
的协议数据单元PDU6,再将PDU6传到会话层;
�在会话层,加上第5层协议要求的控制信息H5,形成第5层的协议数据
单元PDU5,传到传输层;
�在传输层,如果报文太长,应将其分为若干分组,即P1,P2,…,Pn,再分别
为它们加上第4层的控制信息H4,形成第4层的协议数据单元PDU4,传到网络
层;
�在网络层,把第4层传来的分组及报头看成是高层数据单元,再加上第3
层的报头H3,发往数据链路层;
�在数据链路层,分别在头部和尾部加上报头H2和报尾T2,形成第2层的
数据单元———帧,发往物理层;
· 7 9 · 第4章 ISO/OSI参考模型
图4.14 OSI/RM中的数据流动示意图
�在物理层,不再加控制信息,按比特流进行实际传送。
各层的协议控制信息Hi,因协议不同、传送的内容不同,分别有不同的内容
和格式要求。
比特流到达节点B后,传送到其数据链路层,剥去报头H2和报尾T2,形成
PDU3,传到3层;再剥去H3形成PDU4,传到4层……;直到将数据M传给PB。