tcpdump如何监视TCP断开并logging时间戳?

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

我被告知TCP连接丢失并重新build立,但客户端无法为我提供发生的时间和date。

我可以在HostA上设置tcpdump来监视特定的端口,纯粹告诉我什么时候断开连接? HostB连接也一样? 我不在乎有效载荷数据等

我看了手册页,发现了一些HowTo的在线,谷歌search等。我没有看到我正在寻找的例子。 谢谢,如果你能帮助。

TCP中的“断开连接”实际上涉及到每个主机都说“我没有更多的东西要发送”,而另一个主机也承认这一点。 当两台主机都完成时,连接就closures了。 请参阅在RFC 793中closures连接 。

正如Nath指出的那样,连接也可以通过“复位”指示强制closures。

所以你要找的是FIN,表示“我没什么好说的”,RST表示“我没有这样的连接”。 你需要运行一个filter来查找特定端口的stream量,并设置FIN标志来运行tcpdump。 使用libpcap / WinPcap的当前版本,您可以使用如下的filter

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

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

不幸的是,这只会与IPv4协同工作。