摘 要:WLAN是利用無線通信技術(shù)在一定的局部范圍內(nèi)建立的網(wǎng)絡(luò),是無線通信技術(shù)與計(jì)算機(jī)網(wǎng)絡(luò)相結(jié)合的產(chǎn)物,它以無線多址信道作為傳輸媒介,能夠使用戶真正實(shí)現(xiàn)隨時(shí)、隨地的寬帶網(wǎng)絡(luò)接入。在最近的幾年里,WLAN由于具有組網(wǎng)靈活、價(jià)格低廉、高速數(shù)據(jù)接入及頻段開放等優(yōu)勢(shì),已經(jīng)在商業(yè)樓宇、學(xué)校、賓館、醫(yī)院等場(chǎng)合得到了廣泛地應(yīng)用,它已經(jīng)成為寬帶接入的有效手段之一,并且使用WLAN的區(qū)域以及承載的業(yè)務(wù)越來越多,已形成了較大規(guī)模的網(wǎng)絡(luò)。為保證WLAN建設(shè)高密度場(chǎng)景用戶使用的效果和最終體驗(yàn),必須要對(duì)WLAN進(jìn)行優(yōu)化,來滿足日益擴(kuò)大的業(yè)務(wù)發(fā)展需要。因此需要建立一套科學(xué)、合理、高效的系統(tǒng),來監(jiān)測(cè)WLAN網(wǎng)絡(luò)的質(zhì)量并及時(shí)進(jìn)行優(yōu)化。本文主要針對(duì)通過winpcap技術(shù)如何對(duì)WLAN進(jìn)行分析及優(yōu)化。
關(guān)鍵詞:無線局域網(wǎng);winpcap技術(shù);網(wǎng)絡(luò)優(yōu)化
基金項(xiàng)目:湖南省發(fā)改委科技創(chuàng)新項(xiàng)目,基于大數(shù)據(jù)的WLAN分析優(yōu)化平臺(tái)的研究與設(shè)計(jì)(2014F12700)
Unix系統(tǒng)中最著名的BSD包截獲結(jié)構(gòu)便是WinPcap的主要思想來源。它由內(nèi)核態(tài)的網(wǎng)絡(luò)組包過濾器(Netgroup Packet Filter, NPF)、用戶態(tài)的動(dòng)態(tài)鏈接庫(kù)Packet.dll和Wpcap.dll等3個(gè)模塊構(gòu)成:(1) 網(wǎng)絡(luò)數(shù)據(jù)包過濾器是Winpcap的核心部分,它是Winpcap完成困難工作的組件。它處理網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包,并且對(duì)用戶級(jí)提供可捕獲、發(fā)送和分析性能。(2)低級(jí)動(dòng)態(tài)鏈接庫(kù)。Packet.dll是存放在Windows系統(tǒng)文件夾中的重要文件,通常情況下是在安裝操作系統(tǒng)過程中自動(dòng)創(chuàng)建的,對(duì)于系統(tǒng)正常運(yùn)行來說至關(guān)重要。在正常情況下不建議用戶對(duì)該類文件進(jìn)行隨意的修改,它的存在對(duì)維護(hù)計(jì)算機(jī)系統(tǒng)的穩(wěn)定具有重要作用。使用Packet.dll開發(fā)的數(shù)據(jù)包截取程序可以運(yùn)行在不同的Win32平臺(tái)上而不需要重新進(jìn)行編譯。提供了一個(gè)底層API,這些API可以直接用來訪問內(nèi)核 (3)高級(jí)動(dòng)態(tài)鏈接庫(kù)。Wpcap.dll為包捕獲應(yīng)用提供了一個(gè)高級(jí)的編程接口,它是從Libpcap發(fā)展而來并且相互兼容,所以wpcap.dll包含了Libpcap具有的函數(shù)。Wpcap為了要與硬件接口,還直接調(diào)用了packet.dll提供的函數(shù)。另外,在Libpcap提供的功能基礎(chǔ)上還增加了數(shù)據(jù)包發(fā)送和統(tǒng)計(jì)等功能,為此增加了一些函數(shù)。pcap_setbuff:該函數(shù)用于設(shè)置包緩沖區(qū)的大小。pcap_setmode:該函數(shù)用于設(shè)置網(wǎng)絡(luò)適配器接口的工作模式。pcap_stats:該函數(shù)用于獲取包捕獲過程的統(tǒng)計(jì)數(shù)據(jù)。
WinPcap利用這3個(gè)模塊提供了以下四個(gè)功能:
1)獲取原始數(shù)據(jù)包,包括在共享網(wǎng)絡(luò)上各個(gè)主機(jī)發(fā)送/ 接收的及互相之間交換的數(shù)據(jù)包;
2)在數(shù)據(jù)包發(fā)給應(yīng)用程序之前,按照自定義的規(guī)則將某些符合條件的數(shù)據(jù)包過濾掉;
3)在網(wǎng)絡(luò)上發(fā)送原始的數(shù)據(jù)包;
4)收集在網(wǎng)絡(luò)通信過程中的統(tǒng)計(jì)信息。
在優(yōu)化分析中,WinPcap技術(shù)用在數(shù)據(jù)采集子系統(tǒng)上。采集是在Windows server 2008操作系統(tǒng)平臺(tái)上,利用VS2010 開發(fā)工具實(shí)現(xiàn)的,其中使用WinPcap API接口截獲原始數(shù)據(jù)包。具體采集內(nèi)容包括:讀取服務(wù)器所有網(wǎng)絡(luò)接口信息以便用戶能自由選擇網(wǎng)絡(luò)接口;從數(shù)據(jù)鏈路上抓取流經(jīng)本網(wǎng)卡的所有網(wǎng)絡(luò)數(shù)據(jù)包;依據(jù)數(shù)據(jù)包相應(yīng)的協(xié)議類型分析得出該數(shù)據(jù)包的接入類型、訪問的域名、源IP地址、源端口,目的IP 地址,目的端口、數(shù)據(jù)包長(zhǎng)度,流量等相關(guān)信息; 將信息以文件的形式解析出來,存放到服務(wù)器上,供數(shù)據(jù)庫(kù)使用。
利用 WinPcap 驅(qū)動(dòng)程序的庫(kù)函數(shù),將網(wǎng)卡設(shè)置為混雜模式,從數(shù)據(jù)鏈路上采集流經(jīng)萬兆網(wǎng)卡的所有網(wǎng)絡(luò)數(shù)據(jù)包,然后對(duì)每個(gè)數(shù)據(jù)包按照其相應(yīng)的網(wǎng)絡(luò)協(xié)議來分析,獲取其包含的網(wǎng)絡(luò)信息,然后以文件的形式保存起來??紤]到網(wǎng)絡(luò)中數(shù)據(jù)包的流量大,速度快,為了避免在系統(tǒng)進(jìn)行分析和寫文件時(shí)前端抓包出現(xiàn)部分丟包現(xiàn)象,以及為了確保數(shù)據(jù)包抓取后的真實(shí)性,winpcap一般通過多線程來進(jìn)行結(jié)構(gòu)化的設(shè)計(jì),第一步執(zhí)行數(shù)據(jù)采集線程,第二步執(zhí)行解析線程,其中,全局?jǐn)?shù)據(jù)包緩沖隊(duì)列則為采集線程和解析線程共享以完成數(shù)據(jù)的交互和同步。為了實(shí)現(xiàn)數(shù)據(jù)的交互和同步,一般通過全局?jǐn)?shù)據(jù)包緩沖隊(duì)列,實(shí)現(xiàn)采集線程和解析線程共享。
使用WinPcap采集的Pcap文件基本格式為:文件頭 數(shù)據(jù)包頭數(shù)據(jù)報(bào)數(shù)據(jù)包頭數(shù)據(jù)報(bào)。圖是Pcap文件頭的結(jié)構(gòu)
其中,magic是32位的標(biāo)識(shí)位,這個(gè)標(biāo)識(shí)位的值是16進(jìn)制的 0xa1b2c3d4。Version_major是16位的主版本號(hào),默認(rèn)值為0x2。Version_minor是16位的副版本號(hào),默認(rèn)值為0x04。Thiszone是32位的區(qū)域時(shí)間,實(shí)際上該值并未使用,因此可以將該位設(shè)置為0。Sigfigs是32位的精確時(shí)間戳,實(shí)際上該值并未使用,因此可以將該值設(shè)置為0。Snaplen是32位的數(shù)據(jù)包最大長(zhǎng)度,該值設(shè)置所抓獲的數(shù)據(jù)包的最大長(zhǎng)度,如果所有數(shù)據(jù)包都要抓獲,將該值設(shè)置為65535;例如:想獲取數(shù)據(jù)包的前64字節(jié),可將該值設(shè)置為64。Linktype是32位的鏈路層類型, 數(shù)據(jù)包的鏈路層包頭決定了鏈路層的類型。其中caplen是32位的數(shù)據(jù)包長(zhǎng)度,標(biāo)識(shí)所抓獲的數(shù)據(jù)包保存在pcap文件中的實(shí)際長(zhǎng)度,以字節(jié)為單位。
WinPcap系統(tǒng)利用它自身提供的強(qiáng)大功能和豐富的網(wǎng)絡(luò)數(shù)據(jù)包處理函數(shù),可以實(shí)現(xiàn)對(duì)數(shù)據(jù)包處理,而且有嚴(yán)格要求,適用于對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行抓取及便于進(jìn)行分析
參考文獻(xiàn)
[1]陳松喬,任勝兵,王國(guó)軍.現(xiàn)代軟件工程.北京:清華大學(xué)出版社,2008,210-350
[2]George Fairbanks. 恰如其分的軟件架構(gòu).湖北:華中科技大學(xué)出版社,2013,340-395
[3]陳吉平. 構(gòu)建0racle高可用環(huán)境:企業(yè)級(jí)高可用數(shù)據(jù)庫(kù)架構(gòu)、實(shí)戰(zhàn)與經(jīng)驗(yàn)總結(jié). 北京:電子工業(yè)出版社,2008,245-302
[4]姜江.PowerDesigner數(shù)據(jù)庫(kù)系統(tǒng)分析設(shè)計(jì)與應(yīng)用. 北京:電子工業(yè)出版社,2004,78-99。
作者簡(jiǎn)介
魏煥新(1983-),男,湖南長(zhǎng)沙人,碩士研究生,湖南機(jī)電職業(yè)技術(shù)學(xué)院信息工程系講師,研究方向?yàn)橛?jì)算機(jī)應(yīng)用技術(shù)。