【笔记】wincap收集并统计网络流量
来源:互联网 发布:见兄自然知悌什么意思 编辑:程序博客网 时间:2024/05/17 07:53
统计引擎利用了内核级的数据包过滤器,来有效地为收集到的数据包进行分类。为了使用这个特性,编程人员必须打开一个适配器,并且,可以使用pcap_setmode()将它设置为统计模式(statistical mode)。特别注意,必须使用MODE_STAT来作为这个函数的mode参数。
在统计模式下,编写一个用于监听TCP网络流量的程序并不复杂,代码也不多。
实现源码:
在设置为统计模式前可以设置一个过滤器来指定要捕获的协议包。如果没有设置过滤器那么整个网络数据都将被监视。一旦设置了过滤器就可以调用pcap_setmode()来设置为统计模式,之后网卡开始工作在统计模式下。 需要指出的是pcap_open_live()的第四个参数(to_ms)定义了采样的间隔,回调函数pcap_loop()每隔一定间隔就获取一次采样统计,这个采样被装入pcap_loop()的第二和第三个参数,过程如下图所示: ____________________ |struct timeval ts | |__________________| |bpf_u_int32 | |caplen=16 | struct pcap_pkthdr* |__________________| (参数2) | bpf_u_int32 | | len=16 | |__________________| ________________________________ |large_integer Accepted packet | |______________________________| uchar * | large_integer Accepted bits | (参数3) |______________________________| 用两个64位的计数器分别记录最近一次间隔数据包数量和比特数量。 本例子中,网卡打开时设置超时为1000毫秒,也就是说dispatcher_handler()每隔1秒就被调用一次。过滤器也设置为只监视TCP包,然后pcap_setmode() and pcap_loop()被调用,注意一个指向timeval的指针作为参数传送到pcap_loop()。这个timeval结构将用来存储个时间戳以计算两次采样的时间间隔。 dispatcher_handler()用该间隔来获取每秒的比特数和数据包数,并把着两个数显示在显示器上。 最后指出的是目前这个例子是比任何一个利用传统方法在用户层统计的包捕获程序都高效。因为统计模式需要最小数量的数据拷贝和上下环境交换,同时还有最小的内存需求,所以CPU是最优的。
- 【笔记】wincap收集并统计网络流量
- 【笔记】wincap收集并统计网络流量
- 收集并统计网络流量
- 统计网络流量
- 网络流量统计
- 【笔记】wincap发送数据包
- WinPcap笔记:VisualStudio2015配置WinCap
- snmp 统计网络流量
- nicstat-网络流量统计利器
- iOS-网络流量统计
- iOS-网络流量统计
- Andorid 网络流量统计
- Linux 统计网络流量备忘
- Android统计网络流量
- ios学习--网络流量统计
- 网络流量统计的内核驱动程序
- linux下网络流量监控统计
- Windows性能计数器统计网络流量
- 【笔记】wincap发送数据包
- 我的新BLOG
- 我的日记2009
- Bash命令行处理[详解]——转贴
- ARM GCC工具链有关的使用总结
- 【笔记】wincap收集并统计网络流量
- Linux内核模块/驱动编程基础
- Pocket PC Dialog Full Screen
- ucos-ii ARM几种移植版本
- Fluent Scheme 之 GUI 命令
- [GoF设计模式]抽象工厂模式和Command模式的C++实现
- java集合框架图及介绍
- JAVA集合类(大公司面试喜欢问的)
- 信号和槽