📜  滑动窗口协议 |第 2 组(接收方)

📅  最后修改于: 2022-05-13 01:57:03.179000             🧑  作者: Mango

滑动窗口协议 |第 2 组(接收方)

请将此作为先决条件文章:滑动窗口协议(发送方)|设置 1

滑动窗口协议实际上是一个理论概念,其中我们只讨论了发送方窗口大小(1+2a)应该是多少,以提高停止和等待arq的效率。现在我们将讨论实际的实现,在这些实现中我们需要注意接收器窗口的大小。实际上,它以两种协议实现,即:

  1. 返回 N (GBN)
  2. 选择性重复 (SR)

在本文中,我们将根据三个主要特征向您解释第一个协议是 GBN,下一部分我们将讨论 SR 以及这两种协议的比较

返回 N (GBN) 协议

GBN的三个主要特点是:

  1. 发件人窗口大小 (WS)
    它本身就是 N。如果我们说协议是GB10,那么Ws = 10。为了实现流水线,N应该总是大于1。对于 N = 1,它简化为停止和等待协议。
    Efficiency Of GBN = N/(1+2a)
    where a = Tp/Tt

    如果 B 是信道的带宽,那么

    Effective Bandwidth or Throughput
     = Efficiency * Bandwidth
     = (N/(1+2a)) * B
  2. 接收器窗口大小 (WR)
    WR is always 1 in GBN.

    现在,GBN 中究竟发生了什么,我们将借助示例进行解释。考虑下面给出的图表。我们的发送者窗口大小为 4。假设我们有很多序列号只是为了解释。现在发送方已经发送了数据包 0、1、2 和 3。在确认数据包 0 和 1 之后,接收方现在正在等待数据包 2,并且发送方窗口也滑动以进一步传输数据包 4 和 5。现在假设数据包 2 是在网络中丢失,接收方将丢弃发送方在数据包 2 之后发送的所有数据包,因为它期望序列号为 2。在发送方发送的每个数据包中,都有一个超时计时器,该超时计时器将对数据包编号 2 到期。现在从最后发送的第 5 个数据包开始,发送方将返回当前窗口中的第 2 号数据包,并将所有数据包发送到第 5 号数据包。这就是为什么它被称为返回 N。返回意味着发送方必须从当前窗口返回 N 个位置在未确认窗口中最后传输的数据包,而不是从数据包丢失的点开始。

  3. 致谢
    有两种确认,即:
    • Cumulative Ack :一个确认用于许多数据包。主要优点是流量少。一个缺点是可靠性较低,好像一个确认是丢失,这意味着所有发送的数据包都丢失了。
    • 独立确认:如果每个数据包都将独立获得确认。这里的可靠性很高,但缺点是流量也很高,因为对于每个数据包,我们都接收到独立的 ack。

    GBN 使用累积确认。在接收方,每当接收方接收到任何固定的数据包时,它都会启动一个确认计时器,当它到期时,它将发送一个累积确认,用于在该计时器间隔内接收到的数据包数量。如果接收方收到了 N 个数据包,则确认号将为 N+1。重要的一点是确认计时器不会在第一个计时器到期后启动,而是在接收器收到数据包后启动。
    发送方的超时定时器应该大于确认定时器

窗口大小和序列号之间的关系
我们已经知道,在任何滑动窗口协议中,所需的序列号应该始终等于窗口的大小。

Minimum sequence numbers required in GBN = N + 1
Bits Required in GBN = ceil(log2 (N + 1))

The extra 1 is required in order to 
avoid the problem of duplicate packets
as described below.

示例:考虑 GB4 的示例。

  • 发送方窗口大小为 4,因此我们需要至少 4 个序列号来标记窗口中的每个数据包。
  • 现在假设接收方已收到所有数据包(发送方发送的 0、1、2 和 3),因此现在再次等待数据包编号 0(我们不能在这里使用 4,因为我们只有 4 个序列号可用,因为 N = 4) .
  • 现在假设上述 4 个数据包的累积确认在网络中丢失。
  • 在发送方,数据包 0 将超时,因此所有 4 个数据包将再次传输。
  • 现在的问题是接收器正在等待应该从 0 开始的新数据包集,但现在它将接收先前接受的数据包的重复副本。
  • 为了避免这种情况,我们需要一个额外的序列号。
  • 现在接收器可以轻松拒绝所有从 0 开始的重复数据包,因为现在它将等待数据包编号 4(我们现在添加了一个额外的序列号)。

这在下面的插图的帮助下进行了解释。

尝试使用序列号 4。

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

现在很清楚为什么我们在 GBN 协议中需要额外的 1 位。

在下一篇文章中,我们将解释两种协议之间的选择性重复和比较。