Porównałem dwa narzędzia do szybkości wysyłania pakietów, hping
i packETHcli
. Opcje wiersza polecenia dla packETHcli jestJak może być tak szybkie wysyłanie pakietów?
./packETHcli -i eth0 -m 2 -n 0 -d -1 -f icmpSample.pcap
i hping jest
hping --flood 192.168.0.1
Ale w iptraf, to pokazuje, że pakiety z prędkością wysyłania hping jest około 10 razy szybciej niż packETHcli.
Oba narzędzia używają gniazd surowych, ale dlaczego tak duża różnica?
Oto link do uzyskania kodów źródłowych.
hping: http://wiki.hping.org/
packETHcli: http://sourceforge.net/projects/packeth/
EDIT: zauważyłem, że gniazdo surowy AF_INET hping
używanie, ładunek jest TCP. packETHcli
używaj surowego gniazda PF_PACKET, aw moim przykładzie ładunek jest i pakiet IP z ładunkiem ICMP. Czy robi różnicę prędkości wysyłania pakietów?
EDIT2
Tym razem używam ifconfig aby znaleźć pakiety TX liczyć różnicę pomiędzy przed i po uruchomieniu hping3
i packETHcli
. Okazało się, że pakiety generujące stawki są zbliżone do dwóch narzędzi. hping3
to około 100 000 pakietów na sekundę, a packETHcli
to około 80000 pakietów na sekundę.
Używam również vnstat
do pomiaru pakietów generujących stawki. Wynik jest zgodny z numerem uzyskanym z ifconfig
.
Wygląda na to, że kłamie iptraf
. I używam iptraf
do monitorowania powtórnego ponownego wysłania pakietu TCP, bez aktualizacji numeru IP ID i numeru kolejnego TCP. iptraf
Myślę, że moja stawka wysyłania pakietów wynosi 0 pakietów na sekundę. Może być iptraf
, nie licząc zduplikowanych pakietów?
Czy są one maksymalnie obciążające procesor? Być może jeden jest wydajniej kodowany niż drugi. (Jako narzędzie specjalistyczne, hping jest prawdopodobnie bardziej szczupły). – nneonneo
@nneonneo Obaj używają sendto(), aby wysłać surowy pakiet i zawinąć w pętlę for (;;) lub while (1). Oba działają w jednym wątku. – longbowk
Mhm, ale ile innych crudów jest w tej pętli? Wszystko, o co pytam, to zrobić "górne" porównanie użycia procesora, aby sprawdzić, czy oba te procesy maksymalizują procesor.Możesz również sprawdzić, czy maksymalizują one sieć za pomocą 'ntop'. – nneonneo