Go Back N 发送方如何处理无序确认?

问题描述 投票:0回答:1

根据我的理解,在Go Back N中,序列号为i的确认表明直到i-1(包括i-1)的所有数据包都已被确认。

因此,如果发送方的窗口大小为 w,基数为 b,因此窗口为 [b, b+w-1],并且收到确认 n, n > b,则发送方可以将窗口向前滑动到 [n, n+w-1].

假设使用模运算,Go Back N 如何在面对无序确认时确保安全?

例如,假设序列号为 0、1、2、3,最大窗口大小为 3。假设由于动态路由,发送方按以下顺序接收确认

确认2
确认3
确认1

收到 ack 2 和 3 时,它将向前滑动窗口

| 0 1 2 | 0 1 2 3 0 1 2 3 0 1 2 3
0 1 | 2 3 0 | 2 3 0 1 2 3 0 1 2 3
0 1 2 | 0 1 2 3 0 1 | 3 0 1 2 3 0 1 2 3

收到ack 1(表示收到数据包0)后,发送方是否不会再次向前滑动窗口,以

0 1 2 3 0 | 1 2 3 | 1 2 3 0 1 2 3

因此发送者无法消除两者之间的歧义 ack 2、ack 3、ack 1(重新排序)和ack 1(丢弃)、ack 2、ack 3、ack 0(丢弃)、ack 1

tcp go-back-n
1个回答
0
投票

Go-Back-N (GBN) 是一种通过流水线提高吞吐量的“简单”方法。这种简单性基于一些重要的基本假设,如 Kurose 和 Ross 所著的《计算机网络 - 自上而下的方法》一书中所述:

底层网络可能会丢弃或损坏数据包
  • 接收方必须能够检测到损坏的数据包
  • 但是,网络可能不会对数据包重新排序! (网络“通道”具有电线的特性)
  • 由于 GBN 使用累积确认,否则会出现您上述问题中描述的歧义。

另一种方法选择性重复 (SR) 可以处理数据包重新排序,因为它单独处理所有数据包:

存储每个收到的数据包,并通过确认确认该数据包的正确性
  • SR 确保重复项被识别。为此,窗口大小必须小于或等于序列号范围的一半。
© www.soinside.com 2019 - 2024. All rights reserved.