我通过收集的数据包转储来聚合连接,使用 TCPDUMP 收集。我的代码是用 Ruby 编写的。代码将使用 4 元组 (SrcIP,SrcPort,DstIP,DstPort) 区分连接。1. 如果连接之间的时间超过 2Hrs,那么它是一个新连接 2. 如果我们看到我们已经看到一个 FIN 或 RST,那么新数据包来自一个新连接 3. 如果 SYN 的数量超过两个(每个方向一个)然后连接是一个新的连接。
我无法解决的情况如下如果相同的两台主机(具有相同的 4 元组)之间的新连接发生在 2 小时内,并且 TCPDUMP 丢弃了以前的 RST 或 FIN 数据包,并且它还丢弃了两个或更多的 SYN 数据包连接。在这种情况下,我设置的上述条件都不起作用。剩下的唯一一组信息是新的一组数据包的时间,Seq Nos,Ack Nos和数据大小。仅使用此信息,我就可以确定连接是新连接还是旧连接?
我试图查看序列 No 或 SeqNo 和 AckNo 之间是否存在模式,但似乎没有一个是确定的。