7.8 OSI参考模型与协议
在两台计算机或者网络设备交换信息之前,必须建立通信连接,这就需要协议。网络协议就是一组规则,两台设备使用它实现通信。OSI模型和协议标准可以帮助实现网络设备之间的互通。
7.8.1 OSI参考模型
1. OSI分层通信概念
在20世纪70年代早期,有很多不同的计算机厂商,它们的产品大多互不兼容。而且,每个厂商有不同的产品线,甚至一个公司内部的不同产品线之间也互不兼容。为了解决这个问题,国际标准化组织提出了开放系统互联(OSI)参考模型,供设备厂商和软件开发者在生产产品时参照。所谓开放系统,指的是遵循OSI参考模型和相关协议标准能够实现互连的具有各种应用目的的计算机系统。
如图7-13所示,OSI模型分为7层,它描述了通过网络传递信息所必须完成的工作。当数据通过网络传输时,它必须通过OSI模型的每一层。数据经过每—层时都要附加上一些信息。到了接收端,这些附加的信息又被移走。第4到7层在端节点实现,称为上层协议;第1到3层称为底层协议,其功能是由计算机和网络共同执行的。OSI模型仅仅是一个模型,也就是一个概念框架,用于描述网络设备或成员所必需的功能。没有哪个实际的网络产品严格地遵照该模型来实现

图7-13 OSI参考模型
2.OSI模型各层基本功能
下面,从应用层开始依次简述各层的基本功能。
第7层:应用层,负责用户程序和网络其他业务之间交换信息。这一层支持应用和用户程序。它为应用进程访问网络提供了一个窗口。它处理一般的网络接入、流量控制、差错恢复和文件传输。应用层协议的例子有文件传输协议(FTP)、Telnet、简单邮件传输协议(SMTP)和超文本传输协议(HTTP)。
第6层:表示层,采用软件应用可以理解的格式来表示信息。它完成数据格式的转换,从而可以提供一个标准的应用接口和公共的通信服务。它提供的服务有加密、压缩和转换格式。表示层在每个包中增加了一个字段,该字段说明了包中的信息是如何编码的。例如:它可以说明是否对数据进行了压缩,如果是,还要说明用的是哪种压缩方法,这样,接收端就可以正确地解压缩。它也可以说明是否对数据进行了加密,如果是,还要说明用的是哪种加密方法,这样接收端也就可以正确地解密。表示层保证了收发双方能看见相同格式的信息。
第5层,会话层,负责会话连接的建立、管理和安全性。用户与用户的逻辑上的联系(两个表示层进程的逻辑上联系)通常称为会话。会话层按照在应用进程之间约定的原则,建立、监视计算机之间的会话连接,提供进程间通信的控制结构。
第4层,传输层,负责纠正传输差错并保证信息可靠的传送。它提供端到端的差错恢复和流量控制,包括包的处理、消息的再打包、将消息分割成小的包以及差错的处理。传输层协议的例子有传输控制协议(TCP)、用户数据报协议(UDP)。
第3层,网络层,区分网络上的计算机并决定如何在网络上传送信息。换句话说,该层负责选路和转发。它定义了网络之间以及设备之间如何传递信息。这一层的主要任务是附加地址信息,以及通过网络及中间节点转移数据的控制信息。它要负责建立、维护和终止连接,包括包的交换、选路、数据拥塞、数据的再封装以及逻辑地址到物理地址的转换。网络层协议的例子有X.25、网际协议(IP)等。
第2层,数据链路层,将数据组装起来等待传输。它将一些‘0’和‘1’比特封装进一个帧中,使得信息可以在相同网络上的两个设备之间传递。这一层协议规定了在单个数据链路上两个设备之间传送单个帧所必须遵守的规则。数据帧中包括必要的同步信息、差错控制信息和流量控制信息。
第1层,物理层,定义了传输介质如何连接到计算机上,以及电信号或光信号如何在传输介质上传输。物理层定义了所支持的电缆或无线接口的类型,以及支持的传输速率。根据物埋接口的不同,每种网络业务和网络设备都有相应的物理层规范。例如,物理层的规范涉及到非屏蔽双绞线(UTP)、屏蔽双绞线(STP)、同轴电缆、10BaseT(一种以太网标准,它使用双绞线来实现10Mbit/s到桌面)、多模光纤和单模光纤、xDSL、ISDN以及各种PDH(例如,DS-I/DS4或E-I/E-3)和SDH/SONET(例如,OC-1直到OC-192)。
3. 层次结构的特点
通信协议采用层次结构便于模块化设计,各层可以根据需要独立地进行修改或扩充功能,不同的高层用户可以共享公共低层的服务,而且有利于不同制造厂家的设备互连。但是,层次结构也具有一些缺点,比如信息在各层次间传送时需要增一些辅助信息,因此增加了网络的开销。另外,由于考虑到协议的通用性、标准化,在不同层次之间可能会造成少许的功能重复现象。
7.8.2 协议与服务
协议由硬件或软件实现,它们执行OSI模型中所涉及的用来传递信息的功能。一个协议可能只包含一个功能,或者由一组功能在一起完成某个任务。协议堆栈(或者简称为协议栈)由多个协议组成,它们在一起完成计算机之间的信息的交换。其中的一个协议可能用来规定网络接口卡(NIC)如何通信,另一个可能规定了计算机如何从NIC读取信息。
层是协议栈的一部分,它负责信息传递过程中某个特定的方面。一些协议只能完成一个功能,所以协议栈中一层与OSI模型中的一层并不一定是一一对应的。“隧道”技术解决的是使用一种协议的数据穿越另一种协议的网络的问题。
早期的网络体系结构是由厂商各自直接开发的,他们互不兼容,只能应用于相应厂家的用户。为解决这一问题,早20世纪70年代就着手研究一种开放系统体系结构,使设计的计算机网络设备能够互通。为此,国际标准化组织(ISO)首先开发出开放系统互连(open system interconnection, OSI)参考模型,后来又开发了有关的标准协议。这种模型提供了一种描述整个通信系统的框架,方便了标准的开发,在20多年的网络设计中发挥了重要作用。
OSI参考模型将整个通信过程分解成各层提供的功能,在每层中,一台设备的进程只能与另一台设备的对等进程进行会话,如图7-14所示。

