购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 协议设计的基本内容

2.2.1 协议的通信环境

n层中任何两个协议实体通过(n - 1)SAP所形成的数据逻辑通路称为(n - 1)层通道(见图2-1)。用户要求、(n - 1)层通道的性质及n层协议运行时的操作系统和硬件环境构成了n层协议的通信环境。通信环境是协议设计要优先考虑的问题。只有充分了解和定义了协议运行的通信环境才能准确地设计出协议的其他元素来。也只有这样,设计出来的协议才能在功能上和性能上满足用户的需求。

根据通道容纳报文的数量,可以将通道分成3类:空通道(empty channels),非缓冲通道(non-buffered channels)和缓冲通道(buffered channels)。空通道是指报文的发送时间和延时时间为零的通道,即在任何时刻通道中不容纳报文,报文一旦从输入端进入就立即在输出端出现。非缓冲通道是指:在任何时刻,最多只有一个正在传送的报文通道。缓冲通道是指允许有多个报文停留的通道。

(n-1)层通道的以下性质对n层协议的构成有非常重要的影响。

(1) 通道的形成方式

n层对等协议实体A和B间的通道主要有以下几种形成方式:

A和B建立并独占一条连接,此时(n - 1)层应提供有连接服务。

A和B与其他协议实体一起共享一条连接。

A和B利用(n - 1)层提供的无连接服务进行通信。

如果(n - 1)层为物理层,A和B可独占一条物理信道,或共享一条物理信道。

(2) 通道的队列性质

除物理层外,一般可将(n - 1)层通道看做队列通道,即一个数据报文从n层源端协议实体发出之后要在n层以下各层多次存储转发,在每个存储转发处就存在一个队列。平均队列长度及最大队列允许长度是队列的主要性质。队列越长,那么数据报文在通道中的延时就越大;如果队列长度达到最大允许长度,那么后续的数据报文将丢失。通道的队列性质对n层协议的功能和性质有着重要的影响。对于物理信道而言,其通道有时不具有队列性质,此时报文在通道中的时延是固定的,不会丢失且有序。

(3) 回程时延 (RTT,Round Trip Time)

RTT是指报文从n层源端实体发出到该报文的应答信息达到该实体的时间,它包括目标实体收到报文之后,对报文进行处理然后发出认可信息的时间。RTT是协议的最重要参数之一。

(4) 通道的差错特性

通道的差错特性主要包括:报文出错率、报文丢失率、报文重复率、报文失序率。通道的差错特性与它的形成方式有关。如果通道是利用(n - 1)层有连接服务形成的,或者是利用物理信道,那么传递的报文不会失序。而如果通道是利用(n - 1)层的无连接服务形成的,则报文就有可能失序。

(5) 通道的可靠性

通道的可靠性是指通道故障,如断连、复位等。

(6) 报文的最大长度

该参数主要影响n层协议的报文分段、拼接等功能。

(7) 通道的工作方式

通道的工作方式主要包括:单工、半双工、全双工,或分为同步与异步两种方式。全双工通道可视为两个分离的单工通道。

(8) 通道的带宽 (bandwidth)

带宽本来是指某个信号具有的频带宽度。对于数字通道而言,带宽是指在通道上能够传送的数字信号的速率,即数据率或比特率。通道的带宽可进一步分为前向带宽、后向带宽、峰值带宽等。

经验表明,大多数的协议失败是由于对协议运行的环境做出了错误的假定。设计者必须确保直接定义这些环境假定,而不能隐含地指示它们。

2.2.2 协议提供的服务

从通信的角度看,各层所提供的服务可分为两大类,即面向连接的(connection-oriented)与无连接的(connectionless)。现分别介绍如下。

1. 面向连接服务

所谓连接,就是两个对等实体为进行数据通信而进行的一种结合。面向连接服务是指在数据交换之前,必须先建立连接。当数据交换结束后,则应终止这个连接。

面向连接服务具有连接建立、数据传输和连接释放三个阶段。在传送数据时是按序传送的。这一点和电路交换的许多特性很相似,因此面向连接服务在网络层中又称为虚电路服务。“虚”表示:虽然在两个服务用户的通信过程中并没有自始至终占用一条端到端的完整物理电路(注意:采用分组交换时,链路是逐段被占用的),但却好像一直占用了一条这样的电路。面向连接服务比较适合于在一定期间内要向同一目的地发送许多报文的情况。若发送很短的零星报文,面向连接服务的开销就显得过大了。

