0

我正在研究分析器脚本。这是一个简单的 bash 脚本,它在 tcpdump 嗅探捕获上应用了一些逻辑。

我的任务是找出单个 IP 进行的并发会话数。我应用的逻辑是我计算了每个 ip 对相同目标 IP 和端口(即 3128)的不同源端口请求,因为它是代理服务器。

例如,考虑我的 dest ip 是 172.31.1.1 并且 dest 端口是 3128

现在,我只嗅探到此 dest 端口和 dest ip 的流量。

然后我为每个数据包过滤掉了源 ip 和源端口对。

然后我计算了每个源 IP 的不同源端口的数量,我认为这将等于每个单独的 IP 与该代理服务器进行的并发会话数。

现在通过查看正在运行的代理服务器上 10,000 个数据包样本的输出,每个 IP 的会话数大约为 300,250,200,甚至更少。对于 10 万,它也像 3000,2500。

我对会话的解释是否有问题,因为防火墙允许的并发会话数是每个 IP 100。

4

1 回答 1

2

正如我在评论中提到的,如果您想知道在任何给定时间来自单一源 IP 的 TCP 连接数,您需要弄清楚连接的建立(TCP三向握手)和终止(四向拆除和重置) ) 点。否则,您将在整个捕获期间计算从给定 IP 建立和尝试的所有 TCP 连接(但由于在捕获期间可以回收临时客户端端口,即使此计数可能不准确)。

我应该提到在 a 上增加连接的运行计数并在 a 上减少SYN它是不够的,因为 TCP 倾向于重新传输数据包。您需要跟踪 TCP 状态,因此可能需要熟悉 TCP 状态图:FINRST

TCP 状态转换图

(来自(http://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Tcp_state_diagram_fixed.svg/250px-Tcp_state_diagram_fixed.svg.png)。

于 2013-01-30T20:48:41.223 回答