Windows TCP keepalive发送1字节消息,没有PSH

时间:2012-10-15 19:05:49

标签: windows networking tcp winsock

我从我认为是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堆栈的正常行为吗?

1 个答案:

答案 0 :(得分:0)

这就是保持活跃的细分市场。它不是一个单独的协议,它只是一个带有已经被确认的序列号的冗余发送,以响应当前序列号来激发ACK。也没有要求它设置PSH标志。