网络协议工程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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的下一站的地址。