我想检查我的连接池库创建了多少个到特定主机的连接。我得到了tcpdump,从中可以知道如何使用wireshark获取已建立连接的数量。我可以使用tcptrace工具获取它,但我想知道如何使用wireshark来实现它。
发布于 2012-04-16 18:20:13
多少个可能是多少个并发的,这会有点困难,但在数据包捕获过程中有多少个数据包捕获要容易得多,而且由于您使用的是tcpdump,因此我将假定这就是您正在寻找的。
如果您的源ip是192.168.1.1,目标主机是192.168.1.2,则应用如下筛选器:
ip.src_host == 192.168.1.1 && ip.dst_host ==设备&& tcp.flags.syn == 1
如果问题中的目标主机可能也在建立与源主机的连接,则源主机还将发回SYN、ACK以接受这些连接,因此要过滤掉这些连接,请在末尾添加以下内容:
tcp.flags.ack == 0(&S)
应用该过滤器后,将只显示新连接,然后您可以查看Wireshark底部的状态栏。它将显示您有许多数据包的总数,以及有多少正在显示。显示的数据包数量将是捕获过程中建立的连接数量。
如果您正在寻找任何给定时间的并发连接,Wireshark可能不是您的最佳选择,因为在这种情况下,您将查找发生在相应FIN或RST(连接结束)之前的连接数(SYN),这更像是一个统计函数。
还值得注意的是,如果捕获的源在源主机上,则不能保证该捕获中的SYNs/连接已被接受/成功。您还需要验证是否为每个连接、SYN、SYN-ACK、ACK执行了完整的三次握手。
发布于 2013-07-23 02:54:42
试试这个-它可能不是100% -因为它只会看到与一些数据的连接-并假设一些理想化的东西-但对于大多数情况它已经足够好了:
tcpdump -tt -n -r __file__ \
| grep '\.10011' \
| sed -e 's/^.*IP [^>]\+\.\([^ ]\+\) > 10.0.10.1.13000:.*$/\1:&/g' \
-e 's/^.*IP 10.0.10.1.13000 > [^:]\+\.\([^ ]\+\): .*$/\1:&/g' \
| sed -e 's/ IP .* > .*: Flags \[[^]]*S[^]]*\].*/:open/g' \
-e 's/ IP .* > .*: Flags \[[^]]*[RF][^]]*\].*/:close/g' \
| grep -v 'length 0' \
| sed 's/ IP .* > .*: Flags .*/:isopen/g' \
| gawk -F: 'BEGIN{ cons["x"]=1; }{
if ( $3 == "open" || $3 == "isopen" ) { cons[$1] = 1; }
if ( $3 == "close" ) { delete cons[$1]; };
printf("%s %s %s\n", strftime("%Y%m%dT%H%M%S",int($2)), $2, (length(cons) - 1) ); }' \
| uniq -f 2感谢您的评论、修正或更正。注意-这将检查特定的端口和IP (10.0.10.1.13000) -您可以对其进行一些调整,使其适用于任何端口和IP
https://stackoverflow.com/questions/9818086
复制相似问题