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