为了提高传输效率(充满管道),当发送端等待确认时,必须传输多个分组。换言之,当发送端等待确认时,我们需要让不止一个分组处于未完成状态,以此确保信道忙碌。回退 N 帧的关键是我们在接收到确认之前,可以发送多个分组,但是接收端只能缓冲一个分组。我们保存被发送分组的副本直到确认到达。
1.发送窗口
在每个窗口位置,某些序号定义了已经被发送的分组;其他序号定义了可以被发送的分组。窗口最大为2^m – 1 。窗口本身是一种抽象;三个变量定义了它任何时候的大小和位置。我们将这些变量称为 Sf(发送窗口,第一个未完成分组)、 Sn(发送窗口,下一个待发送分组)以及 Ssize (发送窗口,大小)。当 ackNo 大于等于 Sf 且小于 Sn(模运算)的无错 ACK 到达时,发送窗口可以滑动一个或多个槽。