若两个用户需要经常进行频繁的通信,则可建立永久虚电路。这样可省去每次通信时连接建立和连接释放这两个过程。这一点和电话网中的专用电路通信是十分相似的。

2. 无连接服务

在无连接服务的情况下,两个实体之间的通信不需要先建立好一个连接,因此其下层的有关资源不需要事先进行预定保留。这些资源将在数据传输时动态地进行分配。

无连接服务的另一特征就是它不需要通信的两个实体同时是活跃的(即处于激活态)。只有当发送端的实体正在进行发送时,它才必须是活跃的。这时接收端的实体并不一定是活跃的。只有当接收端的实体正在进行接收时,它才必须是活跃的。

无连接服务的优点是灵活方便和比较迅速。但无连接服务不能防止报文的丢失、重复或失序。无连接服务特别适合于传送少量零星的报文。

无连接服务有以下三种类型:

① 数据报(datagram)。它的特点是不需要接收端做任何响应,因而是一种不可靠的服务。数据报常被描述为“尽最大努力交付(best effort delivery)”。

② 证实交付(confirmed delivery)。它又称为可靠的数据报。这种服务对每一个报文产生一个证实给发方用户,不过这个证实不是来自接收端的用户而是来自提供服务的层。这种证实只能保证报文已经发给远端的目的站了,但并不能保证目的站用户已收到这个报文。

③ 请求回答(request-reply)。这种类型的数据报是收端用户每收到一个报文,就向发端用户发送一个应答报文。事务(即transaction,又可译为事务处理或交易)中的“一问一答”方式的短报文,以及数据库中的查询,都很适合使用这种类型的服务。

2.2.3 协议功能

(n)层协议为了向上一层提供服务,必须实现一定的功能。例如,运输层为了向上层提供可靠的面向连接的数据传输服务,一般需要实现下列功能:连接管理、差错控制、流量控制等。以下我们将给出一些基本的协议功能,主要分为两大类:连接管理和数据交换。然而为了设计或实现的目的,并不限制对所描述的功能进行组装或分解,以便获得更粗的或更细的结构。

1. 连接管理

对于提供面向连接的数据传输服务的协议,必须提供连接管理功能。协议实现的连接一般有两种类型:点对点连接和点对多点连接。很多协议都支持这两种连接,如ATM协议。与连接管理有关的主要功能包括:连接建立、连接释放、连接维护。

在连接建立期间,服务提供者和用户会就连接和数据流的服务质量(QoS,Quality of Service)进行协商。服务质量一般涉及连接上传输的数据的可靠性、安全性和其他性能方面的要求。如果它们不能找到可共同接受的QoS,则连接建立失败。

在连接建立和释放阶段,为了对延迟的(n)PDU所导致的错误的连接建立和释放进行保护,通常需要采取一些保护措施。例如,TCP协议和OSI的类4运输协议中采取的三次握手(three-way handshake)机制;Fletcher 和Watson在1978年提出的基于时钟的连接管理方法,它要求连接释放之后足够长的时间内应保持连接状态,以便检测所有可能的延迟的重复数据包。

主要有两种连接释放方式:突然释放和完善(graceful)释放。突然释放是指立即关闭连接,不考虑是否还有SDU正在传输当中,所有未完成传输或未发送的SDU将丢失。完善释放则不同,它要等到所有的SDU被成功地发送之后,才关闭连接。当然,“成功地发送了”的定义依赖于所选择的服务质量:如果选择了可靠服务,服务提供者试图正确地传递所有的SDU,必要时使用重传技术。然而对于一个不可靠的服务,服务提供者在所有的SDU离开本结点时就可认为已发送成功。

除了连接建立、维护和释放以外,某些协议还支持一些其他形式的连接管理功能,如:连接迁移、转发、合并、分离、连接复用和分用等。

2. 数据交换

在数据交换阶段,实现数据的发送和接收。协议支持的用户数据类型如表2-2所示。

表2-2 协议支持的用户数据、类型

根据图2-1所示的n层协议模型,(n)层协议接收(n)层用户递交的SDU,将之转换成PDU,从(n - 1)层通道发送出去;反之,它接收(n - 1)层通道的PDU,抽出其中的SDU,将其转交给n层用户。

为实现数据传输功能,一般需要实现下列子功能:

(1)对齐。对齐功能是指把一个(n)PDU中的PCI字段(头部、尾部以及用来传输协议控制信息的有效载荷字段)调整到本地机器存储器的边界,以避免访问的冲突。

