我正在开发一个http服务器。现在我想做一些统计,具体来说,我想知道有多少 tcp 连接被客户端关闭,有多少被我的服务器关闭。
我在我的http服务器上关闭了Keep-alive功能,所以正常情况是我的服务器发送第一个FIN数据包,客户端发送第二个,这意味着我的服务器正常关闭了连接。如果它们的顺序相反,则表明关闭异常,我很在意。
问题来了,如何使用 tcpdump 区分第一个 FIN 数据包和第二个 FIN 数据包?由于它们都在 FIN 和 ACK 标志位中设置。
提前致谢,新年快乐!
我正在开发一个http服务器。现在我想做一些统计,具体来说,我想知道有多少 tcp 连接被客户端关闭,有多少被我的服务器关闭。
我在我的http服务器上关闭了Keep-alive功能,所以正常情况是我的服务器发送第一个FIN数据包,客户端发送第二个,这意味着我的服务器正常关闭了连接。如果它们的顺序相反,则表明关闭异常,我很在意。
问题来了,如何使用 tcpdump 区分第一个 FIN 数据包和第二个 FIN 数据包?由于它们都在 FIN 和 ACK 标志位中设置。
提前致谢,新年快乐!
我正在通过隧道连接ssh
到我的网络服务器,该服务器正在侦听 5000/tcp。我运行了一个tcpdump
会话,即使您忽略时间戳,仍然清楚谁从 TCP 源端口号发送了什么。
05:42:06.344592 IP localhost.5000 > localhost.37924: Flags [F.], seq 243,
ack 419, win 529, options [nop,nop,TS val 120830308 ecr 120830308], length 0
05:42:06.381872 IP localhost.37924 > localhost.5000: Flags [.], ack 244,
win 513, options [nop,nop,TS val 120830318 ecr 120830308], length 0
05:42:06.382504 IP localhost.37924 > localhost.5000: Flags [F.], seq 419,
ack 244, win 513, options [nop,nop,TS val 120830318 ecr 120830308], length 0
05:42:06.382535 IP localhost.5000 > localhost.37924: Flags [.], ack 420,
win 529, options [nop,nop,TS val 120830318 ecr 120830318], length 0
在05:42:06.344592
,我的网络服务器从客户端确认字节并设置FIN
标志。我知道它是网络服务器,因为源端口是 5000。在现实世界中,这更容易,仅您的源 IP 地址就可以泄露它。
在05:42:06.382504
客户端向服务器的FIN
. 同样,我们知道是因为源端口不是 5000。