【发布时间】:2018-01-03 21:50:33
【问题描述】:
在 TCP 中,可以通过两种方式检测丢包:超时和三个 ACK(针对一个特定的数据包,即丢失的数据包)。
假设尚未达到超时,如果在慢启动阶段发生丢包,拥塞窗口会发生什么?收到第一个重复的 ACK 时,拥塞窗口还会增加 1 吗?
例如,在发送者看来,最初的窗口大小是 3: [1 2 3]
发送和接收数据包 1 及其 ACK(数据包 1 的 ACK)。因此窗口大小增加1,即。到 4: [2 3 4 5]
数据包 2 已发送,但已丢失。那么当数据包3发送成功时,一个重复的ACK(仍然是数据包1)到达,此时的窗口大小是多少?
1) 如果由于接收到第一个重复的 ACK,窗口大小可能会增加(请注意,发送方现在不知道丢包,因为只有一个重复的 ACK 并且尚未达到超时),它应该是: [2 3 4 5 6]
2) 否则,可能因为已经收到包 1 的 ACK(因为包 1 发送成功),窗口大小可能保持 4: [2 3 4 5]
哪一个适用于 TCP?
非常感谢!
【问题讨论】:
-
@EJP 对不起,我的意思是 ACK 等待新的传入数据包 2。我已经编辑了这种歧义的描述。
-
@EJP 并且,ACK 号是接收到的最高序列号 +1。这就是我想说的。
-
它正在确认接收到的所有数据,不包括序列号。将其描述为未收到数据包的 ACK 是没有意义的,“等待数据包 2 的 ACK”也没有意义。只需消除混乱。
-
@EJP 是的,你是对的 - 对于第一个版本。因此我对其进行了编辑。它确认数据包 1 之前的所有数据包(包括),或者只是数据包 1(因为没有前一个数据包),或者等待数据包 2。
-
如果您只是停止说“等待数据包 2”,那么您的问题和 cmets 就有意义了。试着改掉这个习惯。
标签: tcp