(2)分段和合段。如果SDU长度大于(n - 1)层通道最大允许报文长度,(n)协议必须将(n)SDU分段(segmenting)放入多个(n)PDU中发送(每个PDU中的PCI信息不一样)。接收方要执行相反的过程,即合段(reassembling)。

(3)拼装和分离。如果SDU长度很小,为了提高(n - 1)层通道利用率,(n)协议需要将多个(n)SDU拼装(concatenation)成一个(n)PDU后发送。到了接收方,协议将(n)PDU分离出(seperation)多个(n) SDU来。也可将“拼装”称为“合块”。

(4)PDU的装配与拆装。在发送数据之前,(n)协议需要装配PDU,即按照给定格式附上协议控制信息PCI。对于接收到的PDU要进行拆装,拆出PCI。

(5)SDU的编码与解码。n层协议可能要对SDU进行编码、加密、压缩(发送方)或解密、复原(接收方)。

(6)加检验和。为了实现差错检测功能,(n)层协议加检验和功能接收(n)数据(全部或部分)作为输入,产生一个固定大小的检验和作为输出。检验和的算法通常有以下几类:奇偶校验、循环冗余校验(CRC)、散列函数(如MD5)、密码校验(如数据鉴别算法)。

(7)抖动补偿。抖动补偿功能使得协议能接受任何种类的通信量模式的SDU数据流作为输入,产生一个连续的SDU流作为输出。

(8)带外数据、紧急数据的发送和接收。

3. 差错控制

在网络上进行通信会造成PDU数据以一定的概率被损坏、丢失、重复和失序。协议的差错控制功能负责这些差错的检测及恢复,保证数据的可靠传输。差错控制功能由发送方和接收方共同实现。用来防止丢失、重复和失序的概念包括:序号、确认、计时器和重传。

不同协议实现的差错控制功能是不一样的。提供可靠的数据传输服务的协议,如TCP,差错控制功能比较强;而提供不可靠的数据传输服务的协议实现的差错控制功能则要弱一些,如UDP协议。n层协议的差错控制机制与它的服务提供者提供的(n - 1)通道的性质有很大关系,(n - 1)通道提供的数据通道的可靠性越高,则n层协议需实现的差错控制机制则越少。我们将在2.4节详细讨论这些差错控制技术。

4. 流量控制

流量控制是指“收端控制发端的发送数据速率以使收端来得及接收,并且使网络不致过载”,这既是流量控制的目标,也是流量控制的直接原因。有很多流量控制机制,比较著名的流量控制机制有滑动窗口流量控制机制。我们将在2.5节详细介绍各种流量控制技术。

5. 拥塞控制

在计算机网络中的链路容量、交换结点中的缓冲区和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫做拥塞(congestion)。

拥塞控制的主要功能是:①防止网络因过载而引起吞吐量下降和迟延增加;②避免死锁;③在互相竞争的各用户之间公平地分配资源。

6. 其他协议功能

n层协议可能还包括许多其他功能,例如:

① 无活动控制。无活动控制是指在通信空闲期间,周期性地检查所有通信参与者的活跃度。它一般通过轮询来实现。只要轮询包能够到达,发送方和接收方都能肯定对方仍是活跃的。

② 通信量控制。n层通信量控制功能监视(n)SDU数据流,检测该SDU的通信量与所给定的性能QoS的详细说明是否一致。若检测到不一致性的SDU,该功能将丢弃与之相关的PDU,或产生一个指示违反了QoS的信号。

③ 通信量填充。n层协议通信量填充功能主要产生虚假的(n)SDU,以防止通信量分析。它包含两方面的含义:为产生一个恒定速率的SDU,加入假的SDU;填充SDU到一个恒定的长度。要求填充的通信量既不被识别,又能从实际的SDU内容和SDU通信量中区分出来。

④ 通信量整形。n层协议的通信量整形功能将突发性的(n)SDU(作为该功能的输入)平滑为连续的(n)SDU流。

⑤ 路由选择。路由选择是指根据PDU中的目的地址,为该PDU选择适当的路由,即找到该PDU的下一站的地址。

2.2.4 协议元素

在第1章已介绍过,从语言的角度来看,协议包括3个要素:语法、语义和同步。本节我们从协议的组成来看,一个协议一般由以下6种元素构成[6]:①服务原语和服务原语时序;②PDU及其交换时序;③协议状态;④协议事件;⑤协议变量;⑥协议操作和谓词。这6种元素基本涵盖了协议的外部特征、内部机制和运行环境。协议的主体是它的状态事件转换机制。由于不同协议在实现功能和协议复杂性上的差异,并不是所有协议都必须包含以上6种元素。例如,有些协议由于协议机制很简单(如理想条件下的数据链路层协议),可能不包括协议变量,没有专门的PDU定义;有些协议由于不直接向用户提供服务(如流量控制),就没有包含服务原语。但是,多个协议功能组织成一个完整的协议之后,这6种元素一般是必须的。

