Ich habe zwei Tools für die Geschwindigkeit des Sendens von Paketen, hping
und packETHcli
verglichen. Die Befehlszeilenoptionen für packETHcli istWie kann das hping so schnell Pakete senden?
./packETHcli -i eth0 -m 2 -n 0 -d -1 -f icmpSample.pcap
und für hping ist
hping --flood 192.168.0.1
Aber in iptraf, zeigt es, dass die Pakete Geschwindigkeit von hping Senden ist etwa 10-mal schneller als packETHcli.
Beide Tools verwenden rohe Sockets, aber warum so ein großer Unterschied?
Hier ist der Link, um die Quellcodes zu erhalten.
hping: http://wiki.hping.org/
packETHcli: http://sourceforge.net/projects/packeth/
EDIT: ich, dass die hping
Verwendung AF_INET bemerkt Raw-Socket, die Nutzlast TCP ist. packETHcli
Verwenden PF_PACKET Raw-Socket, und in meinem Beispiel ist die Nutzlast und IP-Paket mit Payload von ICMP. Macht es den Unterschied der Paketsendegeschwindigkeit?
EDIT2
Diesmal benutze ich ifconfig die TX-Pakete Unterschied hping3
und packETHcli
zwischen vor und nach dem Laufen zählen zu finden. Und festgestellt, dass die Raten erzeugenden Pakete für die beiden Tools nah sind. hping3
ist etwa 100000 Pakete pro Sekunde und packETHcli
ist etwa 80000 Pakete pro Sekunde.
Ich benutze vnstat
auch die Pakete zu erzeugen Raten zu messen. Und das Ergebnis stimmt mit der Nummer überein, die ich von ifconfig
bekomme.
So scheint es, dass iptraf
liegt. Und ich verwende iptraf
, um das wiederholte Neusenden eines TCP-Pakets zu überwachen, ohne die IP-ID-Nummer und TCP-Sequenznummer zu aktualisieren. iptraf
denke, meine Paketsende-Rate ist 0 Pakete pro Sekunde. Kann iptraf
die doppelten Pakete nicht zählen?
Sind beide auf CPU-Auslastung maximal? Vielleicht ist einer effizienter codiert als der andere. (Als Spezialwerkzeug ist das Hping wahrscheinlich magerer). – nneonneo
@nneonneo Beide verwenden sendto(), um das rohe Paket zu senden, und werden in eine for (;;) - oder while (1) -Schleife eingepackt. Beide laufen in einem Thread. – longbowk
Mhm, aber wie viel andere Crud gibt es in dieser Schleife? Alles, was ich frage, ist ein "Top" Vergleich der CPU-Auslastung, um zu sehen, ob sie beide die CPU ausschöpfen.Sie können auch sehen, ob sie das Netzwerk mit 'ntop' ausstatten. – nneonneo