【协议工程学习笔记】1:协议模型,协议通信环境,协议提供的服务

这节学习书上2.1~2.2.2节。协议设计是协议工程所有流程中的第一步,用于产生协议文本初稿,也就是用自然语言描述所设计的协议是什么内容。

1 协议模型

复杂的协议一般用分层的方式设计,如下图是OSI体系结构中的n层协议模型,每个实体(entity) 表示能发送和接收信息的硬件或软件进程,下层为上层提供服务,同层对等实体之间实现该层协议信息交换的数据单元是协议数据单元(Protocol Data Unit)

PDU在物理层就是比特(bit),在数据链路层就是帧(frame)或信元(cell),在网际层就是包(packet),在传输层叫段(segment),在应用层叫数据(data)。书上还认为传输层以上都可以叫报文(message)

PDU一般都由用户数据协议控制信息(Protocol Control Information) 两部分组成。

同一系统中相邻两层的实体交互信息的地方是服务访问点(Service Access Point),交换的数据单元是服务数据单元(Service Data Unit),每一层都可以使用四种服务原语:

服务原语 意义
Request 一个实体希望得到某种服务
Indication 把关于某一事件的信息告诉某一实体
Response 一个实体愿意响应某一事件
Confirm 把一个实体的服务请求加以确认并告诉它

SDU就是PDU中的用户数据,有时是多个SDU 拼装成一个PDU,有时是一个SDU 分段成多个PDU。

在设计协议时,要像OSI模型这样将协议和服务分开来:协议是水平的,控制对等实体之间的通信规则;服务是垂直的,由下层向上层通过层间接口提供。一个层内的功能并不是都能称为“服务”,只有能够被高层看见的功能才能叫“服务”,上层与下层通过服务原语命令的交互获取服务。

2 协议的通信环境

2.1 通信环境的内容

两个n层的协议实体,通过n-1层服务访问点,所形成的逻辑通路(注意只是逻辑上才有的通路)称为n-1层通道。n层协议的通信环境包括:

  • 用户要求
  • n-1层通道的性质
  • n层协议运行在什么操作系统上
  • 硬件环境

协议设计时这些内容都必须明确指定,不能含糊。

2.2 通道的类型

  • 空通道(empty channels):报文的发送事件和延时时间为0
  • 非缓冲通道(non-buffered channels):通道中同一时刻最多只有一个正在传送的报文
  • 缓冲通道(buffered channels):允许同一时刻通道中有多个报文停留

2.3 通道的形成方式

假设A和B是n层的两个实体,则A和B之间的n-1层通道的形成方式有:

  • A和B建立并独占一条连接,这种情况下n-1层必须能提供连接服务
  • A和B与其它协议实体共享一条连接
  • A和B使用n-1层提供的无连接服务通信
  • 如果n-1层是物理层,A和B可以独占或者共享一条物理信道

2.4 通道的队列性质

注意物理层信道是没有队列性质的,如果n-1层是物理层,那么它形成的通道也没有队列的性质,这时候报文在通道中的时延是固定的,不会丢失并且有序。

对于物理层以上的其它n-1层通道都具有队列性质,报文从n层协议实体源端发出之后要在n层以下各层多次存储转发,每个存储转发的地方都是一个队列,队列越长报文的延时就越大,如果队列长度达到最大允许长度,后边进来的报文还会丢失。

2.5 回程时延(Round Trip Time)

RTT是指n层的源端实体发出一个报文开始,直到应答信息达到该实体所花费的时间。

2.6 通道的差错特性

通道的差错特性包括:

  • 报文出错率
  • 报文丢失率
  • 报文重复率
  • 报文失序率

这和通道形成方式有关,如n-1层通道是用有连接服务,或者用物理信道形成的,那么报文不会时序,否则就有可能失序。

2.7 通道的可靠性

和通道故障,如断连、复位等有关。

2.8 报文的最大长度

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

2.9 通道的工作方式

可以分为单工、半双工、全双工(相当于两个分离的单工通道)。或者分为同步和异步。

2.10 通道的带宽(bandwidth)

通道带宽指能传送的数字信号的速率,可以用数据率或者比特率表示。可以进一步分为前向带宽、后向带宽、峰值带宽等。

3 协议提供的服务

从通信角度看各层提供的服务可以分为面向连接的(connection-oriented)无连接的(connectionless) 服务。

3.1 面向连接的服务

即在数据交换前必须建立连接,交换完成后再断开连接。在传送数据时按序传送,就好像服务通信中一直占用一条物理电路一样,所以也叫虚电路服务

这种方式适合一定期间内要向同一目的地发送很多报文的情况。如果两个用户频繁通信,则可以建立永久虚电路,以省去每次连接和释放的代价。

3.2 无连接的服务

无连接服务下层资源不会预定保留(如下层的通道队列),会在数据传输时动态分配。而且不需要检查通信双方都是活跃的,发就是发,收就是收,所以无法防止报文丢失,只适合传送少量报文。

具体有三种类型:

  • 数据报(datagram):不需要接收任何响应,所以不可靠,也叫尽最大努力交付(best effort delivery)
  • 证实交付(confirmed delivery):对n层源端实体发送的报文,在其n-1层要向上返回一个证实,表示报文我已经发出去了,但是还是不能保证接收端确实接收到了。这种方式也叫可靠的数据报
  • 请求回答(request-reply):接收端用户每收到一个报文,就向发送端回一个应答报文。事务一问一答、数据库查询都适合用这种服务。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章