我有一个我认为是 Windows 客户端的流量捕获。我注意到它有时会发送被 Wireshark 识别为“TCP Keep-Alive”的内容,但它不仅设置 ACK 并且不发送任何数据,而是将 SEQ 备份一个八位字节并重新发送该数据。
(C = 客户端,S = 服务器,相对 seq / ack)
(connected, data transferred back and forth)
1 C: PSH Seq=21, Ack=41, Len=12
2 S: PSH ACK Seq=41, Ack=33, Len=12
3 C: ACK Seq=33, Ack=53
4 S: PSH ACK Seq=53, Ack=33, Len=1
5 C: ACK Seq=33, Ack=54
... 3 seconds pass ...
6 C: ACK Seq=32, Ack=54, Len=1 (resends the last octet from #1)
7 S: ACK Seq=54, Ack=33
...
这是发送 TCP keepalive 时 Windows 堆栈的正常行为吗?