流量控制是一种协调发送站与接收站工作步调的技术,其目的是避免发送速度过快,使得接收站来不及处理而丢失数据。通常,接收站维持一定大小的接收缓冲区,当接收到的数据进入缓冲区后,接收器要进行简单的处理,然后才能清除缓冲区,再开始接收下一批数据包。如果发送站发送过快,缓冲区就会溢出,从而引起数据的丢失。流控机制可以避免这种情况的发生,当前采用的流控协议主要有停等协议及滑动窗口协议。
 
1、停等协议
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 
发送方每发送一帧后就要停下来等待接收方的确认返回,仅当接收方确认正确接收后再继续发送下一帧.由于停等协议规定只有一帧完全发送成功才能发送新的帧,因而只用一位二进制数(01)来编号就能够区分了。其工作流程如图1.

  
图1  停等协议工作流程

 

由图1可见,发送方要停下来等待返回确认Ack后再继续发送,从而造成信道资源的浪费。假设在半双工的点对点链路上,设信道容量是B b/s,帧长度为L bits,信号在信道中的往返传播延迟时间是2TR, 并假定返回的确认帧Ack很短,不占用信道时间,则在一个周期中实际用于发送的时间L/B, 而空等待的时间的是2 TR。因此,信道的实际有效利用率即停等协议的效率为:

=L/B/[L/B+2TR]=L/L+2TR B

这对传播延迟时间有特别要求的高速信道特别不利。 此外,由于信道差错收不到确认帧Ack而造成超时重传,以及有效传送的数据必须加上额外的开销(包括用于校验的冗余位)来构成帧发送,也都会造成信道有效利用率损失。

 
2、滑动窗口协议

 
滑动窗口协议的主要思想是允许连续多个帧而无需等待应答,见图2。假设源站和目标站通过全双工链路连接,目 标站能容纳5个帧的缓冲区(接收窗口大小W=5),这样通信的源站就可以连续发送5个帧而不必等待应答信号(发送窗口大小W=5)。为了使目标站能够知道哪些帧已经被成功地接收到,每个帧都给予了一个顺序编号。如果帧编号字段为K位,则帧以2为模连续编号,目标帧发出一个应答信号ACKi,并把窗口滑动到iWi+1的位置,表明i之前的所有帧都已正确接收,期望接收后续的W个帧,从而随着数据传送过程的进展窗口向前滑动。
        图2 滑动窗口协议工作演示

 
 假设源站和目标站通过全双工链路上,设滑动窗口大小为W,信道容量是B b/s,每帧长度为L bits,信号在信道中的往返传播延迟时间是2TR 通过对上面协议的分析,,滑动窗口协议效率为:
=W×(L/B/((L/B+2TR=W×L/L+2 TR B)

 在上面分析中,假定发送应答 Ack 信号的时间可忽略,而实际应答信号是用专门的控制帧传输的,是需要一定的时间来发送和处理,但可以采用所谓的“捎带应答”来解决这一应答时延,即把应答信号放在源站向目标站方向发送的数据帧中,如查信号被捎带送回源站,则应答信号的传送时间可计入反向发送数据帧的时间中。