1

TCP クライアントとサーバーを持つアプリケーションがあります。クライアントとサーバーを別々のマシンにセットアップしました。ここで、消費されている帯域幅 (アプリケーションの 1 回の実行中に送受信されたバイト数) を測定したいと考えています。Wireshark は、この統計を取得するのに役立つツールの 1 つであることを発見しました。ただし、wireshark は GUI 依存のようです。私が欲しかったのは、この統計の測定と報告を自動化する方法でした。Wireshark によってキャプチャされた個々のパケットに関する情報は気にしません。私はその情報を必要としません。アプリケーションが両端で実行されている間に2つのホスト間で送受信された合計バイト数をファイルに書き込むだけになるようにwiresharkを実行する方法はありますか?

また、この統計を取得するためのより良い方法はありますか? netstat または /proc/dev/net またはその他のツールを介して?

両方のマシンで ubuntu 10.04 以降が実行されています。

4

1 に答える 1

1

Broは、接続指向の統計を測定するための適切なツールです。アプリケーション通信のトレースを記録するか、リアルタイムで分析できます。

bro -r <trace>
bro -i <interface>

conn.logその後、同じディレクトリにある接続ログ ( ) を参照して、アプリケーションによって送受信されたバイト数を確認します。具体的には、TCP ペイロード サイズに関心があります。これは、列およびconn.logを介して公開されます。次に例を示します。orig_bytesresp_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

各行は単一の接続を表し、トランスポート層ポートは省略されています。最後の 2 列は、発信者 (最初の列) と応答者 (2 番目の列) によって送信されたバイト数を表します。列conn_stateは接続ステータスを表します。可能なすべてのフィールド値については、ドキュメントを参照してください。いくつかの重要な値は次のとおりです。

  • S0 : 接続試行が見られましたが、応答がありません。
  • S1 : 接続が確立されましたが、終了されていません。
  • SF : 正常な確立と終了。これは状態 S1 と同じ記号であることに注意してください。S1 の場合はサマリーにバイト カウントがないのに対し、SF の場合はバイト カウントがあるため、この 2 つを区別できます。
  • REJ : 接続試行が拒否されました。
于 2012-04-08T21:24:42.557 に答える