首页 理论教育OSI参考模型的应用技术

OSI参考模型的应用技术

【摘要】:OSI参考模型是在博采众长的基础上形成的系统互联技术。OSI参考模型分层的原则是将相似的功能集中在同一层内,功能差别较大时分层处理,每层只对相邻的上下层定义接口。OSI参考模型把开放系统的通信功能划分为7个层次。OSI参考模型如图2-19所示。下面将从最下层开始,依次讨论OSI参考模型的各层。不过,ISO已经为各层制定了标准,但它们并不是参考模型的一部分,它们是作为独立的国际标准公布的。

为了实现不同厂家生产的设备之间的互联操作与数据交换,国际标准化组织ISO/TC97 于1978年建立了“开放系统互联”分技术委员会,起草了开放系统互联参考模型OSI(Open System Interconnection)的建议草案,并于1983年成为正式的国际标准ISO7498,1986年又对该标准进行了进一步的完善和补充,形成了为实现开放系统互联所建立的分层模型,简称OSI参考模型。这是为异种计算机互联提供了一个共同基础和标准框架,并为保持相关标准的一致性和兼容性提供了共同的参考。“开放”并不是指对特定系统实现具体的互联技术或手段,而是对标准的认同。一个系统是开放系统,是指它可以与世界上任一遵守相同标准的其他系统互联通信

OSI参考模型是在博采众长的基础上形成的系统互联技术。它促进了数据通信计算机网络的发展。OSI参考模型提供了概念性和功能性结构,将开放系统的通信功能划分为7个层次。各层的协议细节由各层独立进行。这样一旦引入新技术或提出新的业务要求,就可以把因功能扩充、变更所带来的影响限制在直接有关的层内,而不必改动全部协议。OSI参考模型分层的原则是将相似的功能集中在同一层内,功能差别较大时分层处理,每层只对相邻的上下层定义接口

OSI参考模型把开放系统的通信功能划分为7个层次。从连接物理介质的层次开始,分别赋予1,2,…,7层的顺序编号,相应地称为物理层数据链路层、网络层、传输层、会话层、表示层和应用层。OSI参考模型如图2-19所示。

978-7-111-55649-7-Chapter02-27.jpg

图2-19 OSI参考模型

OSI模型有7层,其分层原则如下:

1)根据不同层次的抽象分层。

2)每层应当实现一个定义明确的功能。

3)每层功能的选择应该有助于制定网络协议的国际标准。

4)各层边界的选择应尽量减少跨过接口的通信量。

5)层次应足够多,以避免不同的功能混杂在同一层中,但也不能太多,否则体系结构会过于庞大。

下面将从最下层开始,依次讨论OSI参考模型的各层。请注意OSI模型本身不是网络体系结构的全部内容,这是因为它并未确切地描述用于各层的协议和服务,它仅仅告诉我们每一层应该做什么。不过,ISO已经为各层制定了标准,但它们并不是参考模型的一部分,它们是作为独立的国际标准公布的。

1.物理层

物理层(Physical Layer)涉及通信在信道上传输的原始比特流。设计上必须保证一方发出二进制“1”时,另一方收到的也是“1”而不是“0”。这里的典型问题是用多少伏特电压表示“1”,多少伏特电压表示“0”;一个比特持续多少微秒;传输是否在两个方向上同时进行;最初的连接如何建立和完成通信后连接如何终止;网络接插件有多少针以及各针的用途。这里的设计主要是处理机械的、电气的和过程的接口,以及物理层下的物理传输介质等问题。

2.数据链路层

数据链路层(Data Link Layer)的主要任务是加强物理层传输原始比特的功能,使之对网络层显现为一条无错线路。发送方把输入数据分装在数据帧(Data Frame)里(典型的帧为几百字节或几千字节),按顺序传送各帧,并处理接收方回送的确认帧(Acknowledgement Frame)。因为物理层仅仅接收和传送比特流,并不关心它的意义和结构,所以只能依赖各链路层来产生和识别帧边界。可以通过在帧的前面和后面附加上特殊的二进制编码模式来达到这一目的。如果这些二进制编码偶然在数据中出现,则必须采取特殊措施以避免混淆。

传输线路上突发的噪声干扰可能把帧完全破坏掉。在这种情况下,发送方机器上的数据链路软件必须重传该帧。然而,相同帧的多次重传也可能使接收方收到重复帧,比如接收方给发送方的确认丢失以后,就可能收到重复帧。数据链路层要解决由于帧的破坏、丢失和重复所出现的问题。数据链路层可能向网络层提供几类不同的服务,每一类都有不同的服务质量和价格。

数据链路层要解决的另一个问题(在大多数层上也存在)是防止高速的发送方的数据把低速的接收方“淹没”。因此需要有某种流量调节机制,使发送方知道当前接收方还有多少缓存空间。通常流量调节和出错处理同时完成。

如果线路能用于双向传输数据,数据链路软件还必须解决新的麻烦,即从A到B数据帧的确认帧将同从B到A的数据帧竞争线路的使用权。借道(Piggybacking)就是一种巧妙的方法,将在后文中进行讨论。

广播式网络在数据链路层还要处理新的问题,即如何控制对共享信道的访问。数据链路层的一个特殊的子层———介质访问子层,就是专门处理这个问题的。

3.网络层

网络层(Network Layer)关系到子网的运行控制,其中一个关键问题是确定分组从源端到目的端如何选择路由。路由既可以选用网络中固定的静态路由表,几乎保持不变,也可以在每一次会话开始时决定(例如通过终端对话决定),还可以根据当前网络的负载状况,高度灵活地为每一个分组决定路由。

如果在子网中同时出现过多的分组,它们将相互阻塞通路,形成瓶颈。此类拥塞控制也属于网络层的范围。(www.chuimin.cn)

因为拥有子网的人总是希望他们提供的子网服务能得到报酬,所以网络层常常设有记账功能。最低限度,软件必须对每一个顾客究竟发送了多少分组、多少字符或多少比特进行记数,以便于生成账单。当分组跨越国界时,由于双方税率可能不同,记账则更加复杂。

当分组不得不跨越一个网络以到达目的地时,新的问题又会产生。第二个网络的寻址方法可能和第一个网络完全不同;第二个网络可能由于分组太长而无法接收;两个网络使用的协议也可能不同等。网络层必须解决这些问题,以便异种网络能够互联。

在广播网络中,选择路由问题很简单,因此网络层很弱,甚至不存在。

4.传输层

传输层(Transport Layer)的基本功能是从会话层接收数据,并且在必要时把它分成较小的单元,传递给网络层,并确保到达对方的各段信息正确无误,而且,这些任务都必须高效率地完成。从某种意义上讲,传输层使会话层不受硬件技术变化的影响。

通常,会话层每请求建立一个传输连接,传输层就为其创建一个独立的网络连接。如果传输连接需要较高的信息吞吐量,传输层也可以为之创建多个网络连接,让数据在这些网络连接上分流,以提高吞吐量。另一方面,如果创建或维持一个网络连接不合算,传输层可以将几个传输连接复用到一个网络连接上,以降低费用。在任何情况下,都要求传输层能使多路复用对会话层透明。

传输层也要决定向会话层,最终向网络用户提供什么样的服务。最流行的传输连接是一条无错的、按发送顺序传输报文或字节的点到点的信道。但是,还有的传输服务不能保证传输次序的独立报文传输和多目标报文广播。采用哪种服务是在建立连接时确定的。

传输层是真正的从源到目标“端到端”的层。也就是说,源端机上的某程序,利用报文头和控制报文与目标机上的类似程序进行对话。在传输层以下的各层中,协议是每台机器与和它直接相邻的机器间的协议,而不是最终的源端机与目标机之间的协议,在它们中间可能还有多个路由器。图2-19说明了这种区别,1~3层是链接起来的,4~7层是端到端的。

