TCP RENO MSS、发送方 Window、阈值和接收方 window

TCP RENO MSS, Sender Window, Threshold and Receiver window

我很难理解当发送方从接收方收到三次重复的 ACK 时会发生什么,以及发生超时时会发生什么。

目前我的理解是:

根据三次重复 ACK:(1) 将阈值设置为发送方 window 大小的一半,(2) 将接收方 window 大小设置为 1 MSS

我不太确定除了重传之外发生超时时会发生什么。

我正在处理下面列出的这个问题。如果有人可以帮助我确认发生三重 ACK 和超时发生时会发生什么,将不胜感激。

Consider a TCP connection has an initial Threshold of 24 kB and a Maximum Segment Size (MSS) of 4 kB. The receiver advertised window is 40 kB. Suppose all transmission attempts are successful except for a triple duplicate ACK received (for the same previously transmitted data) on the number 7 transmission and a timeout at transmission number 12. The first transmission attempt is number 0. Find the size of the sender’s congestion window for the first 18 transmission attempts (number 0-17) assuming the sender’s TCP implementation is using the slow-start congestion control scheme

Trans. #    Sender wnd. (kb)    Threshold (kb)  Receiver wnd. (kb)
0   4   24  40
1   8   24  40
2   16  24  40
3   24  24  40
4   28  24  40
5   32  24  40
6   4   16  40
7   8   16  40
8   12  16  40
9   16  16  40
10  20  16  40
11  24  16  40
12          40
13          40
14          40
15          40
16          40
17          40

对于未来的读者,TCP Reno 的正确答案如下:

在三次重复 ACK 后,阈值设置为发送方 window 大小的一半,发送方 window 大小减半。

超时后,阈值设置为发送方 window 大小的一半,发送方 window 重置为 1 MSS 并使用慢启动。

对于 TCP Tahoe:

在三次重复 ACK 后,阈值发送到发送方 window 大小的一半,发送方 window 大小重置为 1 MSS。然后使用慢启动,直到发送方达到阈值。

暂停时,Tahoe 和 Reno 执行相同的功能。

正确答案:(TCP Reno)

Trans. #    Sender wnd. (kb)    Threshold (kb)  Receiver wnd. (kb)
0   4   24  40
1   8   24  40
2   16  24  40
3   24  24  40
4   28  24  40
5   32  24  40
6   36  24  40
7   40  24  40 <- tripple duplicate ack after attempting to transmit 
8   20  20  40 
9   24  20  40
10  28  20  40
11  32  20  40
12  36  20  40 <- timeout after attempting to transmit 
13   4  18  40
14   8  18  40
15  16  18  40
16  18  18  40
17  22  18  40