我有一个具有TCP客户端和服务器的应用程序。我在不同的机器上设置客户端和服务器。现在我想测量消耗的带宽(在单次运行应用程序期间发送和接收的字节数)。我发现wireshark就是这样一种工具,它可以帮助我获得这个统计数据。但是,wireshark似乎依赖于GUI。我想要的是一种自动测量和报告此统计数据的方法。我不关心wireshark捕获的各个数据包的信息。我不需要那些信息。有没有办法运行wireshark所以它所做的就是写入文件,当应用程序在两端运行时,两个主机之间发送和接收的总字节数是多少?
此外,是否有更好的方法来捕获此统计信息?通过netstat或/ proc / dev / net或任何其他工具?
我的两台机器都运行ubuntu 10.04或更高版本。
答案 0 :(得分:1)
Bro是衡量面向连接的统计信息的合适工具。您可以记录应用程序通信的跟踪或实时分析它:
bro -r <trace>
bro -i <interface>
此后,查看同一目录中的连接日志(conn.log
),了解应用程序发送和接收的字节数。具体而言,您对TCP有效负载大小感兴趣,conn.log
通过列orig_bytes
和resp_bytes
公开。这是一个例子:
bro-cut id.orig_h id.resp_h conn_state orig_bytes resp_bytes < conn.log | head
产生以下输出:
192.168.1.102 192.168.1.1 SF 301 300
192.168.1.103 192.168.1.255 S0 350 0
192.168.1.102 192.168.1.255 S0 350 0
192.168.1.103 192.168.1.255 S0 560 0
192.168.1.102 192.168.1.255 S0 348 0
192.168.1.104 192.168.1.255 S0 350 0
192.168.1.104 192.168.1.255 S0 549 0
192.168.1.103 192.168.1.1 SF 303 300
192.168.1.102 192.168.1.255 S0 - -
192.168.1.104 192.168.1.1 SF 311 300
每行代表一个连接,省略传输层端口。最后两列表示发起者(第一列)和响应者(第二列)发送的字节。列conn_state
表示连接状态。有关所有可能的字段值,请参阅documentation。一些重要的价值观是: