gpt4 book ai didi

networking - 为什么窗口大小小于或等于 SR 协议(protocol)中序列号的一半?

转载 作者:行者123 更新时间:2023-12-03 11:50:09 25 4
gpt4 key购买 nike

在选择性重复协议(protocol)中,窗口大小必须小于或等于 SR 协议(protocol)的序列号空间大小的一半。为什么会这样,又如何?

最佳答案

因为接收方将无法区分旧数据包或新数据包。接收器根据序列号识别数据包,并且每个连接都有有限数量的唯一编号。你不能有一个无限的缓冲区。

让我们看一个明显的失败场景:

窗口大小大于序号空间。假设我们有序列号 0、1、2。我们的窗口大小是 4。这意味着窗口有两次出现 0。

0,1,2,0 <- 模换行。当我们得到一个 seq 为 0 的包时。是第一个包还是第四个包?没有线索。现在,只要窗口大小大于序列号空间的一半,就会出现这个问题。为什么?因为接收者总是有可能正在查看一个序列号,该序列号可能包含在来自发送者的新或旧数据包中。它总是发生吗?不,但是当它发生时,会发生以下情况:

情况1:

正确接收数据包 0、1、2 后的接收窗口。
0,1,2,[3,0,1],2
但是如果发送的 ACK 丢失了怎么办?好吧,发件人将重新发送0,1,2。但是 0,1 是旧的还是新的?收信人说不出来。

案例二:

接收端相同的窗口。接收到三个数据包。

0,1,2,[3,0,1],2

现在,接收者正确地接收到除了一个以外的所有确认。让我们选择第二个(1)。现在,它将重新发送 1。但接收方正在查看 1!那么这是预期的新版本(不)还是旧版本?

因此,为了确保窗口永远不会期望可能被潜在未完成数据包使用的序列号(来自正常传输或丢失 ack 的重新传输),我们必须减小窗口大小或增加序列号。

看看当我们将序列号空间增加到 6 时会发生什么。

0,1,2,3,4,5。

无论我们如何定位窗口,它都不会面临接收具有旧序列号的数据包的风险。

0,1,2,[3,4,5]0,1...

当窗口结束时,我们确信我们已经按顺序收到了以前的。

关于networking - 为什么窗口大小小于或等于 SR 协议(protocol)中序列号的一半?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3999065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com