这三种协议都是自动重传请求(ARQ)协议的变体,用于可靠的数据传输。它们的主要区别在于发送方如何处理确认和重传。信道利用率是衡量协议效率的关键指标,表示有效数据传输时间占总时间的比例。
1. 停等协议 (Stop-and-Wait)
- 工作原理: 发送方发送一个数据帧后,必须等待接收方发送确认帧 (ACK) 才能发送下一个数据帧。如果在超时时间内未收到 ACK,则重传该数据帧。
- 信道利用率: 停等协议的信道利用率非常低。假设:
- 数据帧传输时间为 T t T_t Tt
- 确认帧传输时间为 T a T_a Ta (通常 T a < < T t T_a << T_t Ta<<Tt)
- 传播延迟为 T p T_p Tp (发送方到接收方的传播延迟等于接收方到发送方的传播延迟)
- 信道利用率为 U U U
则一个数据帧传输的总时间为 T = T t + 2 T p + T a T = T_t + 2T_p + T_a T=Tt+2Tp+Ta。 有效传输时间为 T t T_t Tt。因此,信道利用率为:
U = T t T t + 2 T p + T a U = \frac{T_t}{T_t + 2T_p + T_a} U=Tt+2Tp+TaTt
由于通常 T a < < T t T_a << T_t Ta<<Tt,可以简化为:
U ≈ T t T t + 2 T p U \approx \frac{T_t}{T_t + 2T_p} U≈Tt+2TpTt
当传播延迟 T p T_p Tp 远大于数据帧传输时间 T t T_t Tt 时,信道利用率会非常低,趋近于0。 这说明停等协议在长距离、高延迟链路上效率极低。
2. 连续ARQ (Continuous ARQ)
- 工作原理: 发送方可以连续发送多个数据帧,无需等待每个帧的确认。接收方对收到的帧进行确认,发送方根据收到的确认帧判断哪些帧需要重传。 有多种连续ARQ协议,例如滑动窗口协议。
- 信道利用率: 连续ARQ的信道利用率比停等协议高得多。 其精确计算比较复杂,取决于具体的协议实现、错误率和窗口大小等因素。 但是,连续ARQ通过流水线传输数据,可以有效利用信道带宽,大大提高信道利用率。 在理想情况下(无错误、无超时),信道利用率可以接近1。
3. GBN 协议 (Go-Back-N)
-
工作原理: GBN 协议是连续ARQ的一种,使用滑动窗口机制。发送方可以发送多个数据帧(窗口大小为N),但接收方只按顺序接收数据帧。如果接收方发现有帧丢失或出错,则会丢弃该帧及其后续的所有帧,并只发送对收到的最后一个正确帧的确认。发送方收到该确认后,从丢失帧的位置开始重传。
-
信道利用率与发送窗口大小的关系: GBN 协议的信道利用率与发送窗口大小 N N N 呈正相关。 更大的窗口大小意味着发送方可以连续发送更多的数据帧,从而提高信道利用率。 但是,窗口大小也不是越大越好。过大的窗口会导致缓冲区溢出和重传开销的增加,反而降低效率。
信道利用率的精确计算较为复杂,需要考虑:
- 数据帧传输时间 T t T_t Tt
- 确认帧传输时间 T a T_a Ta
- 传播延迟 T p T_p Tp
- 错误率 p p p (数据帧出错的概率)
- 窗口大小 N N N
一个简化的模型假设: T a < < T t T_a << T_t Ta<<Tt, 且忽略确认帧的传输时间。 如果错误率较低,信道利用率大致可以表示为:
U ≈ N × T t N × T t + 2 T p U \approx \frac{N \times T_t}{N \times T_t + 2T_p} U≈N×Tt+2TpN×Tt
这个公式只考虑了理想情况,忽略了错误重传和超时带来的额外开销。 实际情况中,信道利用率会随着错误率的增加而下降。
当考虑错误重传和超时带来的额外开销时,GBN协议的信道利用率分析会变得更加复杂,不再能用简单的公式精确表达。我们需要考虑以下因素:
- 错误率 §: 数据帧出错的概率。错误率越高,重传次数越多,信道利用率越低。
- 超时时间 (T_o): 如果在超时时间内未收到ACK,则重传。超时时间设置过短会导致不必要的重传,设置过长则会增加等待时间。
- 窗口大小 (N): 发送窗口的大小,影响同时传输的数据帧数量。
- 数据帧传输时间 (T_t): 单个数据帧的传输时间。
- 确认帧传输时间 (T_a): 单个确认帧的传输时间 (通常远小于 T_t,可以近似忽略)。
- 传播延迟 (T_p): 单向传播延迟。
精确计算信道利用率需要用到马尔科夫链或仿真等方法。但是,我们可以通过一个近似的分析方法来了解这些因素的影响:
假设:
- 平均每个数据帧的重传次数为 R (与错误率 p 和协议有关)
- 忽略确认帧的传输时间 (T_a ≈ 0)
那么,发送一个窗口的数据帧所需要的时间约为:
T w i n d o w = N × T t + ( N × R ) × ( T t + 2 T p + T o ) + 2 T p T_{window} = N \times T_t + (N \times R) \times (T_t + 2T_p + T_o) + 2T_p Twindow=N×Tt+(N×R)×(Tt+2Tp+To)+2Tp
其中:
- N × T t N \times T_t N×Tt 是发送N个数据帧的时间。
- ( N × R ) × ( T t + 2 T p + T o ) (N \times R) \times (T_t + 2T_p + T_o) (N×R)×(Tt+2Tp+To) 是由于错误重传而花费的时间。 每个数据帧平均重传 R 次,每次重传需要传输时间 ( T t T_t Tt) 加上往返传播延迟 ( 2 T p 2T_p 2Tp) 加上超时时间 ( T o T_o To)。
- 2 T p 2T_p 2Tp 是最后一次确认的往返传播延迟。
在这种情况下,一个窗口内的有效传输时间仍然是 N × T t N \times T_t N×Tt。 因此,信道利用率可以近似表示为:
U ≈ N × T t N × T t + ( N × R ) × ( T t + 2 T p + T o ) + 2 T p U \approx \frac{N \times T_t}{N \times T_t + (N \times R) \times (T_t + 2T_p + T_o) + 2T_p} U≈N×Tt+(N×R)×(Tt+2Tp+To)+2TpN×Tt
这个公式比之前的简化公式更准确地反映了错误重传和超时对信道利用率的影响。 可以看到,错误率 (决定R) 和超时时间 (To) 对信道利用率有显著的影响。 当错误率较高或超时时间设置不合理时,信道利用率会急剧下降。
需要强调的是,这个公式仍然是一个近似值。 实际的信道利用率还受到许多其他因素的影响,例如:
- 信道状态的动态变化: 信道错误率可能不是恒定的。
- 拥塞控制: 在网络拥塞的情况下,传输时间和超时时间都会受到影响。
- 协议的具体实现细节: 不同的GBN实现可能会有不同的重传策略和超时机制。
对于更精确的分析,需要采用更高级的建模和仿真技术。 但是,上述近似分析可以帮助我们理解关键参数对GBN协议信道利用率的影响。