淺談WinPCap和計算機網(wǎng)絡(luò)協(xié)議
對于一些協(xié)議分析,我們可以借助一些軟件的力量。這里我們就將要為大家講解一下WinPCap以及計算機網(wǎng)絡(luò)協(xié)議等相關(guān)的內(nèi)容。那么就讓我們先來看看具體的WinPCap的工作原理:
系統(tǒng)的開發(fā)和應(yīng)用WinPcap支持Win32平臺上信息包的捕獲和網(wǎng)絡(luò)分析,它的主要思想來源于Unix系統(tǒng)中最著名的包截獲架構(gòu),目前已在許多領(lǐng)域得到了應(yīng)用,如網(wǎng)絡(luò)監(jiān)控、電子監(jiān)考等㈡103.WinPcap的基本結(jié)構(gòu)由3個模塊所組成.
(1)內(nèi)核級的網(wǎng)絡(luò)組包過濾器(Netgroup PacketFilter,NPF).運行于操作系統(tǒng)內(nèi)核中的驅(qū)動程序,直接與網(wǎng)卡驅(qū)動程序進行交互.它的主要功能是過濾數(shù)據(jù)包,在包上附加時間戳、數(shù)據(jù)包長度等信息.它直接從數(shù)據(jù)鏈路層取得數(shù)據(jù)包,不加修改地傳給運行在用戶層的應(yīng)用程序,也允許用戶發(fā)送原始數(shù)據(jù)包.
(2)低級動態(tài)鏈接庫(Packet.d11).用于在Win32平臺上為數(shù)據(jù)包驅(qū)動程序提供一個公共接口,把應(yīng)用程序和數(shù)據(jù)包監(jiān)聽設(shè)備驅(qū)動程序隔離開來,使得程序可以不加修改地在不同Windows系統(tǒng)上運行.
(3)高級系統(tǒng)無關(guān)庫(Wpcap.d11).工作在用戶級,和應(yīng)用程序編譯在一起,并使用Packet.dll提供的模塊,向應(yīng)用程序提供完善的監(jiān)聽接口.Wpcap.dll模塊與Unix系統(tǒng)下的BSD截獲架構(gòu)提供的Libpeap庫完全兼容,提供了一組功能強大而且跨平臺的函數(shù),利用這些函數(shù),可以不去關(guān)心適配器和操作系統(tǒng)類型.
系統(tǒng)的開發(fā)和應(yīng)用
WinPCap向上層的應(yīng)用程序提供了網(wǎng)絡(luò)監(jiān)聽的接口,通過這些接口,應(yīng)用程序可以捕獲網(wǎng)絡(luò)通信中發(fā)送或接收的數(shù)據(jù)包.因此,網(wǎng)絡(luò)協(xié)議實驗系統(tǒng)可以利用WinPCap捕獲在實際的網(wǎng)絡(luò)通信中產(chǎn)生的數(shù)據(jù)包,并以一定的方式展示出來.實驗系統(tǒng)的主要目的是要方便對計算機網(wǎng)絡(luò)協(xié)議的理解,因此針對計算機網(wǎng)絡(luò)的原理和協(xié)議,系統(tǒng)在以下2方面著重進行表現(xiàn).
(1)協(xié)議分層.目前實際應(yīng)用的計算機網(wǎng)絡(luò)都是基于TCPIP體系結(jié)構(gòu),整個網(wǎng)絡(luò)協(xié)議分為4個層次,從下到上依次為接口層、網(wǎng)際層、傳輸層和應(yīng)用層,每層又有若干協(xié)議.因此在捕獲數(shù)據(jù)包后按協(xié)議進行拆分,把不同的協(xié)議數(shù)據(jù)歸于相應(yīng)的協(xié)議分層結(jié)構(gòu)中,并把協(xié)議分層以層級的方式表示,從而把網(wǎng)絡(luò)體系結(jié)構(gòu)原理通過形象和具體的方式表示出來.
(2)協(xié)議格式.實驗系統(tǒng)的主要任務(wù)是將數(shù)據(jù)包中每層協(xié)議的數(shù)據(jù)提取出來,準確界定每個協(xié)議的起始和結(jié)束,把每個協(xié)議的數(shù)據(jù)標(biāo)示出來,系統(tǒng)可以根據(jù)通信數(shù)據(jù),自動分析各協(xié)議中每個字段的含義,必須根據(jù)具體的通信數(shù)據(jù),利用所學(xué)的相應(yīng)網(wǎng)絡(luò)協(xié)議知識進行分析.
為了了解協(xié)議分層結(jié)構(gòu)的具體實現(xiàn),本系統(tǒng)在開發(fā)時,采用整個數(shù)據(jù)包的數(shù)據(jù)完整連續(xù)顯示,各協(xié)議的數(shù)據(jù)用突出顏色著重顯示,通過觀察不同協(xié)議的數(shù)據(jù),可以了解計算機通信中,如何通過多層協(xié)議組裝成完整的通信數(shù)據(jù)包.
系統(tǒng)對通信數(shù)據(jù)的處理過程如圖2所示.首先利用WinPCap的pcap—findalldevs函數(shù)獲取計算機的網(wǎng)卡,并把可用的網(wǎng)卡(有的計算機可能有多個網(wǎng)卡)列表顯示出來供用戶選擇.系統(tǒng)提供操作界面讓用戶選擇網(wǎng)卡并設(shè)置通信數(shù)據(jù)包的過濾條件,系統(tǒng)根據(jù)用戶的設(shè)置用WinPCap的pcap—open—live函數(shù)打開相應(yīng)網(wǎng)卡接口,利用pcap—setfilter函數(shù)設(shè)置過濾條件,然后用pcap—dispatch或pcap—next—ex函數(shù)捕獲通信數(shù)據(jù)包,并把數(shù)據(jù)包列表顯示供用戶選擇.若用戶選擇某一數(shù)據(jù)包,系統(tǒng)對該數(shù)據(jù)包進行拆分,按協(xié)議分層的層次,以及各層協(xié)議的格式,界定并顯示不同協(xié)議的數(shù)據(jù).
系統(tǒng)提供實驗報告的一些輔助功能,如生成實驗報告的模板,根據(jù)選擇的計算機網(wǎng)絡(luò)協(xié)議的數(shù)據(jù),填人各字段的含義,生成并打印實驗報告.實驗系統(tǒng)的主界面如圖3所示.界面主要包括:
①網(wǎng)卡(網(wǎng)絡(luò)適配器)列表,在上部顯示;②捕獲的數(shù)據(jù)包列表,在界面的中間部分顯示,列表中顯示了數(shù)據(jù)包的部分關(guān)鍵信息;③各協(xié)議及其數(shù)據(jù),在最下部顯示,這又包括2部分,左邊部分顯示協(xié)議名稱,按協(xié)議分層的要求進行顯示,右部是以十六進制表示的數(shù)據(jù)包數(shù)據(jù),當(dāng)在左邊部分選擇協(xié)議名稱時,右部相應(yīng)協(xié)議的首部數(shù)據(jù)以紅色突出顯示.
該系統(tǒng)所占資源很少,因此可以在配置不高的計算機上正常運行,唯一的要求是計算機能夠連入計算機網(wǎng)絡(luò),即使不連入Intemet,在局域網(wǎng)環(huán)境中也能方便地開展實驗.實驗時不需要專門的服務(wù)器'也不需要對計算機之間通信作特別設(shè)置,安裝并運行該系統(tǒng),只需要正常使用計算機進行適當(dāng)?shù)木W(wǎng)絡(luò)操作,例如用瀏覽器瀏覽學(xué)校主頁,從而產(chǎn)生一定的網(wǎng)絡(luò)通信數(shù)據(jù)包,系統(tǒng)自動捕獲這些數(shù)據(jù)包并進行分析.系統(tǒng)的操作過程很簡單,容易掌握,非常適于非計算機專業(yè)的使用,該系統(tǒng)已經(jīng)在我校工業(yè)工程專業(yè)的"計算機網(wǎng)絡(luò)技術(shù)"課程的實驗中使用,效果良好.
結(jié)語
針對高校計算機網(wǎng)絡(luò)課程的實驗,開發(fā)了網(wǎng)絡(luò)協(xié)議分析實驗系統(tǒng),以解決網(wǎng)絡(luò)設(shè)備昂貴、更新?lián)Q代快,教學(xué)單位無法拿出足夠資金配置專門網(wǎng)絡(luò)實驗室,造成學(xué)生實驗不足甚至無法實驗,從而嚴重影響到教學(xué)質(zhì)量的問題.利用該系統(tǒng)可以使學(xué)生了解計算機網(wǎng)絡(luò)協(xié)議分層及其實現(xiàn),并開展以太網(wǎng)幀格式分析、IP(目前主要是IPv4)數(shù)據(jù)包格式分析、IP控制管理協(xié)議一ICMP報文格式分析、TCP和UDP數(shù)據(jù)包分析、Hrll'P協(xié)議分析等實驗教學(xué)內(nèi)容.在計算機網(wǎng)絡(luò)課程的教學(xué)和實驗過程中使用網(wǎng)絡(luò)協(xié)議實驗軟件系統(tǒng),可以彌補網(wǎng)絡(luò)原理教學(xué)過程抽象、枯燥的缺點,可以形象化地展示真實網(wǎng)絡(luò)工作的過程,使學(xué)生更深入地理解計算機網(wǎng)絡(luò)和互聯(lián)網(wǎng).