网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

返回 N 型滑动窗口协议

更新时间:2026年03月27日   作者:spoto   标签(Tag):

Go-Back-N(GBN)是一种基于滑动窗口的自动重传请求协议。在这种协议中,发送方可以连续发送多个帧(最多不超过固定的窗口大小),而无需为每个帧等待确认信号。

  • 如果某个帧丢失或损坏了,接收方就会丢弃该帧。
  • 所有后续的、顺序错乱的帧也会被丢弃。
  • 发送方会重新发送那些有错误的帧,以及当前窗口内所有后续的帧。
  • 例如:如果发送了第1到第5帧,而第3帧丢失了,那么发送方需要重新发送第3、第4和第5帧。

Go-Back-N(GBN)的特点

发送者窗口大小 (W)s)

在Go-Back-N协议中,发送方窗口的大小(Ws)等于N。
例如,在GBN-10协议中,发送方可以在不等待确认的情况下,连续传输10个帧。

为了使流水线功能能够正常工作,N的值必须大于1。
当 N = 1 时,Go-Back-N 的行为类似于 Stop-and-Wait ARQ 协议。

当忽略处理延迟、排队延迟以及ACK传输延迟时,GBN的效率可以表示为:N / (1 + 2a)。

在何处,

  • a=Tp/ Tt​​
  • Tp = 传播延迟
  • Tt = 数据帧的传输延迟
  • N = 发送方窗口大小

在存在非零延迟的情况下仍能保持高效运行

当处理延迟、排队延迟以及确认传输延迟都不是零时,效率的计算方式如下:

效率 = 生产数量 × (有效时间)/(总时间)

其中,有用的时间等于T。t

总时间 = Tt+ 2 * Tp+ Pr + Pq + Tt(确认)

在何处,

  • Tt 发送方端的传输延迟
  • Tp= 传播延迟
  • Pr = 处理延迟
  • Pq = 排队延迟
  • Tt(ack) = 确认信息的传输延迟时间

因此,总体效率的表达式可以表示为:

效率 = Tt + 2Tp + Pr + Pq + Tt (ack) × NTt

如果 B 表示信道带宽,那么……

吞吐量 = 效率 × B

在理想情况下(没有额外的延迟):

吞吐量 = (N / (1 + 2a)) * B

2. 接收窗口大小(W)R)

  • 接收窗口的大小始终为1。
  • 接收器只接受下一个预期的帧数据。
  • 那些顺序混乱的帧会被丢弃。
  • 接收器不会缓冲那些顺序混乱的帧。

3. 致谢

确认消息是由接收方发送的,用于确认数据帧的接收是否成功。这些消息在确保通信可靠性方面起着至关重要的作用。如果发送方在规定的超时时间内没有收到确认消息,那么它会认为该数据帧已经丢失或损坏,从而重新发送该数据帧。

ACK的类型

累积确认数

  • 一个ACK信号表明,所有直到某个特定序列号的帧都已被接收。
  • 用于Go-Back-N(GBN)算法中。
  • 减少了确认流量的需求,从而提高了效率。
  • 如果丢失了ACK信号,那么多个帧可能被视为未被确认,从而导致不必要的重传。

独立确认机制

  • 每一帧都分别被确认/认可。
  • 用于选择性重传ARQ中。
  • 通过避免对已正确接收的帧进行重传输,从而提升了系统的可靠性。
  • 由于需要处理的ACK数量增加,因此控制开销也会随之上升。

GB-N协议的运作方式

发送方

  • 发送方会维护一个大小为N的滑动窗口(例如,在GBN-4协议中,窗口的大小为4)。
  • 它可以在不等待单独的ACK信号的情况下,传输多达N个帧。
  • 每个传输的帧都关联有一个计时器。
  • 当接收到ACK信号时,发送方会将窗口向前移动,从而可以继续传输新的帧。
  • 如果某个帧发生超时,发送方需要重新发送该帧以及当前窗口中所有的后续帧。

接收端

  • 接收器保持1的窗口大小(WR = 1)。
  • 它只接受按顺序排列的下一个预期帧。
  • 如果接收到的帧符合预期,那么接收方会发送一个ACK信号,并更新所期望的序列号。
  • 如果接收到的是乱序的帧,那么接收方会丢弃该帧,并重新发送最后一个正确接收到的帧的ACK信号。

窗口大小与序列编号之间的关系

在诸如Go-Back-N和Selective Repeat这样的滑动窗口协议中,窗口大小与序列号空间之间存在着紧密的关联,这种关联有助于确保数据的正确传输。

  • 窗口大小决定了发送方在不等待确认的情况下可以传输多少帧,从而实现流水线式传输。
  • 为了保持帧的顺序,以及帮助接收方识别丢失或重复的帧,会对各个帧进行编号。

为了避免因序列号重复而导致的歧义,发送方和接收方的窗口总大小必须不超过可用的序列号空间。如果窗口大小过大,那么同一个序列号可能会在之前的帧被确认之前又被重复使用。这样一来,接收方就很难区分哪些帧是新的,哪些是重复的帧了。

窗口大小与序列号之间的关系可以用以下公式来表示:

Ws + WR <= ASN

在何处,

Ws= 发送方窗口大小

WR =接收窗口大小

ASN = 可用序列号

在Go-Back-N协议中,接收窗口的大小始终保持不变。1:

Ws +1 <= ASN

如果发送方的窗口大小为 N,那么:

所需的最小序列数量 = N + 1

因此,在GBN中,用于序列编号的位数就是:

在GBN中所需的位数 = ⌈ log2(N + 1)⌉

额外的+1值可以确保重复帧能够被正确识别,从而避免因序列号过早重复使用而导致的混淆现象。

示例/例子GB-N协议

以GB4为例进行说明。

  • 发送窗口的大小为4,因此,我们需要至少4个序列号来标记窗口内的每个数据包。
  • 现在,假设接收方已经收到了发送方发送的所有数据包(即0、1、2和3号数据包)。因此,接收方现在再次等待第0号数据包的传输。在这里,我们不能使用4号数据包,因为我们只有4个可用的序列号,而N=4。
  • 现在,假设上述4个数据包的累计确认信息在网络中丢失了。
  • 在发送端,由于数据包0存在超时情况,因此所有4个数据包都需要重新传输。
  • 现在的问题是,接收方正在等待新的数据包。原本应该从0开始传输的,但现在却收到了之前已经接受过的数据包的重复副本。
  • 为了避免这种情况,我们需要再增加一个序列号。
  • 现在,接收器可以很容易地拒绝所有从0开始的重复数据包。因为此时,接收器正在等待第4个数据包的到来(我们现在增加了一个额外的序列号)。

这一点可以通过下面的插图来加以说明。请尝试使用第4个序列号来进行操作。

现在,我们尝试使用一个额外的序列号。

现在,我们明白了为什么在GBN协议中需要再增加1位数据了。

Go-Back-N协议易于实现,能够确保数据的可靠传输。由于支持流水线式传输方式,其吞吐量远高于Stop-and-Wait协议,尤其是在错误率较低且延迟较高的网络中。

在容易出现错误的网络中,GBN方法效率低下。因为一旦有一帧丢失,就需要重新传输多帧数据。这导致了不必要的重复传输,从而降低了带宽的利用率。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

上一篇: 滑动窗口协议

下一篇: 数字签名与证书

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料