需要说明的是,不同文献中对于协议的组成元素的种类和名称可能会有所不同。例如,文献[8]将协议的组成分为5个部分:通信环境、提供的服务、词汇表、消息的编码格式及时序、规则和过程。这与我们提到的6种元素在本质上并没有区别。

1. 服务原语和服务原语时序

n层协议所提供的服务是n层协议外部行为的体现。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,需要使用下面一层所提供的服务。n层协议所提供的服务种类很多,如连接管理、发送和接收数据包服务等。一般用服务规范(service specification)来定义和描述n层协议向外部所提供的服务。服务规范定义了服务用户和服务提供者之间的交互作用的规则,描述了协议层的输入、输出行为及这些行为之间的时序关系,具体内容包括:服务原语和服务原语时序。

n层协议的服务原语和原语参数详细而准确地描述了n层协议和它的服务用户之间的接口。从使用服务原语的角度来考虑,可将服务分为两类,即需要证实的服务和不需要证实的服务。根据所提供的服务的不同,为完成一项功能所需的服务原语的个数和服务原语的时序是不一样的。图2-2所示为需要证实的服务和不需要证实的服务的服务原语时序。图中的小圆圈中的数字表示原语发送的顺序。这里假定系统A的(n)服务用户A要和系统B中的(n)服务用户B进行通信,并以需要证实的服务为例。于是用户A就先发出Request原语,以调用服务提供者的某个进程。这就引起系统A的(n)实体向某对等实体发出一个PDU。当系统B的(n)实体收到这个PDU后,就向其服务用户发出Indication原语。这通常对应于:

① 表示系统B的(n)服务用户应当调用一个适当的协议过程,或者

② 表示服务提供者已经调用了一个必要的过程。

接着,服务用户B发出Response原语,用以完成刚才Indication原语所调用的过程。这时,协议又产生一个PDU,通过网络到达系统A。

最后,系统A的(n)实体发出Confirm原语,表示完成了先前由服务用户A发出的Request原语所调用的过程。

一个完整的服务原语通常包括原语名字、原语类型和原语参数三大部分。原语名字和原语类型一般都用英文写出,两者之间用圆点或空格隔开;原语参数则可用中文表示,用括号与前面两部分隔开。例如,一个运输连接请求原语的写法是:

T-CONNECT.request(被叫地址,主叫地址,……)

这里T-CONNECT是原语名字,requeset是原语类型,中间用圆点隔开,而被叫地址、主叫地址等是原语参数。

图2-2 服务原语时序

图2-3 OSI类4运输协议在成功建立连接时交换PDU的时序关系

2. PDU及其交换时序

我们在第1章中已讨论了协议的语法、语义和同步的含义。n层协议的PDU从语法上和语义上详细而准确地定义了n层协议实体之间交换的信息的格式,包括:协议使用的词汇表(定义n层协议中所使用的消息及其意义,例如,“ack”可定义成接收方正确接收到数据包之后的应答,“nak”则可定义为接收到错误的数据包时的应答);PDU编码格式(协议的语法定义,它包括数据长度、控制消息长度及每个字段的定义等)。此外,协议还必须描述PDU交换的时序(即协议同步)。例如,OSI类4运输协议的连接建立过程(三次握手)需要用到三个PDU:CR(连接请求),CC(连接证实),AK(确认),它们之间的时序关系如图2-3所示。

在定义PDU的格式时,有几点要特别注意:

(1)PCI中的序号域。序号主要用于检测丢失的或重复的PDU。序号域的长度是协议设计中一个必须考虑的因素,它与协议的流量控制方法、数据域的长度和信道特点(特别是差错率)有关。我们将在2.4节中详细讨论这方面的问题。

(2)PDU中的数据域的长度。每个PDU所携带的数据的多少取决于多种因素,如信道质量的好坏,底层协议支持的最大传输长度等。如果PDU中传送的数据越长,则出错的可能性越大,从而导致数据重传,降低了协议的效率;如果PDU中的数据越短,虽然出错的可能性降低了,但PDU中的冗余信息与有效负载之比又太大,同样降低了协议的效率。现实中的协议设计大多采用理论计算与实验相结合的方式来确定数据域的长度。

