首页
社区
课程
招聘
[求助]winsock2混杂模式抓包(raw socket) iocp模型 cpu占用高的问题
发表于: 2019-3-6 21:56 3778

[求助]winsock2混杂模式抓包(raw socket) iocp模型 cpu占用高的问题

2019-3-6 21:56
3778
先说说需求:不用驱动的情况下,抓取所有流量,且在有大流量经过时cpu占用低于5%(就是要保证cpu很低,基本占不了多少。。)。
我在谷歌了很久,好像不用驱动只有通过winsock,设置混杂模式抓包。
socket编程有几种模型,完成端口最有效但也最复杂。
找到了一个例子
但我用这个例子时,namp扫主机的所有端口时,cpu马上就飙升,占满了一会。
问题:
大流量情况下,是不是在应用层抓包本身就是很消耗cpu?还是例子里完成端口的实现有待优化的地方?、
请各位大佬谈谈自己的看法!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 248
活跃值: (1071)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
例子中,在一个socket handle上用IOCP有什么意思?
2019-3-7 03:15
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
sixL 例子中,在一个socket handle上用IOCP有什么意思?
我不太理解,难道完成端口可以关联多个句柄?
//功能:创建完成端口和关联完成端口
 HANDLE WINAPI CreateIoCompletionPort(
     *    __in   HANDLE FileHandle,              // 已经打开的文件句柄或者空句柄
     *    __in   HANDLE ExistingCompletionPort,  // 已经存在的IOCP句柄
     *    __in   ULONG_PTR CompletionKey,        // 完成键,包含了指定I/O完成包的指定文件
     *    __in   DWORD NumberOfConcurrentThreads // 真正并发同时执行最大线程数,一般推介是CPU核心数*2
     * );
2019-3-7 09:16
0
雪    币: 248
活跃值: (1071)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
1、在TCP/IP层上,读写断在hSocket进行,成千上万的Client连进来,每个Client都要分配一个hSocket,以便于读写断。
2、线程查询hIOCompletionPort,得知哪个hSocket上的读写断操作完成,读完了写,写完了读。
2019-3-7 10:40
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
sixL 1、在TCP/IP层上,读写断在hSocket进行,成千上万的Client连进来,每个Client都要分配一个hSocket,以便于读写断。 2、线程查询hIOCompletionPort,得知哪个 ...
我这是抓包,只有一个raw socket,绑定在网卡上,抓取通过该网卡的所有流量,没有其他socket连接。
2019-3-7 10:57
0
雪    币: 248
活跃值: (1071)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
1、IOCP是调度线程的,避免因为I/O操作延时而停滞;
2、在一个raw socket上RECV,一个RECV完不成,就不能下一个RECV。因此在一个socket handle上用IOCP毫无意义。
2019-3-7 11:14
0
雪    币: 248
活跃值: (1071)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
3、IOCP的意义在于用几少的线程处理成千上万的I/O.
2019-3-7 11:15
0
游客
登录 | 注册 方可回帖
返回
//