2

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

4

1 回答 1

1

这就是保持活动的部分。它不是一个单独的协议,它只是一个带有已经确认的序列号的冗余发送,以触发一个带有当前序列号的 ACK 作为回复。也不需要设置 PSH 标志。

于 2012-10-15T20:26:23.747 回答