我自己写了一个简单的TCP服务器和客户端。在localhost上运行它们之后,我总能通过Wireshark捕获“Dup ACK”。
2147是Dup ACK。服务器端口是12093。
有谁能告诉我为什么这个Dup Ack会发生?
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
答案 0 :(得分:0)
重复的ACK是完全正常的行为,因为接收器处理更多数据并更新其窗口大小。基本上接收器对同行说:“嘿,我知道你没有给我发新的东西,但是当你这么做的时候我现在有更多的空间,所以请随意发送给我408288字节。”