【发布时间】:2012-01-02 05:27:06
【问题描述】:
我通过收集的数据包转储聚合连接,使用 TCPDUMP 收集。我的代码是用 Ruby 编写的。 该代码将使用 4 元组(SrcIP、SrcPort、DstIP、DstPort)区分连接 现在,如果连接是在同一台机器之间,具有相同的 IP 和相同的端口,则通过以下方法区分连接。 1. 如果连接之间的时间超过 2 小时,那么它是一个新的连接 2. 如果我们已经看到了 FIN 或 RST,那么新数据包来自新连接 3.如果SYN的数量超过两个(每个方向一个),那么这个连接就是一个新的连接。
我无法解决的情况如下 如果相同的两台主机(具有相同的 4 元组)之间的新连接发生在 2 小时内,并且 TCPPDUMP 丢弃了先前的 RST 或 FIN 数据包,并且它还从两个连接中丢弃了 2 个或更多的 SYN 数据包。在这种情况下,我设置的上述条件都不起作用。剩下的唯一一组信息是新的一组数据包的时间,Seq Nos,Ack Nos和数据大小。仅使用此信息,我就可以确定连接是新连接还是旧连接?
我试图查看序列 No 或 SeqNo 和 AckNo 之间是否存在模式,但似乎没有一个是确定的。
【问题讨论】:
标签: ruby tcp network-programming packet-sniffers tcpdump