(3)PDU长度的调整。在设计PDU的PCI中的各个协议字段时,通常要考虑字节定界(alignment)的问题。非定界的内存访问有时会导致内存访问错误。因此,很多协议设计时在PCI中添加一些冗余的字节,以实现4字节或8字节定界(大多数操作系统中是以4字节定界的)。另外,当PDU长度不是4字节的整数倍时,也常采用添加一些冗余字节的方式来方便系统的处理。

协议数据单元及其交换时序在 协议规范 (protocol specification)中定义。协议规范必须描述层内每个协议实体的所有操作,包括:对用户命令的响应,对其他协议实体发来的协议数据单元的响应,通过服务访问点与服务用户的交互,以及实体内部产生的事件(如超时)。因此,典型情况下,协议规范由以下两部分构成:一组实体间交换的报文的类型和格式的描述(静态部分);实体间消息的交换,以及内部事件处理的规则(动态部分),包括所有可能出现的状态、正常事件、在指定状态下对出现的事件的处理动作。

3. 协议状态

协议状态分为局部状态和全局状态。局部状态为单个协议实体在某时刻的执行状况,而全局状态为参与执行某种协议功能的所有协议实体(包括(n - 1)层通道)状态之总和。n层协议必须定义所有的协议状态。

4. 协议事件

根据事件的用途来分,可将协议事件分为输入事件和输出事件。n层协议共有三类输入事件和两类输出事件。三类输入事件是:收到一个PDU;收到n层服务用户的一条服务原语;内部事件(如计时器超时)。两类输出事件是指:发出一个PDU;向n层服务用户发出一条服务原语。n层协议必须定义每个协议事件。

协议事件具有以下一些性质:成对性、原子性、时序性。

事件的成对性是指一个事件的发生总是伴随着另一个事件的发生。根据事件的作用范围来分,可将事件分为通信事件和内部事件(如计时器超时)。通信事件是指收发服务原语或收发PDU,它是成对出现的,具有成对性。而内部事件不是成对出现的。例如,n层用户发出服务原语(输出事件)和n层协议接收到该服务原语(输入事件)成对出现在(n)ASP的两侧,(n)ASP为事件发生点。又如,n层协议实体A发出一个PDU和B收到该PDU是一对通信事件,它们出现在两个(n - 1)ASP上,即出现在两个不同的事件发生点上。

可以进一步将通信事件分为两类:同步事件和异步事件。同步事件是指输入事件和输出事件发生在同一个事件点上,同时出现,因而也称为协同事件。异步事件是指输入事件和输出事件发生在两个事件点上,不同时出现,输出事件滞后于输入事件。

事件原子性是指事件要么不发生,一旦发生就一定完成。具有原子性的事件称为原子事件(atomic events)。例如,当n层协议实体向(n-1)通道输出一个报文时,输出一旦启动,即便是发送失败(通常是指通道丢失了该报文),事件“输出报文”也被认为已发生。

事件时序性(temporal ordering)是指发生的事件在时间上是有先后顺序的。我们在前面已讲过服务原语的交换时序和协议数据单元的交换时序,由于通信事件是由服务原语和PDU的交换引起的,因此它们也决定了通信事件的时序性。事件的时序性决定了状态的时序性。

5. 协议变量

协议变量是指存储协议运行的历史数据、运行参数的变量,以及协议机制本身所设置的变量。常见的协议变量有:发送序号变量,接收序号变量,重发时间间隔变量等。

6. 协议操作和谓词

每种协议功能都是通过一组协议过程的执行来实现的。协议过程是指协议在一定条件下,在输入事件的驱动下,执行一系列的操作(或动作),这些操作包括:产生输出事件;清除和设置计时器;修改协议变量;改变协议状态。

如前所述,协议操作只有在一定条件下才能够被执行。这些约束条件涉及协议参数、协议变量、协议运行环境等。我们将描述这些约束条件的语句称为谓词(predicate)。描述一个协议过程必须说明该过程所包含的操作,以及执行操作的谓词。

如果一个协议过程包含多个协议操作,并且过程一旦启动之后,所有包括的操作一次性完成,不经历中间协议状态,不被其他过程打断,则这种过程称为原子过程(atomic procedures)。过程的这种性质称为过程的原子性。一般来说,在协议运行时,可将它从一个状态到另一个状态的转换处理成原子过程。

