Go-back-N滑动窗口协议详解与优缺点

需积分: 50 64 下载量 10 浏览量 更新于2024-08-14 收藏 1.1MB PPT 举报
"出错全部重发Go-back-N滑动窗口动态示意图" 在计算机网络中,滑动窗口协议是一种有效的流量控制和错误控制机制,主要用于确保数据在发送方和接收方之间的正确传输。出错全部重发,也称为Go-back-N策略,是滑动窗口协议的一种实现方式。在Go-back-N协议中,发送方可以连续发送多个帧,而不仅仅是单个帧,从而提高了信道的利用率。然而,当发送方收到接收方对于某帧的否认帧(即NACK)时,它必须从被否认帧及其后的所有帧开始全部重新发送,即使有些帧可能已经被正确接收,这降低了发送效率。 Go-back-N协议的发送窗口大小WT受到帧序号n位的影响,通常有WT ≤ 2^n - 1的限制。在误码率较低的通信环境中,Go-back-N相比于停等协议能提供更高的传输效率,因为停等协议每发送一个帧都需要等待确认,而Go-back-N可以连续发送多个帧。但在误码率较高的情况下,Go-back-N的效率可能不如停等协议,因为它可能导致更多的无效重传。 滑动窗口协议的核心在于窗口的概念,它允许发送方在等待确认之前发送一定数量的帧,而接收方通过ACK或NAK来确认或否定接收到的帧。这种协议提供了动态调整数据传输速率的能力,以适应接收方的接收能力和网络状况。例如,在流量控制中,如果接收方发现自己的接收缓冲区接近满载,它可以发送一个较小的ACK,暗示发送方减慢发送速率;反之,如果接收缓冲区有足够空间,它可以发送一个较大的ACK,鼓励发送方增加发送速率。 流量控制的目标是防止发送方的数据速率超过接收方的处理速率,从而避免数据丢失或溢出。停等协议是最简单的流量控制策略,每个帧发送后都需要等待确认,这样虽然简单,但信道利用率低。相比之下,滑动窗口协议通过允许多个帧的并行传输,可以显著提高信道利用率,但也需要更复杂的机制来处理帧的排序和重复帧的问题。 在Go-back-N协议中,每个帧都有一个唯一的编号,用于接收方确认帧的正确顺序。如果接收方检测到帧错误,它会发送一个否认帧(NAK),指示发送方从被错误帧的位置开始重新发送。同时,为了防止因丢失确认帧而导致不必要的重传,发送方通常会设置超时重传机制。如果在一定时间内没有收到确认,发送方将重发最后发送的帧。 总结起来,Go-back-N协议是滑动窗口协议的一个实例,它提高了网络的吞吐量,但可能会因为重传已经正确接收的帧而导致效率降低。流量控制和错误控制是网络通信中的关键要素,通过适当的协议设计,可以平衡发送速率和接收能力,确保数据的可靠传输。
613 浏览量
(1)初始化。开网络层允许;ack_expected = 0(此时处于发送窗口的下沿);next_frame_to_send = 0,frame_expected = 0(初始化正在发送的帧和期待的帧序号);nbuffered = 0(进行发送窗口大小初始化);(2)等待事件发生(网络层准备好,帧到达,收到坏帧,超时)。(3)如果事件为网络层准备好,则执行以下步骤。从网络层接收一个分组,放入相应的缓冲区;发送窗口大小加1;使用缓冲区中的数据分组、next_frame_to_send和frame_expected构造帧,继续发送;next_frame_to_send加1;跳转(7);(4)如果事件为帧到达,则从物理层接收一个帧,则执行以下步骤。首先检查帧的seq域,若正是期待接收的帧(seq = frame_expected),将帧中携带的分组交给网络层,frame_expected加1;然后检查帧的ack域,若ack落于发送窗口内,表明该序号及其之前所有序号的帧均已正确收到,因此终止这些帧的计时器,修改发送窗口大小及发送窗口下沿值将这些帧去掉,继续执行步骤(7);(5)如果事件是收到坏帧,继续执行步骤(7)。(6)如果事件是超时,即:next_frame_to_send = ack_expected,从发生超时的帧开始重发发送窗口内的所有帧,然后继续执行步骤(7)。(7)若发送窗口大小小于所允许的最大值(MAX-SEQ),则可继续向网络层发送,否则则暂停继续向网络层发送,同时返回互步骤(2)等待。