关于 GBN 协议,单个计时器如何跟踪发送的未确认数据包的时间?

问题描述

在 James Kurose 所著的网络著作“计算机网络:自上而下的方法”中,如下所述: "...sender in ... 只使用一个定时器,可以将其视为最旧的传输但尚未确认的数据包的定时器。如果收到 ACK 但仍有额外的传输但尚未确认的数据包,计时器重新启动。”

  1. 如果在序列号为 0、1、2、3 的 GB3 协议中。假设发送方发送了数据包 0、1、2,并且根据最早传输但尚未确认的数据包 no-0 启动计时器。
  2. 接收方按顺序接收所有数据包。
  3. 接收器(窗口大小为 1)发送 ack 0,1,2 一个 时间。
  4. 假设发送方收到 ack 0。
  5. 现在根据以上摘录的书,计时器必须是 根据数据包 no-1 重新启动,该数据包已传输但未传输 尚未承认。

我的问题:发送方如何重新启动定时器,当它在过去已经发送过时,对于包 1 保持查看 GBN 协议中的单个定时器?

解决方法

Go-Back-N 中的计时器不是特定于特定数据包的。它测量两个事件之间的时间,即传输的最旧数据包 (base) 和收到的 ack。如果在超时时间内没有收到 ack,则重新传输来自 base 的所有数据包。对于收到的每个 ack,定时器都会重新启动。让我们假设计时器是 3 sec,并且收到了 packet-0 的 ack。它重新启动计时器,即设置 3 秒计时器并等待接收确认(累积确认或个人确认)。如果发送方在规定的时间内没有收到ack,则重新启动定时器并重新发送数据包。