图7-14对等实体通话过程
在OSI术语中,第n层的进程称做第n层实体。第n层实体间通过交换协议数据单元进行通信。每个(protocol data unit, PDU)包括一个头部,头部中含有协议控制信息。通常用户信息为服务数据单元(service data unit, SDU)格式。第n层实体的行为由一组规则或约定进行管理,通常将这些规则与约定称作第n层协议。
对等进程间的通信是虚拟的,并不存在实际的直接通信链路。为了进行通信,第n+1层实体需利用第n层提供的服务,第n+1层PDU传输的完成,是通过称为第n层服务访问点(service access point, SAP)的软件端口将信息块从第n+1层交换到第n层而实现的,如图7-15所示。该信息块由控制信息和第n层SDU组成,它就是第n+1层PDU本身。

图7-15实体间的信息传递过程
原则上讲,n层协议不解释或利用在SDU中所包含的信息。n层SDU即为n+1层PDU,封装在n层PDU内。这一封装过程减少了邻近层间对服务的依赖关系,也就是说,在n+1层的由n层提供服务的用户只关心正确执行为传送其PDU所需的服务,而不必关心n+1层以下各层的实现细节。
n层提供的服务一般包括接收来自n+1层的信息块与传送信息块到它的对等进程,而对等进程再将信息块送到它的n+1层用户。n层提供的服务可以是面向连接的或无连接的,其中面向连接的服务包含3个步骤:
(1)在两个n层SAP间建立连接。该建立过程包括协商连接参数和初始化“状态信息”,如序号、流量控制变量与存储位置等;
(2)利用n层协议实际传送n-SDU;
(3)断开连接,释放用于该连接的各种资源。
在无连接服务中,不存在连接建立,每个SDU在SAP间直接传送。在这种情况下,从n+1层到n层控制信息必须包含为传送该SDU所需的所有地址信息。实体间交换的信息块长度可从几字节到几兆字节或是连续的字节流。很多传输系统对可传送的信息块最大长度有一定限制,如在以太网中,其最大长度为1500字节。因此,当要传送的字节数超过给定层允许的最大信息长度时,必须将其分割成若干适当长度的信息块。如图7-16所示。

图7-16 信息块的分段与重组以及组块和分块
另一方面,也可能出现n层SDU太短,不能有效利用n-1层服务的情况,这时就可应用组块(blocking)与分块或解块,利用n层实体将几个n层SDU组块成一个n层PDU。在另一侧的n层实体把接收的PDU分块成各个SDU。