协议的各元素是有机联系的,它们之间的关系可表达为:在什么协议状态下,在什么输入事件驱动下,调用什么协议过程;协议过程在什么条件下(谓词)采取什么协议动作(操作),输出什么事件或修改协议状态和变量。在上述元素中,通常用状态变迁表或状态转换图来描述协议的状态、事件、操作和谓词。

2.2.5 协议组织

协议组织是指将相关协议功能和协议元素组成一个完整协议的过程。在协议组织实施的过程中,可能还要回过头来修改已设计好的协议功能和协议元素。这个过程涉及以下一些技术和方法。

(1) 协议层次化

如果n层协议的功能和结构仍然很复杂,可将n层协议的众多功能进一步分成多个子层。例如,局域网的数据链路层分为逻辑链路控制(LLC)子层和媒体访问控制(MAC)子层。如前所述,子层的划分可使复杂协议的结构变得清晰,有利于协议的设计、验证、实现和测试。但是,子层的划分可能降低协议性能。

(2) 协议阶段化

可将n层协议分成多个运行阶段(phase),每个阶段只涉及一部分协议功能。例如,OSI体系结构中的运输层协议的正常运行分为连接建立、数据传输、连接撤销三个阶段。

(3) 协议分类

协议的复杂性是由于不同用户的需求不一样及协议的运行环境不同而造成的。因此,可以将协议分成不同类别或不同级别,每类协议只适用于特定用户和特定环境,那么复杂协议就会变得简单。例如,OSI体系结构中的运输层协议被分成5类:TP0~TP4(我们将在2.4节对此做进一步的说明)。

(4) 协议运行方式

协议运行方式有三种[6],它们是:

① 协议交替(protocol alternative):指n层内的多个协议,或一个协议的多个类别,或一个协议的多个协议功能,交替活跃运行的方式。

② 协议并发(protocol concurrency):指n层内的多个协议,或一个协议的多个类别,或一个协议的多个协议功能,同时活跃并发运行的方式。

③ 协议并行(protocol parallizm):指n层内的多个协议,或一个协议的多个类别,或一个协议的多个协议功能,同时活跃,同时运行的方式。

如果多个协议或一个协议的多个类别交替活跃,交替执行,那么n层协议可在不同时间内适用不同用户和不同通道的协议环境。如果它们同时活跃,并发运行,那么n层协议可在同一时间内适用多种协议环境。如果它们还能并行运行,协议的性能会更好。这里,请读者注意“并发”和“并行”之间的区别:并行是不同执行序列的相互独立性,强调它们各自独立地执行而并发的进程之间,可能存在某种约束(同步、互斥、通信),例如一个协议或进程的执行需要另一个协议或进程的执行作为先决条件。在这种约束下,多个协议或进程共同推进 。由于协议本身的并发特性,一个协议内的多个协议功能往往是并发的,如果使它们交替化,则会降低协议性能。例如,协议的顺序控制,超时重发,端到端流量控制等是并发执行的。

协议的运行方式不只是协议实现问题,它对协议功能和协议机制有直接影响。多个协议或一个协议的多个类别的交替、并发和并行的实现,需要增加协议选择和协商的功能。由于一个协议的各个功能是与数据相关的,协议设计时必须考虑相关数据对协议功能并行化的影响(协议功能的竞争、碰撞、协议变量的访问冲突等)。

2.2.6 协议文本

协议文本是协议设计阶段的最终结果。大多数情况下,协议文本是用自然语言描述的,以便于人们阅读理解。例如,大多数OSI协议标准文本、TCP/IP体系中的协议文本都是用自然语言描述的。协议文本必须详细地表述用户要求、工作模式、协议功能、协议组织和协议的各种元素。

协议文本中最重要、最主要部分是对协议元素的描述。必须对每一项协议元素做出准确、清晰、无二义性的定义。此外,协议的各元素是有机联系的,协议文本应清晰地表达这些关系。

一个典型的ISO协议标准一般包含以下内容[11]:

关于层的目的和层提供的服务的描述。

层提供的服务的服务规范。

由底层协议提供的与协议正确、有效操作有关的服务的说明。

层的内部结构的描述,主要包括层内实体及实体间的关系。

层内实体操作的总的、非形式化的描述。

对等实体间的通信协议的描述。

附加信息的描述,如对性能改善的考虑,对协议实现方面的建议等。 yl8dafPiTU/Hnq8rG49Zt2MxV5VdTI/4UQPB4x//9BkYSPjHJxkVqPNERLoMAmWZ

点击中间区域
呼出菜单
上一章
目录
下一章
×