了解滑动窗口协议中的确认机制

网络工程 tcp 传输协议
2022-02-21 02:57:32

我遇到了以下问题:

节点 A 通过路由器 R 向 B 发送数据包。链路 AR 是瞬时的,但 R->B 链路每秒仅传输 1 个数据包,一次一个。假设 A 使用窗口大小 =4 的滑动窗口协议向 B 发送,对于时间 t=2 ,说明哪些数据包到达 R 以及在 R 的队列中存在哪些数据包?

给出的解决方案是:

由于链接 A 到 B 是瞬时的,在时间 0,所有帧 0,1,2,3,4... 将在路由器 R。窗口大小为 4。因此,我们将其表示为 [0,1, 2,3],4,…。链路 R 到 B 每秒只能传输 1 个数据包。因此,在时间 1,R 将向 B 发送帧 0。在时间 1,B 将向 R 发送数据包 0 的 ACK。因此,R 处的窗口将滑动,使其变为:0,[1,2,3,4],...

疑问

Go Back N 使用累积确认,那么如果在时间 0 和 1,路由器将数据包 0 和 1 发送到接收方怎么办?时间 2 的路由器窗口仍将包含帧 [0,1,2,3],因为帧 0 尚未确认。这是错的吗?或者我错了,滑动窗口协议意味着选择性重复,它为每一帧发送 ACK?

1个回答

解决方案是错误的(至少您提供给我们的细节是错误的)。

在 t=0 时,数据包 0-3(一个发送窗口值)已发送到 R。队列为 0-3。

在 t=1 时,数据包 0 已被发送 R->B。R 的队列是 1-3。

在 t=2 假设全双工链路 RB 时,B 已确认数据包 0 (B->R->A),A 已立即将滑动窗口推进到数据包 4,立即将其发送到 R 并在那里排队。同时,R 已经发送了数据包 1,队列为 2-4。