tcpdump 如何监控 TCP 断开连接并记录时间戳?

tcpdump 如何监控 TCP 断开连接并记录时间戳?

我有两台服务器,每台服务器都运行一个 Java 应用程序,该应用程序在不同的端口上创建两个单独的 TCP 连接,一个来自 HostA -> HostB,另一个来自 HostB -> HostA。

我被告知 TCP 连接已丢失并重新建立,但客户端无法提供发生这种情况的时间和日期。

我可以在 HostA 上设置 tcpdump 来监控特定端口,纯粹是为了在断开连接时通知我吗?对于 HostB 连接也是一样吗?我不关心有效载荷数据等。

我查看了手册页,在网上找到了一些 HowTo,在谷歌上搜索过等等。我没有看到我正在寻找的示例。如果您能提供帮助,我将不胜感激。

答案1

TCP 中的“断开连接”实际上涉及每个主机都说“我没有更多内容要发送”,而另一个主机确认这一点;当两个主机都这样做时,连接就会关闭。参见RFC 793 中的关闭连接

正如 Nath 所说,也可以通过“重置”指示强制关闭连接。

因此,您要查找的是指示“我没什么可说的”的 FIN 和指示“我没有这样的连接”的 RST。您需要使用过滤器运行 tcpdump,该过滤器查找特定端口的流量或来自特定端口的流量,并且设置了 FIN 标志。使用当前版本的 libpcap/WinPcap,您可以使用以下过滤器

tcp port XXX and (tcp[tcpflags] & (tcp-fin|tcp-rst)) != 0

其中 XXX 为端口号。请注意,对于干净关闭,这将捕获多个数据包,因为每一方都必须发送“我没有更多数据要发送”指示。

不幸的是,这不适用于 IPv6,只适用于 IPv4。

相关内容