蔣日健 周麗 江達(dá)鑫 馮志偉 張文勇
摘要;該文研究了一個(gè)多模式流量監(jiān)控系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),該系統(tǒng)可監(jiān)控PC上各個(gè)進(jìn)程的網(wǎng)速情況,根據(jù)用戶需求對(duì)流量進(jìn)行控制。系統(tǒng)具有默認(rèn)、安全、智能三種模式,普通模式是根據(jù)大眾使用網(wǎng)絡(luò)應(yīng)用習(xí)慣來分配網(wǎng)絡(luò)流量,安全模式是根據(jù)黑白名單列表來控制網(wǎng)絡(luò)流量,杜絕網(wǎng)絡(luò)流量的浪費(fèi)和惡意軟件的非法行為,智能模式根據(jù)用戶使用應(yīng)用軟件頻率列表智能識(shí)別出軟件優(yōu)先級(jí)再分配網(wǎng)絡(luò)流量。本系統(tǒng)利用winpcap成功實(shí)現(xiàn)了設(shè)計(jì)要求。
關(guān)鍵詞:流量監(jiān)控;winpcap;多模式
中圖分類號(hào):TP393.07 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)07-0032-02
1背景
當(dāng)前社會(huì),Internet技術(shù)的飛速發(fā)展,各種各樣的網(wǎng)絡(luò)應(yīng)用快速普及,使得用戶對(duì)于網(wǎng)絡(luò)資源的需求量呈現(xiàn)猛烈增長(zhǎng)。作為信息承載工具的網(wǎng)絡(luò),人們對(duì)其要求變得越來越高,合理利用流量能讓用戶在不增加網(wǎng)絡(luò)帶寬的情況下提高對(duì)流量的使用效率。雖然當(dāng)前市場(chǎng)上流量監(jiān)控系統(tǒng)很多,功能也很強(qiáng)大;但是能夠靈活地適用于各個(gè)場(chǎng)合的流量系統(tǒng)卻并不多見,甚至某些流量監(jiān)控系統(tǒng)功能過于泛濫,并不適合日常所需。為此,本文研究了一個(gè)具有多模式的,適用于多場(chǎng)合的,簡(jiǎn)單易用的流量監(jiān)控系統(tǒng)。
2多模式定義及算法
系統(tǒng)包含了默認(rèn)模式、安全模式和智能模式,默認(rèn)模式可以用于大多數(shù)普通網(wǎng)民對(duì)網(wǎng)絡(luò)帶寬沒有多大限制和使用的情況;安全模式則用于固定流量的監(jiān)控以及控制惡意軟件的入侵等情況;智能模式有很強(qiáng)的用戶個(gè)性化,可以幫助用戶合理的使用網(wǎng)絡(luò)帶寬。不同模式在不同場(chǎng)合下的使用,使得系統(tǒng)可以輕松應(yīng)對(duì)日常所需。
2.1默認(rèn)模式
默認(rèn)模式是根據(jù)大眾習(xí)慣上使用各類網(wǎng)絡(luò)應(yīng)用的頻率來分配網(wǎng)絡(luò)帶寬的—種模式,此模式也為該軟件的缺省模式。據(jù)各大應(yīng)用下載中心的熱門軟件下載排行榜顯示:聊天應(yīng)用軟件首居榜首,往后依次為音樂軟件、視頻軟件、游戲和工作應(yīng)用軟件。在用戶對(duì)于網(wǎng)絡(luò)沒有明確要求的時(shí)候,默認(rèn)模式按照下表優(yōu)先級(jí)進(jìn)行帶寬的分配,以便滿足大眾對(duì)于網(wǎng)絡(luò)流量的上網(wǎng)需求。
在該模式下,對(duì)各個(gè)應(yīng)用軟件沒有設(shè)置流量閾值,獲取流量的多少取決于應(yīng)用需求大小,嚴(yán)格按照優(yōu)先級(jí)順序來使流量?jī)?yōu)先滿足優(yōu)先級(jí)高的應(yīng)用軟件。用戶在該模式下可以查看每個(gè)應(yīng)用的流量使用狀態(tài)和占用的端口等信息,若想對(duì)網(wǎng)絡(luò)流量有更高的要求,可以選擇安全模式或智能模式。
2.2安全模式
安全模式是基于黑白名單規(guī)則來控制網(wǎng)絡(luò)流量的一種模式,該模式適用于每月流量固定的學(xué)生人群。黑名單是除明確禁止的應(yīng)用軟件以外,其余應(yīng)用軟件都可以共享網(wǎng)絡(luò)流量[r。相反白名單即除明確允許的應(yīng)用軟件以外,其余的應(yīng)用軟件不能分到網(wǎng)絡(luò)流量。面對(duì)現(xiàn)如今惡意耗費(fèi)網(wǎng)絡(luò)流量的應(yīng)用軟件俯拾皆是的現(xiàn)狀,黑白名單杜絕了網(wǎng)絡(luò)流量的浪費(fèi)和惡意軟件盜取流量的狀況,給用戶一個(gè)安全可靠的網(wǎng)絡(luò)環(huán)境。在該模式下,用戶需要先自行選擇黑白名單并向列表里添加規(guī)則條目以適應(yīng)不同人群對(duì)網(wǎng)絡(luò)應(yīng)用的不同要求,在使用過程中也可自行增減黑白名單里的規(guī)則,還能實(shí)時(shí)統(tǒng)計(jì)用戶所耗費(fèi)的流量使用情況,超過當(dāng)月設(shè)置的流量閾值,會(huì)彈窗提醒用戶流量告急,以便用戶做出節(jié)省流量或是增加流量的舉動(dòng)。
2.3智能模式
智能模式是根據(jù)用戶使用網(wǎng)絡(luò)習(xí)慣來分配網(wǎng)絡(luò)帶寬的一種模式。該模式使用配置文件記錄近一個(gè)月用戶使用各種網(wǎng)絡(luò)應(yīng)用的頻率,按下表給出各個(gè)應(yīng)用軟件的優(yōu)先級(jí)。
在該模式下,用戶隨意開啟一個(gè)應(yīng)用軟件后,智能識(shí)別出用戶所開應(yīng)用軟件在用戶使用軟件頻率列表里的優(yōu)先級(jí),如若當(dāng)前環(huán)境中此優(yōu)先級(jí)最高,則立即給予此應(yīng)用軟件所需的帶寬;如若當(dāng)前環(huán)境中還有比此優(yōu)先級(jí)更高的優(yōu)先級(jí)存在,則先-滿足擁有最高優(yōu)先級(jí)的應(yīng)用軟件帶寬,剩余的帶寬再分給此應(yīng)用軟件。智能模式的個(gè)性化特別適用于用戶無暇顧及流量使用情況以及對(duì)于流量默認(rèn)設(shè)置不符合實(shí)際使用等情況時(shí)使用。
3系統(tǒng)設(shè)計(jì)
系統(tǒng)分為抓包分析、更新、監(jiān)控等3個(gè)模塊,每個(gè)模塊使用一個(gè)線程執(zhí)行。模塊之間的關(guān)系如圖1所示,系統(tǒng)通過主線程抓包并分析,將原始數(shù)據(jù)記錄到臨時(shí)內(nèi)存中,然后利用更新線程,將主線程存儲(chǔ)的數(shù)據(jù)進(jìn)行整理,并更新到界面上。監(jiān)控模塊則主要用于監(jiān)控是否有新程序加入,并且根據(jù)新程序的程序類型重新分配網(wǎng)絡(luò)帶寬。
3.1抓包分析模塊
抓包分析模塊的初始化參數(shù)是本主機(jī)抓取到的原始數(shù)據(jù)包的分析結(jié)果,并將其數(shù)據(jù)記錄到臨時(shí)內(nèi)存中,然后繼續(xù)對(duì)全網(wǎng)數(shù)據(jù)包進(jìn)行抓包,抓包后判斷其是否為與其本機(jī)通信的ip數(shù)據(jù)包,若是,則將其數(shù)據(jù)記錄到臨時(shí)內(nèi)存里,具體流程圖如圖2。
3.2更新模塊
更新模塊負(fù)責(zé)對(duì)抓包模塊記錄的數(shù)據(jù)包數(shù)據(jù)進(jìn)行統(tǒng)計(jì)并按程序進(jìn)行顯示在系統(tǒng)界面上,每隔一個(gè)時(shí)間戳將系統(tǒng)界面上的數(shù)據(jù)清理刪除后,重新將抓包分析的數(shù)據(jù)顯示在系統(tǒng)界面上。
3.3監(jiān)控模塊
監(jiān)控模塊類似于守護(hù)線程,在系統(tǒng)模式的啟動(dòng)過程中,每隔1秒鐘進(jìn)行一次運(yùn)行程序分析,根據(jù)運(yùn)行的程序選擇當(dāng)前模式下相應(yīng)程序類型的優(yōu)先級(jí),再給程序分配網(wǎng)絡(luò)帶寬。在系統(tǒng)模式啟動(dòng)成功以后,監(jiān)控模塊就負(fù)責(zé)一直監(jiān)控主機(jī)是否有新程序的加入,當(dāng)有新程序加入的時(shí)候,再判斷新程序的程序類型并給他分配網(wǎng)絡(luò)帶寬。
4設(shè)計(jì)實(shí)現(xiàn)
設(shè)計(jì)基于winpcap和Java多線程,實(shí)現(xiàn)了一個(gè)能夠適應(yīng)多場(chǎng)合的多模式系統(tǒng)。系統(tǒng)利用winpcap可以在windows下進(jìn)行抓包的特點(diǎn)和java多線程并發(fā)的優(yōu)勢(shì),以及jpcap能讓java對(duì)winpcap的完美支持的能力對(duì)數(shù)據(jù)包進(jìn)行抓取,分析并顯示。
4.1開發(fā)采用的技術(shù)
1)Jpcap和winpcap
Jpcap是一個(gè)能捕獲和發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包的Java類庫(kù),它為網(wǎng)絡(luò)數(shù)據(jù)包的捕獲提供接口和系統(tǒng)支持,用于Java應(yīng)用程序?qū)W(wǎng)絡(luò)數(shù)據(jù)包的捕獲、分析及處理。jpcap作為一個(gè)中間件,它調(diào)用winPcap和libcap庫(kù)來給Java提供一個(gè)公共的接口,以實(shí)現(xiàn)數(shù)據(jù)流量的捕獲。Jpcap與winpcap的完美結(jié)合,使得網(wǎng)絡(luò)流量監(jiān)控一類應(yīng)用的開發(fā)變得更加輕松、靈活。
2)Java和多線程
根據(jù)設(shè)計(jì)需要在抓包的同時(shí)進(jìn)行對(duì)抓獲的數(shù)據(jù)包進(jìn)行處理并顯示,以及對(duì)模式的實(shí)時(shí)切換,因此開發(fā)者使用了Java和多線程編程來實(shí)現(xiàn)抓包、處理顯示以及模式切換。
4.2系統(tǒng)功能界面
系統(tǒng)初始化界面如圖3,顯示主機(jī)運(yùn)行的進(jìn)程名,端口以及上下行速度,以及是否對(duì)進(jìn)程設(shè)置了速度保護(hù),還可手動(dòng)選擇適合自己的模式以及做相應(yīng)的限速管理等。
5結(jié)束語(yǔ)
基于場(chǎng)合的多模式流量監(jiān)控系統(tǒng)實(shí)現(xiàn)了對(duì)本地應(yīng)用程序的監(jiān)控,達(dá)到了預(yù)期的目的。設(shè)計(jì)實(shí)現(xiàn)了多模式在多場(chǎng)合下的自動(dòng)適應(yīng),通過測(cè)試,無論是普通模式,還是智能模式,系統(tǒng)都能夠良好地支持。
系統(tǒng)在測(cè)試當(dāng)中,發(fā)現(xiàn)了以下兩點(diǎn)不足;1)系統(tǒng)在超過一定數(shù)量的應(yīng)用程序同時(shí)工作下,更新速度變得緩慢;2)由于系統(tǒng)根據(jù)端口區(qū)分程序,使得系統(tǒng)界面同時(shí)顯示多個(gè)名字相同程序。后期開發(fā)人員可以通過把名字相同而端口不同的程序進(jìn)行合并來解決以上兩個(gè)問題。