计算机网络(第2版)
上QQ阅读APP看书,第一时间看更新

1.7.6 实体、协议、服务和服务访问点

当研究开放系统中的信息交换时,往往使用实体(entity)这一较为抽象的名词表示任何可发送或接收信息的硬件或软件进程。在许多情况下,实体就是一个特定的软件模块。

协议是控制两个对等实体(或多个实体)进行通信的规则的集合。协议的语法方面的规则定义了所交换的信息的格式,而协议的语义方面的规则定义了发送方或接收方所要完成的操作,例如,在何种条件下数据必须重传或丢弃。

在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。一定要弄清楚,协议和服务在概念上是完全不一样的。

首先,协议的实现保证了能够向上一层提供服务。使用本层服务的实体只能看见服务而无法看见下面的协议。下面的协议对上面的实体是透明的。其次,协议是“水平的”,即协议是控制对等实体之间通信的规则。但服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。另外,并非在一个层内完成的全部功能都称为服务。只有那些能够被高一层实体“看得见”的功能才能称为“服务”。上层使用下层所提供的服务,必须通过与下层交换一些命令来实现,这些命令在OSI中称为服务原语。

在同一系统中相邻两层的实体进行交互(即交换信息)的地方,称为服务访问点(Service Access Point,SAP)。SAP是一个抽象的概念,它实际上就是一个逻辑接口,有点像邮政信箱(可以把邮件放入信箱和从信箱中取走邮件),但这种层间接口和两个设备之间的硬件接口(并行的或串行的)并不一样。OSI把层与层之间交换数据的单位称为服务数据单元(Service Data Unit,SDU),它与协议数据单元(Protocal Data Unit,PDU)不一样。例如,可以是多个SDU合成为一个PDU,也可以是一个SDU划分为几个PDU。

这样,在任何相邻两层之间的关系都可概括为图1-25所示的情形。这里要注意的是,第n层的两个“实体(n)”之间通过“协议(n)”进行通信,而第n+1层的两个“实体(n+1)”之间则通过另外的“协议(n+1)”进行通信(每一层都使用不同的协议)。第n层向上面的第n+1层所提供的服务实际上已包括了它向下各层所提供的服务。第n层的实体对第n+1层的实体就相当于一个服务提供者。在服务提供者的上一层的实体又称为“服务用户”,因为它使用下层服务提供者所提供的服务。计算机网络的协议还有一个很重要的特点,就是协议必须把所有不利的条件事先都估计到,而不能假定一切都是正常的和非常理想的。

图1-25 相邻两层的关系