2011-01-14 20 views
1

Cアプリケーションでlibpcap(Windowsではwinpcap)を使用して、ネットワークトラフィックを監視しています。接続速度統計情報を生成するために、各ネットワークアダプタのアップロードトラフィックとダウンロードトラフィックを区別する必要がありますが、ライブラリで使用されるフィルタ式はこれを非常に簡単にサポートしていないようです(つまり、 '着信'/'発信' )。libpcapでのアップロード/ダウンロード速度の測定

私が考えているアプローチの1つは、各アダプタのIPアドレスを照会し、src host 1.2.3.4(アップロードを測定する)とdst host 1.2.3.4(ダウンロードを測定する)などのフィルタを使用することです。

私の質問は以下のとおりです。

上記1(各アダプターがいいだろうために私は、同じフィルタ式を使用してみましょう何か)よりも良い/簡単な方法はありますか?

上記の方法がある場合は、1つのアダプタに2つ以上のIPアドレスが関連付けられている可能性はありますか?私が尋ねる理由は、(struct pcap_ifの)単一のアダプタのアドレスの詳細を保持するpcap_addr構造体に、これが可能であることを示唆する「次の」メンバがあるからです。

答えて

2

まず、pcapはパケットのみを認識します。単純にパケットである「発信」や「着信」は表示されません。だから、あなたは、IPヘッダーのsrc/dstを使ってフィルタリングする必要があります。パケットが着信か発信かを区別する他の方法はありません。

第2に、はい、複数のIPアドレスを持つアダプタを停止することはありません。したがって、そのアダプタから設定されたIPアドレスを取得する必要があります。 pcap_findalldevs()(WinPCap Documentation)ここでお手伝いして、監視するデバイスを推測できるはずです。

1

を試してみてください、あなたはpmacct見て考えがあります - 私は個人的には、時間、過去にこれに貢献してきました。これはlibpcapを使用してアカウンティング目的でネットワークトラフィックを受動的に監視するCツールです。

+0

+1、私はそのライブラリの外観が好きです。 –

関連する問題