我正在开发一个http服务器 . 现在我想做一些统计,具体来说,我想知道客户端关闭了多少个tcp连接,以及我的服务器关闭了多少个 .
我在我的http服务器上关闭了保持活动功能,所以正常情况是我的服务器发送第一个FIN数据包而客户端发送第二个数据包,这意味着我的服务器正常关闭连接 . 如果它们的顺序相反,则表示关闭异常,我关心 .
这是一个问题,如何通过tcpdump告诉第二个FIN数据包?由于它们都设置在FIN和ACK标志位中 .
在此先感谢新年快乐!
我正在通过 ssh 将连接隧道连接到我的网络服务器,该网络服务器正在侦听5000 / tcp . 我运行了一个 tcpdump 的会话,即使您忽略了时间戳,仍然清楚谁从TCP源端口号发送了什么 .
ssh
tcpdump
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.344592
FIN
在 05:42:06.382504 ,客户端向服务器的 FIN 发送了ACK . 我们再次知道,因为源端口不是5000 .
05:42:06.382504
1 回答
我正在通过
ssh
将连接隧道连接到我的网络服务器,该网络服务器正在侦听5000 / tcp . 我运行了一个tcpdump
的会话,即使您忽略了时间戳,仍然清楚谁从TCP源端口号发送了什么 .在
05:42:06.344592
,我的网络服务器从客户端确认字节并设置FIN
标志 . 我知道它是网络服务器,因为源端口是5000.在现实世界中,它更容易,你的源IP地址就让它消失了 .在
05:42:06.382504
,客户端向服务器的FIN
发送了ACK . 我们再次知道,因为源端口不是5000 .