我比较过两个工具hping
和packETHcli
的发包速度。 packETHcli 的命令行选项是
./packETHcli -i eth0 -m 2 -n 0 -d -1 -f icmpSample.pcap
hping 是
hping --flood 192.168.0.1
但是在iptraf中,显示hping的发包速度比packETHcli快10倍左右。
这两种工具都使用原始套接字,但为什么会有如此大的差异?
这是获取源代码的链接。
hping: http://wiki.hping.org/
packETHcli: http://sourceforge.net/projects/packeth/
编辑:
我注意到 hping
使用 AF_INET 原始套接字,有效负载是 TCP。 packETHcli
使用 PF_PACKET 原始套接字,在我的示例中,有效载荷是带有 ICMP 有效载荷的 IP 数据包。
对包发送速度有影响吗?
EDIT2
这次,我使用 ifconfig 来查找运行 hping3
和 packETHcli
前后的 TX 数据包计数差异。并发现这两种工具的数据包生成率接近。 hping3
约为每秒 100000 个数据包,packETHcli
约为每秒 80000 个数据包。
我还使用 vnstat
来测量数据包生成率。结果与我从ifconfig
得到的数字一致。
所以,iptraf
似乎在撒谎。并且我使用iptraf
来监控一个TCP 数据包的重复重发,而不更新IP ID 号和TCP 序列号。 iptraf
认为我的数据包发送速率是每秒 0 个数据包。可能是 iptraf
不计算重复的数据包?
最佳答案
*.pcap 文件中有每个数据包的时间戳信息。而且我认为packETHcli这个工具是在解析*.pcap文件,利用时间戳信息来模拟捕获*.pcap文件的网络环境,也就是说它要根据时间戳在数据包之间增加一些延迟。
而 hping 没有。
我认为这就是区别。
如果可以,packETHcli工具中有没有支持加速发送包的选项?
关于c - hping怎么能这么快发包呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15144066/