基于WinPCAP的多模式流量监控系统设计

2017-06-05 13:58蒋日健周丽江达鑫冯志伟张文勇
电脑知识与技术 2017年7期

蒋日健 周丽 江达鑫 冯志伟 张文勇

摘要;该文研究了一个多模式流量监控系统的设计和实现,该系统可监控PC上各个进程的网速情况,根据用户需求对流量进行控制。系统具有默认、安全、智能三种模式,普通模式是根据大众使用网络应用习惯来分配网络流量,安全模式是根据黑白名单列表来控制网络流量,杜绝网络流量的浪费和恶意软件的非法行为,智能模式根据用户使用应用软件频率列表智能识别出软件优先级再分配网络流量。本系统利用winpcap成功实现了设计要求。

关键词:流量监控;winpcap;多模式

中图分类号:TP393.07 文献标识码:A 文章编号:1009-3044(2017)07-0032-02

1背景

当前社会,Internet技术的飞速发展,各种各样的网络应用快速普及,使得用户对于网络资源的需求量呈现猛烈增长。作为信息承载工具的网络,人们对其要求变得越来越高,合理利用流量能让用户在不增加网络带宽的情况下提高对流量的使用效率。虽然当前市场上流量监控系统很多,功能也很强大;但是能够灵活地适用于各个场合的流量系统却并不多见,甚至某些流量监控系统功能过于泛滥,并不适合日常所需。为此,本文研究了一个具有多模式的,适用于多场合的,简单易用的流量监控系统。

2多模式定义及算法

系统包含了默认模式、安全模式和智能模式,默认模式可以用于大多数普通网民对网络带宽没有多大限制和使用的情况;安全模式则用于固定流量的监控以及控制恶意软件的入侵等情况;智能模式有很强的用户个性化,可以帮助用户合理的使用网络带宽。不同模式在不同场合下的使用,使得系统可以轻松应对日常所需。

2.1默认模式

默认模式是根据大众习惯上使用各类网络应用的频率来分配网络带宽的—种模式,此模式也为该软件的缺省模式。据各大应用下载中心的热门软件下载排行榜显示:聊天应用软件首居榜首,往后依次为音乐软件、视频软件、游戏和工作应用软件。在用户对于网络没有明确要求的时候,默认模式按照下表优先级进行带宽的分配,以便满足大众对于网络流量的上网需求。

在该模式下,对各个应用软件没有设置流量阈值,获取流量的多少取决于应用需求大小,严格按照优先级顺序来使流量优先满足优先级高的应用软件。用户在该模式下可以查看每个应用的流量使用状态和占用的端口等信息,若想对网络流量有更高的要求,可以选择安全模式或智能模式。

2.2安全模式

安全模式是基于黑白名单规则来控制网络流量的一种模式,该模式适用于每月流量固定的学生人群。黑名单是除明确禁止的应用软件以外,其余应用软件都可以共享网络流量[r。相反白名单即除明确允许的应用软件以外,其余的应用软件不能分到网络流量。面对现如今恶意耗费网络流量的应用软件俯拾皆是的现状,黑白名单杜绝了网络流量的浪费和恶意软件盗取流量的状况,给用户一个安全可靠的网络环境。在该模式下,用户需要先自行选择黑白名单并向列表里添加规则条目以适应不同人群对网络应用的不同要求,在使用过程中也可自行增减黑白名单里的规则,还能实时统计用户所耗费的流量使用情况,超过当月设置的流量阈值,会弹窗提醒用户流量告急,以便用户做出节省流量或是增加流量的举动。

2.3智能模式

智能模式是根据用户使用网络习惯来分配网络带宽的一种模式。该模式使用配置文件记录近一个月用户使用各种网络应用的频率,按下表给出各个应用软件的优先级。

在该模式下,用户随意开启一个应用软件后,智能识别出用户所开应用软件在用户使用软件频率列表里的优先级,如若当前环境中此优先级最高,则立即给予此应用软件所需的带宽;如若当前环境中还有比此优先级更高的优先级存在,则先-满足拥有最高优先级的应用軟件带宽,剩余的带宽再分给此应用软件。智能模式的个性化特别适用于用户无暇顾及流量使用情况以及对于流量默认设置不符合实际使用等情况时使用。

3系统设计

系统分为抓包分析、更新、监控等3个模块,每个模块使用一个线程执行。模块之间的关系如图1所示,系统通过主线程抓包并分析,将原始数据记录到临时内存中,然后利用更新线程,将主线程存储的数据进行整理,并更新到界面上。监控模块则主要用于监控是否有新程序加入,并且根据新程序的程序类型重新分配网络带宽。

3.1抓包分析模块

抓包分析模块的初始化参数是本主机抓取到的原始数据包的分析结果,并将其数据记录到临时内存中,然后继续对全网数据包进行抓包,抓包后判断其是否为与其本机通信的ip数据包,若是,则将其数据记录到临时内存里,具体流程图如图2。

3.2更新模块

更新模块负责对抓包模块记录的数据包数据进行统计并按程序进行显示在系统界面上,每隔一个时间戳将系统界面上的数据清理删除后,重新将抓包分析的数据显示在系统界面上。

3.3监控模块

监控模块类似于守护线程,在系统模式的启动过程中,每隔1秒钟进行一次运行程序分析,根据运行的程序选择当前模式下相应程序类型的优先级,再给程序分配网络带宽。在系统模式启动成功以后,监控模块就负责一直监控主机是否有新程序的加入,当有新程序加入的时候,再判断新程序的程序类型并给他分配网络带宽。

4设计实现

设计基于winpcap和Java多线程,实现了一个能够适应多场合的多模式系统。系统利用winpcap可以在windows下进行抓包的特点和java多线程并发的优势,以及jpcap能让java对winpcap的完美支持的能力对数据包进行抓取,分析并显示。

4.1开发采用的技术

1)Jpcap和winpcap

Jpcap是一个能捕获和发送网络数据包的Java类库,它为网络数据包的捕获提供接口和系统支持,用于Java应用程序对网络数据包的捕获、分析及处理。jpcap作为一个中间件,它调用winPcap和libcap库来给Java提供一个公共的接口,以实现数据流量的捕获。Jpcap与winpcap的完美结合,使得网络流量监控一类应用的开发变得更加轻松、灵活。

2)Java和多线程

根据设计需要在抓包的同时进行对抓获的数据包进行处理并显示,以及对模式的实时切换,因此开发者使用了Java和多线程编程来实现抓包、处理显示以及模式切换。

4.2系统功能界面

系统初始化界面如图3,显示主机运行的进程名,端口以及上下行速度,以及是否对进程设置了速度保护,还可手动选择适合自己的模式以及做相应的限速管理等。

5结束语

基于场合的多模式流量监控系统实现了对本地应用程序的监控,达到了预期的目的。设计实现了多模式在多场合下的自动适应,通过测试,无论是普通模式,还是智能模式,系统都能够良好地支持。

系统在测试当中,发现了以下两点不足;1)系统在超过一定数量的应用程序同时工作下,更新速度变得缓慢;2)由于系统根据端口区分程序,使得系统界面同时显示多个名字相同程序。后期开发人员可以通过把名字相同而端口不同的程序进行合并来解决以上两个问题。