意外的TCP Dup ACK

意外的TCP Dup ACK,tcp,Tcp,我自己编写了一个简单的TCP服务器和客户端。在本地主机上运行它们之后,我总是可以通过Wireshark捕获“Dup ACK” 2147是Dup ACK。服务器端口是12093 有人能告诉我为什么会发生这种重复吗 690 54.831381000 127.0.0.1 127.0.0.1 TCP 68 62301→12093 [SYN] Seq=0 Win=65535 Len=0 MSS=16344 WS=32 TSval=418815085 TSecr=0 SACK_PERM=1

我自己编写了一个简单的TCP服务器和客户端。在本地主机上运行它们之后,我总是可以通过Wireshark捕获“Dup ACK”

2147是Dup ACK。服务器端口是12093

有人能告诉我为什么会发生这种重复吗

690 54.831381000    127.0.0.1   127.0.0.1   TCP 68  62301→12093 [SYN] Seq=0 Win=65535 Len=0 MSS=16344 WS=32 TSval=418815085 TSecr=0 SACK_PERM=1
691 54.831549000    127.0.0.1   127.0.0.1   TCP 68  12093→62301 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=16344 WS=32 TSval=418815085 TSecr=418815085 SACK_PERM=1
692 54.831558000    127.0.0.1   127.0.0.1   TCP 56  62301→12093 [ACK] Seq=1 Ack=1 Win=408288 Len=0 TSval=418815085 TSecr=418815085
693 54.831564000    127.0.0.1   127.0.0.1   TCP 56  [TCP Window Update] 12093→62301 [ACK] Seq=1 Ack=1 Win=408288 Len=0 TSval=418815085 TSecr=418815085
694 54.831652000    127.0.0.1   127.0.0.1   TCP 112 62301→12093 [PSH, ACK] Seq=1 Ack=1 Win=408288 Len=56 TSval=418815085 TSecr=418815085
695 54.831663000    127.0.0.1   127.0.0.1   TCP 56  12093→62301 [ACK] Seq=1 Ack=57 Win=408224 Len=0 TSval=418815085 TSecr=418815085
2140    60.517240000    127.0.0.1   127.0.0.1   TCP 59  12093→62301 [PSH, ACK] Seq=1 Ack=57 Win=408224 Len=3 TSval=418820717 TSecr=418815085
2142    60.517260000    127.0.0.1   127.0.0.1   TCP 56  62301→12093 [ACK] Seq=57 Ack=4 Win=408288 Len=0 TSval=418820717 TSecr=418820717
2145    60.517377000    127.0.0.1   127.0.0.1   TCP 56  62301→12093 [FIN, ACK] Seq=57 Ack=4 Win=408288 Len=0 TSval=418820717 TSecr=418820717
"2146","60.517394000","127.0.0.1","127.0.0.1","TCP","56","12093→62301 [ACK] Seq=4 Ack=58 Win=408224 Len=0 TSval=418820717 TSecr=418820717"
2147    60.517401000    127.0.0.1   127.0.0.1   TCP 56  [TCP Dup ACK 2145#1] 62301→12093 [ACK] Seq=58 Ack=4 Win=408288 Len=0 TSval=418820717 TSecr=418820717
2152    60.517682000    127.0.0.1   127.0.0.1   TCP 56  12093→62301 [FIN, ACK] Seq=4 Ack=58 Win=408224 Len=0 TSval=418820717 TSecr=418820717
2153    60.517704000    127.0.0.1   127.0.0.1   TCP 56  62301→12093 [ACK] Seq=58 Ack=5 Win=408288 Len=0 TSval=418820717 TSecr=418820717

当接收器处理更多数据并更新其窗口大小时,重复确认是完全正常的行为。基本上,接收者对其对等者说:“嘿,我知道你没有给我发送任何新的内容,但是当你发送时,我现在有了更多的可用空间,所以请随时向我发送408288字节的内容。”

它正在将接收窗口大小从408224更新为408288。很抱歉,我没有收到它。据我所知,2145、2152和2153对于tcp四波已经足够了。那么为什么会出现2146和2147呢?我不知道你所说的“TCP四波”是什么意思,但正如我所说,复制的ACK正在更新接收窗口的大小。