很多主机有多道程序在运行,这意味着这些主机有多条连接进出,因此需要有某种方式来区别报文属于哪条连接。识别这些连接的信息可以放入传输层的报文头。

除了将几个报文流多路复用到一条通道上,传输层还必须解决跨网络连接的建立和拆除。这需要某种命名机制,使机器内的进程可以讲明它希望与谁对话。另外,还需要一种机制以调节通信量,使高速主机不会发生过快地向低速主机传输数据的现象。这样的机制称为流量控制(Flow Control),在传输层(同样在其他层)中扮演着关键角色。主机之间的流量控制和路由器之间的流量控制不同,尽管后文中将看到类似的原理对二者都适用。

5.会话层

会话层(Session Layer)允许不同机器上的用户建立会话(Session)关系。会话层允许进行类似传输层的普通数据的传输,并提供了对某些应用有用的增强服务会话,也可被用于远程登录到分时系统或在两台机器间传递文件。

会话层服务之一是管理对话。会话层允许信息同时双向传输,或任一时刻只能单向传输。若属于后者,则类似于单线铁路,会话层将记录此时该轮到哪一方了。

一种与会话有关的服务是令牌管理(Token Management)。有些协议保证双方不能同时进行同样的操作,这一点很重要。为了管理这些活动,会话层提供了令牌。令牌可以在会话双方之间交换,只有持有令牌的一方可以执行某种关键操作。

另一种会话服务是同步(Synchronization)。如果网络平均每小时出现一次大故障,而两台计算机之间要进行长达两小时的文件传输时该怎么办呢?每一次传输中途失败后,都不得不重新传输这个文件。而当网络再次出现故障时,又可能半途而废了。为了解决这个问题,会话层提供了一种方法,即在数据流中插入检查点。每次网络崩溃后,仅需要重传最后一个检查点以后的数据。

6.表示层

表示层(Presentation Layer)完成某些特定的功能,由于这些功能常被请求,因此人们希望找到通用的解决办法,而不是让每个用户来实现。值得一提的是,表示层以下的各层只关心可靠地传输比特流,而表示层关心的是所传输的信息的语法和语义。

表示层服务的一个典型例子是用一种大家一致同意的标准方法对数据编码。大多数用户程序之间并不是交换随机的比特流,而是诸如人名、日期、货币数量和发票之类的信息。这些对象是用字符串、整型、浮点数的形式,以及由几种简单类型组成的数据结构来表示的。不同的机器由不同的代码来表示字符串(如ASCII和Unicode)、整型(如二进制反码和二进制补码)等。为了让采用不同表示法的计算机之间能进行通信,交换中使用的数据结构可以用抽象的方式来定义,并且使用标准的编码方式。表示层管理这些抽象数据结构,并且在计算机内部表示法和网络的标准表示法之间进行转换。

7.应用层

应用层(Application Layer)包含大量人们普遍需要的协议。例如,世界上有成百种不兼容的终端型号。如果希望一个全屏幕编辑程序能工作在网络中许多不同的终端类型上,每个终端都有不同的屏幕格式、插入和删除文本的换码序列、光标移动等,其困难可想而知。

解决这一问题的方法之一是定义一个抽象的网络虚拟终端(Network Virtual Terminal),编辑程序和其他所有程序都面向该虚拟终端。而对每一种终端类型,都写一段软件来把网络虚拟终端映射到实际的终端。例如,当把虚拟终端的光标移到屏幕左上角时,该软件必须发出适当的命令使真正的终端的光标移动到同一位置。所有虚拟终端软件都位于应用层。

应用层的另一个功能是文件传输。不同的文件系统有不同的文件命名原则,文本行有不同的表示方式等。不同的系统之间传输文件所需处理的各种不兼容问题,也同样属于应用层的工作。此外还有电子邮件、远程作业输入、名录查询和其他各种通用和专用的功能。