如何确定一个数据包是 TCP Keep-Alive?

6

Wireshark和网络监视器提供了相应的过滤器,但我想知道如何通过查看报文头或有效载荷来推断该报文是否为TCP Keep-Alive或Keep-Alive Ack。

2个回答

10

TCP的保活包是一种带有确认号(ACK)的数据包,其中序列号设置为连接当前序列号减1。


1
准确地说,这里是TCP保持活动规范:https://www.rfc-editor.org/rfc/rfc1122#page-101 - Michał Jaroń
准确地说,这里是TCP保活规范:https://www.rfc-editor.org/rfc/rfc1122#page-101 - Michał Jaroń

1
这里是Wireshark关于keep-alive ACK的说明:

当以下所有条件都为真时设置:

  • 段大小为零。
  • 窗口大小为非零且未更改。
  • 当前序列号与下一个预期序列号相同。
  • 当前确认号与最后一次接收到的确认号相同。
  • 反向方向上最近看到的数据包是keepalive。
  • 该数据包不是SYN、FIN或RST。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接