私は、パケットを送信するための2つのツール、hping
とpackETHcli
を比較しました。 packETHcliためのコマンドラインオプションhpingはパケットを送るのにとても速いのですか?
./packETHcli -i eth0 -m 2 -n 0 -d -1 -f icmpSample.pcap
とhpingためには
hping --flood 192.168.0.1
しかしiptrafであるが、それはパケットがhpingのスピードを送信することpackETHcli比べて約10倍高速であることを示しています。
どちらのツールもrawソケットを使用しますが、なぜこのような大きな違いがありますか?
ここにソースコードを取得するためのリンクがあります。
hping:http://wiki.hping.org/
packETHcli:http://sourceforge.net/projects/packeth/
編集:私はhping
使用AF_INET rawソケットは、ペイロードがTCPであることに気づいた 。 packETHcli
PF_PACKET rawソケットを使用し、私の例ではペイロードはICMPのペイロードを持つIPパケットです。 パケット送信速度の違いはありますか?
EDIT2
今回は、TXパケットを見つけるために、ifconfigコマンドを使用する前とhping3
とpackETHcli
を実行した後の違いを数えます。そして、2つのツールではパケット生成率が近いことがわかりました。 は約100000パケット/秒であり、packETHcli
は約80000パケット/秒である。
また、vnstat
を使用してパケット生成率を測定します。そして結果はifconfig
から得られる数字と一致しています。
だから、iptraf
があると思われます。そして私はiptraf
を使用して、IPパケット番号とTCPシーケンス番号を更新することなく、TCPパケットの繰り返し再送を監視します。 iptraf
私のパケットの送信速度は0パケット/秒だと思います。 iptraf
になることがあります重複したパケットを数えませんか?
CPU使用率が最大になっていますか?おそらく一方は他方よりも効率的にコード化されているでしょう。 (特殊なツールとして、hpingはおそらくより希薄です)。 – nneonneo
@nneonneoどちらもsendto()を使って生のパケットを送り、for(;;)またはwhile(1)ループをラップします。どちらもシングルスレッドで動作します。 – longbowk
Mhmですが、そのループには他に何がありますか?私が求めているのは、両方のCPUが最大限にCPUを使い果たしているかどうかを判断するためにCPU使用率の「トップ」比較を行うことだけです。あなたは 'ntop'でネットワークを最大限に活用しているかどうかを知りたいかもしれません。 – nneonneo