winpcap使用经验

Linux系统上,可以使用raw socket实现IP层的自定义,在windows上面,从windowsXP的SP2开始,就禁止假冒IP发送报文了,要实现自定义的报文发送,自写驱动是一个方法,另外一个简易方法就是使用winpcap库了。

 

winpcap是一套开源的库,在linux上有对应的库(libpcap),因此用winpcap实现的代码是可以做到跨平台移植的。

 

winpcap的介绍文章有很多,我这里就不说了,只说一些开发过程中的经验与总结。

 

1  winpcap.dll实际上是对Packet.dll的封装,另外还封装了读写pcap文件模块,可以打开或者保存pcap文件。如果仅仅操作网络,那么可以直接使用packet.dll。

2  pcap文件格式是非常简单的,可以自己写函数来实现读取和写入功能,仅仅是报文头加报文的不断重复过程。

3  winpcap在windows上面的发送速度可以达到1500大小的报文9万pps的速率。64字节的报文速率则一般只能达到33万pps。

4  报文能发送速度和接收速度并不是匹配的,要想接收也达到以上速率,需要对接收速率做很大的优化。

5  winpcap的接收是比较慢的,最好直接用Packet.dll里面的函数实现接收功能,并做好缓冲。因为收到的报文如果处理不及时,下一个报文如果不收上来的话,就会造成丢包了。

6  winpcap的驱动名称为 npf.sys,此文件可以直接替换,不过替换之后要重启才能生效。winpcap提供的源代码可以直接编译出驱动,是不错的代码。

7  自己实现报文模拟工具,如果只是简单的发包工具还好,如果要实现交互过程,比如自己实现tcp,那么就需要自己实现tcp/ip协议栈了,这部分可以使用开源的lwip库,不过这个库的效率非常低,最好还是自己实现。

8  要自己实现tcp/ip协议栈,就需要认真仔细的熟读tcp与ip的rfc文档了,两本经典书是要翻熟,并且还要有充足的代码经验,实现多种设计模拟。刚毕业两年的同志就不要打算这么做了,实现自定义协议栈非常复杂。需要积累非常多的经验。

9 要做这方面的工具,需要有比较多的基本库的积累,什么都没有,那么实现这么一个工具,要做的事情是比较多的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值