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