yw450330 发表于 2020-10-22 14:10

Windows抓包技术探讨

Windows的网络抓包的方法大致以下几类:
1、原始套接字:RAW_SOCKET
2、网络过滤驱动:WIN_CAP、NPCAP
3、winsock2服务提供者接口:SPI
4、钩子技术:API HOOK
5、数据平面开发套件:DPDK
   目前用的比较多的工具是fiddler和Wireshark,我了解的比较多的是Wireshark,使用的技术是第二种,NDIS驱动在网络层可以截获所有的网络数据,这里就不贴代码了,github上直接可以搜到源码。但这种技术几十年前就有了,到现在还一直用着,性能在我看来比较低,在千兆网速下,最多只能达到500Mbps左右,而且丢包比较严重。因此很多专业的抓包设备都会用硬件来实现,比如高速采集卡。       这里还是聊聊NDIS过滤驱动,下面贴出数据:
      速度42.26 MB/S54.46 MB/S 61.84 MB/S91.85 MB/S
总数80142010685613357010017750
抓包数80142010685613357010017613
丢包数000137
丢包率0.0%0.0%0.0%0.0013676%
处理时间/秒250 28 30 1494
每秒处理笔数3206 3816 4452 6704
CPU使用率3.2%+3%3.5%+4.1%3.7%+4.9%3.6%+7.7%
说明E5-2667 3.2G 16核 32线程
             注意,这里是千兆网卡,对应的Mbps要乘以8。可以看到在高频数据情况下,还是有丢包的情况出现,这是不可原谅的。这里用的是WINCAP进阶版NPCAP,上层应用开辟了比较大的共享内存来memcpy保存网卡数据,理论上说已经做到极致了,瓶颈几乎都在内存拷贝的环节,两次拷贝还是比不过网卡的处理速度,丢包就丢在这里了。      难道纯粹的软件方法就不能做到不丢包么?DPDK?这个没有试过。

tanghengvip 发表于 2020-10-22 14:15

硬件抓包有什么简单好用的方案吗?

cacuts 发表于 2020-10-22 15:22

硬件抓包怎么抓?

yls258 发表于 2020-10-22 15:36

这个必须问深信服啊

v.n.lee 发表于 2020-10-22 16:11

还有路由器抓包

andrang 发表于 2020-10-22 16:23

学习一下,膜拜大佬

RagnarokRay 发表于 2020-10-22 16:43

学习下,谢谢分享

feiyu361 发表于 2020-10-22 16:54

楼主在说的是绿盟的一款抓包机?

luxuryang 发表于 2020-10-23 09:19

楼主在说的是绿盟的一款抓包机?

yw450330 发表于 2020-10-23 10:29

tanghengvip 发表于 2020-10-22 14:15
硬件抓包有什么简单好用的方案吗?

慕雷电子的高速采集卡,问题是贵
页: [1]
查看完整版本: Windows抓包技术探讨