




已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
畢業(yè)設(shè)計題目基于網(wǎng)絡(luò)數(shù)據(jù)包分析技術(shù)的研究基于網(wǎng)絡(luò)數(shù)據(jù)包分析技術(shù)的研究摘要隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展和人們需求的不斷提高,網(wǎng)絡(luò)安全問題越來越嚴重,造成的損失非常巨大,為解決網(wǎng)絡(luò)安全問題而投入的資金也越來越多。本文通過使用ETHEREAL捕捉實時網(wǎng)絡(luò)數(shù)據(jù)包,并根據(jù)網(wǎng)絡(luò)協(xié)議分析流程對數(shù)據(jù)包在TCP/IP各層協(xié)議數(shù)據(jù)進行解包分析,讓網(wǎng)絡(luò)研究人員對數(shù)據(jù)包的認識上升到一個感性的層面,為網(wǎng)絡(luò)協(xié)議分析提供技術(shù)手段。最后根據(jù)ETHEREAL的工作原理,使用了WINDOWS平臺下開源的網(wǎng)絡(luò)數(shù)據(jù)包捕獲開發(fā)庫WINPCAP,用VISUALC編寫一個簡單的數(shù)據(jù)包捕獲與分析軟件。關(guān)鍵詞網(wǎng)絡(luò)數(shù)據(jù)包網(wǎng)絡(luò)協(xié)議分析還原BASEDONTHESTUDYOFNETWORKPACKETANALYSISTECHNOLOGYAUTHORSHANXIAOQIANADVISORCHENXINFANGABSTRACTWITHTHERAPIDDEVELOPMENTOFNETWORKTECHNOLOGYANDTHEINCREASINGDEMANDOFPEOPLE,THENETWORKSECURITYPROBLEMISBECOMINGMOREANDMORESERIOUS,WITHHUGELOSSES,THEFUNDSINPUTTOSOLVETHENETWORKSECURITYAREINCREASINGLYUSINGETHEREALTOCAPTUREREALTIMENETWORKDATAPACKET,UNPACKINGANALYSISDATAPACKETSINTCP/IPEACHLAYERDATAACCORDINGTOANALYSESTHEPROCESSOFNETWORKPROTOCOL,NETWORKRESEARCHERSTOUNDERSTNDTHEDATAPACKETTOAPERCEPTUALLEVEL,PROVIDETHETECHNICALMEANSFORTHENETWORKPROTOCOLANALYSISFINALLY,FINALLY,ACCORDINGTOTHEWORKINGPRINCIPLEOFETHEREAL,USINGWINPCAPOFLIBRARYNETWORKDATAPACKETCAPTUREDEVELOPINPLATFORMOFWINDOWSOPENSOURCE,WITHVISUALCTOWRITEASIMPLEDATAPACKETCAPTUREANDANALYSISSOFTWAREKEYWORDSNETWORKPACKETSNETWORKPROTOCOLANALYSISREDUCTION目錄引言11網(wǎng)絡(luò)的基本概念211OSI網(wǎng)絡(luò)參考模型212TCP/IP網(wǎng)絡(luò)42網(wǎng)絡(luò)協(xié)議分析技術(shù)521軟件ETHEREAL簡介522利用ETHEREAL捕獲數(shù)據(jù)包523利用ETHEREAL對捕獲數(shù)據(jù)包進行分析73網(wǎng)絡(luò)協(xié)議分析程序的設(shè)計1831應(yīng)用技術(shù)1832設(shè)計思路2433主要函數(shù)說明264網(wǎng)絡(luò)協(xié)議分析程序的實現(xiàn)3041界面制作3042開發(fā)代碼335程序的測試5451系統(tǒng)的測試5452測試用例和結(jié)果5453系統(tǒng)實現(xiàn)5654系統(tǒng)性能分析58結(jié)論58致謝59參考文獻60引言網(wǎng)絡(luò)是信息傳輸、接收、共享的虛擬平臺,通過它把各個點、面、體的信息聯(lián)系到一起,從而實現(xiàn)這些資源的共享。它是人們信息交流使用的一個工具。作為工具,它一定會越來越好用的。功能會越來越多,內(nèi)容也會越來越豐富。但如果沒有限制,就會給用戶和社會帶來很多不良影響。所以對網(wǎng)絡(luò)進行合理的監(jiān)控就非常重要。網(wǎng)絡(luò)數(shù)據(jù)的分析是把先捕獲網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包,通過網(wǎng)絡(luò)協(xié)議進行解析,再還原數(shù)據(jù)包的信息來監(jiān)控網(wǎng)絡(luò)傳輸數(shù)據(jù),從而了解網(wǎng)絡(luò)的實際運行情況。通過這些網(wǎng)絡(luò)信息就可以了解故障發(fā)生的地點及其原因。本文的設(shè)計目的是完成基于WINDOWS平臺的網(wǎng)絡(luò)數(shù)據(jù)包分析系統(tǒng),它利用WINSOCK實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的捕捉,并且結(jié)合相關(guān)的網(wǎng)絡(luò)協(xié)議對數(shù)據(jù)包進行分析、解析、還原來實現(xiàn)對網(wǎng)絡(luò)故障進行分析等功能。論文第一章介紹了網(wǎng)絡(luò)的基本概念,介紹網(wǎng)絡(luò)參考模型、TCP/IP協(xié)議、TCP/IP網(wǎng)絡(luò);第二章介紹了ETHREAL軟件的安裝、啟動,并用它進行數(shù)據(jù)包捕獲和分析的實驗;第三章介紹了根據(jù)ETHEREAL的工作原理,用VISUALC編寫一個簡單的數(shù)據(jù)包捕獲與分析軟件網(wǎng)絡(luò)探測程序的系統(tǒng)設(shè)計、實現(xiàn)和工作流程;第四章介紹了網(wǎng)絡(luò)探測程序的一些測試結(jié)果。1網(wǎng)絡(luò)的基本概念11OSI網(wǎng)絡(luò)參考模型OSI(OPENSYSTEMINTERCONNECT)開放式系統(tǒng)互聯(lián)。一般都叫OSI參考模型,是ISO(國際標(biāo)準化組織)組織在1985年研究的網(wǎng)絡(luò)互聯(lián)模型。國際標(biāo)準化組織ISO發(fā)布的最著名的標(biāo)準是ISO/IIEC7498,又稱為X200協(xié)議。這個結(jié)構(gòu)把網(wǎng)絡(luò)互連的七層框架給定義了,并且規(guī)定每一層的功能,實現(xiàn)了開放系統(tǒng)環(huán)境中的互連性、互操作性和應(yīng)用的可移植性1。OSI的服務(wù)定義不涉及接口是怎么實現(xiàn)的,它詳細說明了各層所提供的服務(wù)。某一層的服務(wù)它通過接口提供給更高一層。并且各種服務(wù)定義也把層與層之間的接口和各層的所使用的原語定義了。因為協(xié)議的規(guī)程說明很有最嚴格的約束,所以O(shè)SI標(biāo)準中的各種協(xié)議把應(yīng)當(dāng)發(fā)送怎樣的控制信息,還有用怎樣的過程來解釋這個控制信息給定義了。ISO/OSI參考模型只用來協(xié)調(diào)進程間通信標(biāo)準的制定。在OSI范圍內(nèi),各種的協(xié)議只有在被實現(xiàn)的并且與OSI的協(xié)議相一致,才能互連。所以在網(wǎng)絡(luò)剛出現(xiàn)的時,雖然很多公司都擁有了網(wǎng)絡(luò)技術(shù),并且公司內(nèi)部的計算機已經(jīng)可以相互連接。但是卻不能與其它公司連接。這是因為對方不能理解計算機之間相互傳輸?shù)男畔?,沒有一個統(tǒng)一的規(guī)范,所以不能互聯(lián)。OSI模型如表11,12所示表11OSI模型應(yīng)用層SMB,NCP,TELNET,HTTP,F(xiàn)TP,SMTP表示層JPG,SMBNEGOTIATION,GIF,MPEG,ASN1會話層NETBIOS,TCP3WAYHANDSHAKE傳輸層TCP,SPX網(wǎng)絡(luò)層IP,IPX,DDP數(shù)據(jù)鏈路層ETHERNET,F(xiàn)RAMERELAY,TOKENRING,F(xiàn)DDI物理層X21,RS232,DSI,DS3OSI模型用途還是很廣泛。比如交換機、路由器、集線器等網(wǎng)絡(luò)設(shè)備的設(shè)計都是參照OSI模型設(shè)計的。表12各個層的意義物理層PHYSICALLAYER是OSI模型的最低的一層,它利用傳輸介質(zhì)為數(shù)據(jù)鏈路層提供物理連接,也就是物理層確保原始數(shù)據(jù)可以使各種物理媒體傳輸包括信號線的功能、數(shù)據(jù)傳輸速率、物理連接器規(guī)格、“0”和“1”信號的電平表示及其相關(guān)的屬性等數(shù)據(jù)鏈路層DATALINKLAYER是OSI模型的第二層,位于物理層和網(wǎng)絡(luò)層之間,解決兩個相鄰結(jié)點之間的通信傳輸,為網(wǎng)絡(luò)層提供服務(wù)的數(shù)據(jù)鏈路層還可以協(xié)調(diào)收發(fā)雙方的進行流量控制,以防止沖器溢出及線路阻塞網(wǎng)絡(luò)層NETWORKLAYER是OSI模型的第三層,為傳輸層提供服務(wù)的。網(wǎng)絡(luò)層的主要作用是通過網(wǎng)絡(luò)連接交換傳輸層發(fā)出的實體數(shù)據(jù)。交換過程中,選擇合適的傳輸路徑,解決網(wǎng)絡(luò)中出現(xiàn)的局部擁擠或全面的阻塞。此外,網(wǎng)絡(luò)層還應(yīng)有記賬功能,一邊通過網(wǎng)絡(luò)中交換的分組或字符數(shù)、位數(shù)收取費用。當(dāng)傳輸?shù)臄?shù)據(jù)跨越一個網(wǎng)絡(luò)邊界時,網(wǎng)絡(luò)層根據(jù)不同的分組長度、尋址方式、通信協(xié)議進行交換,使得異構(gòu)網(wǎng)絡(luò)能夠互相通信傳輸層TRANSPORTLAYER是OSI模型中最重要,最關(guān)鍵的一層,是唯一負責(zé)總體的數(shù)據(jù)傳輸和數(shù)據(jù)控制的一層。傳輸層提供端到端的交換數(shù)據(jù)的機制,檢查分組編號與次序。傳輸層對其上三層如會話層等,提供可靠的傳輸服務(wù),對網(wǎng)絡(luò)層提供可靠的目的地站點信息主要功能為端到端連接提供傳輸服務(wù)這種傳輸服務(wù)分為可靠和不可靠的,其中TCP是典型的可靠傳輸,而UDP則是不可靠傳輸為端到端連接提供流量控制,差錯控制,服務(wù)質(zhì)量等管理服務(wù)會話層SESSIONLAYER是OSI模型的第五層,為兩個會話層實體進行會話的管理服務(wù)表示層PRESENTATIONLAYER是OSI模型的第六層,處理流經(jīng)結(jié)點的數(shù)據(jù)編碼的表示方式,使一個系統(tǒng)應(yīng)用層可以讀出另一系統(tǒng)的應(yīng)用層的發(fā)出信息。表示層可提供的轉(zhuǎn)換功能有數(shù)據(jù)壓縮和加密應(yīng)用層APPLICATIONLAYER是OSI參考模型的最高層,也是網(wǎng)絡(luò)和用戶的接口。它通過應(yīng)用程序來完成網(wǎng)絡(luò)用戶的需求,如收發(fā)電子郵件、文件傳輸?shù)鹊?2TCP/IP網(wǎng)絡(luò)網(wǎng)絡(luò)協(xié)議2即網(wǎng)絡(luò)中(包括互聯(lián)網(wǎng))傳遞、管理信息的一些規(guī)范。如同人與人之間相互交流是需要遵循一定的規(guī)矩一樣,計算機之間的相互通信需要共同遵守一定的規(guī)則,這些規(guī)則就稱為網(wǎng)絡(luò)協(xié)議。網(wǎng)絡(luò)上的所有通信設(shè)備都是由它規(guī)范的,它是一種網(wǎng)絡(luò)通信協(xié)議,特別是兩個主機之間數(shù)據(jù)的往來格式和傳送方式。普通用戶雖然不了解網(wǎng)絡(luò)協(xié)議的整個結(jié)構(gòu),但是知道IP的地址格式,就可網(wǎng)絡(luò)通信??偨Y(jié)TCP/IP結(jié)構(gòu)對應(yīng)OSI如圖13。表13TCP/IP結(jié)構(gòu)對應(yīng)OSIOSI中的層功能TCP/IP協(xié)議族應(yīng)用層文件傳輸,電子郵件,文件服務(wù),虛擬終端TFTP,HTTP,SNMP,F(xiàn)TP,SMTP,DNS,TELNET等等表示層翻譯、加密、壓縮沒有協(xié)議會話層對話控制、建立同步點(續(xù)傳)沒有協(xié)議傳輸層端口尋址、分段重組、流量、差錯控制TCP,UDP網(wǎng)絡(luò)層邏輯尋址、路由選擇IP,ICMP,OSPF,EIGRP,IGMP,RIP,ARP,RARP數(shù)據(jù)鏈路層成幀、物理尋址、流量,差錯,接入控制SLIP,CSLIP,PPP,MTU物理層設(shè)置網(wǎng)絡(luò)拓撲結(jié)構(gòu)、比特傳輸、位同步ISO2110,IEEE802,IEEE8022網(wǎng)絡(luò)層中的協(xié)議主要有IP、IGMP、ICMP等,因為IP協(xié)議模塊被包含了,所以是所有基于TCP/IP協(xié)議網(wǎng)絡(luò)的核心,在網(wǎng)絡(luò)層中,IP模塊完成大部分功能,ICMP和IGMP以及其他支持IP的協(xié)議幫助IP完成特定的任務(wù)3。傳輸層上的主要協(xié)議是TCP和UDP,正如網(wǎng)絡(luò)層控制著主機之間的數(shù)據(jù)傳遞,傳輸層控制著那些將要進入網(wǎng)絡(luò)層的數(shù)據(jù),兩個協(xié)議就是它管理這些數(shù)據(jù)的兩種方式TCP是一個基于連接的協(xié)議;UDP則是面向無連接服務(wù)的管理方式的協(xié)議3。2網(wǎng)絡(luò)協(xié)議分析技術(shù)21軟件ETHEREAL簡介ETHEREAL4(ETHEREALANETWORKPACKETSNIFFINGTOOL)是當(dāng)前較為流行的一種計算機網(wǎng)絡(luò)調(diào)試和數(shù)據(jù)包嗅探軟件,ETHEREAL基本和TCPDUMP一樣,但ETHEREAL還具有設(shè)計完美的GUI,許多分類信息和過濾選項,用戶通過ETHEREAL,同時將網(wǎng)卡是混合模式,可以了解到所有通信流量,ETHEREAL應(yīng)用于故障修復(fù)、分析、軟件和協(xié)議開發(fā)以及教育領(lǐng)域,用戶對協(xié)議分析器所希望的所有特征它都有,如圖21所示。圖21ETHEREAL簡介ETHEREAL主要具有以下特征在實時時間內(nèi),從網(wǎng)絡(luò)連接處捕獲數(shù)據(jù),或者從被捕獲文件處讀取數(shù)據(jù);可以讀取從TCPDUMP(LIBPCAP)、SNIFFERTM專業(yè)版、網(wǎng)絡(luò)通用嗅探器、SHOMITI/FINISAR測試員等處捕獲的文件,也能從LUCENT/ASCENDWAN、TOSHIBAISDN路由器中讀取跟蹤報告,還能從VMS的TCPIP讀取輸出文本和DBSETHERWATCH4。通過EDITCAP程序的命令行交換機;利用GUI或TTY模式TETHEREAL程序,可以訪問被捕獲的網(wǎng)絡(luò)數(shù)據(jù);捕獲文件可以被修改;分割602協(xié)議;把輸出文件保存或打印為純文本或者POSTSCRIPT格式;顯示過濾器選擇用高亮區(qū)和顏色包摘要信息;網(wǎng)絡(luò)跟蹤報告可以保存到磁盤中4。22利用ETHEREAL捕獲數(shù)據(jù)包如表21所示。表21具體步驟第一步安裝ETHEREAL第二步單擊CAPTURE下的OPTION菜單,打開捕獲選項對話框,設(shè)置好捕捉接口(INTERFACE)和過濾器CAPTUREFILTER,設(shè)置混雜模式(PROMISCUOUSMODE)選項,其他選項可采用默認設(shè)置如圖22第三步單擊START按鈕即可實時截獲數(shù)據(jù)包5第四步用ETHEREAL的捕獲窗口如圖23,捕獲數(shù)據(jù)包的部分截圖見圖24。所截獲的數(shù)據(jù)包分別在包列表PACKLIST、包細節(jié)(PACKETDETAILS)與包字節(jié)PACKEBYTES三欄窗口中顯示。其中上欄的包列表窗口按截獲的時間順序顯示出數(shù)據(jù)包的基本信息編號(代表收到數(shù)據(jù)包的次序)、時間、源地址、目的地址協(xié)議名稱以及關(guān)于此數(shù)據(jù)包的摘要信息;中間欄的包細節(jié)窗口以樹形顯示當(dāng)前數(shù)據(jù)包在各協(xié)議層的封裝細節(jié),包括首部和數(shù)據(jù);下欄的包字節(jié)窗口則以十六進制和ASCII碼顯示被截獲數(shù)據(jù)包的詳細內(nèi)容左邊一欄顯示偏移量,中間一欄顯示十六進制數(shù)值,右邊一欄顯示解碼后相對應(yīng)的字符(控制字符示為1個點)5圖22ETHEREAL的設(shè)置圖23捕獲狀態(tài)窗口圖24捕獲的數(shù)據(jù)包23利用ETHEREAL對捕獲數(shù)據(jù)包進行分析ETHEREAL作為較為流行的一款計算機網(wǎng)絡(luò)調(diào)試和數(shù)據(jù)包嗅探軟件,可以用來監(jiān)視所有在網(wǎng)絡(luò)上被傳送的包,并分析其內(nèi)容的程序。他經(jīng)常用來檢查網(wǎng)絡(luò)工作情況,或是用來發(fā)現(xiàn)網(wǎng)絡(luò)程序的BUGS。通過ETHEREAL對TCP、FTP、UDP、SMTP等常用協(xié)議進行分析,有益于網(wǎng)絡(luò)故障的修復(fù)分析和軟件和協(xié)議開發(fā)。231ARP協(xié)議分析實驗(1)ARP協(xié)議分析ARP,全稱ADDRESSRESOLUTIONPROTOCOL,地址解析協(xié)議它工作在數(shù)據(jù)鏈路層,在本層和硬件接口聯(lián)系,同時對上壓供服務(wù)。在以太網(wǎng)中,兩臺主機進行直接通信,必須要知道目標(biāo)主機的MAC地址,但目標(biāo)MAC地址怎么得到的呢它是通過地址解析協(xié)議獲得的如圖25,將網(wǎng)絡(luò)中的IP地址解析為的硬件地址MAC地址就是因為ARP協(xié)議,因為ARP協(xié)議經(jīng)常被用,所以我們用ETHEREAL抓取網(wǎng)絡(luò)中的ARP數(shù)據(jù)包如圖26,我們可以看到一些捕到的ARP的數(shù)據(jù)包,比如第1個ARP數(shù)據(jù)包WHOHAS102823140TELL102823250,通過IP地址找對方的MAC地址,ARP協(xié)議的結(jié)構(gòu)如圖27,對比圖28中框部分與圖27中框部分,我們可以看到兩者是相同的,通過ARP的結(jié)構(gòu)有更深刻認識14。圖25ARP捕獲狀態(tài)窗口圖26捕獲的ARP數(shù)據(jù)包以太網(wǎng)目的地址以太網(wǎng)源地址幀類型協(xié)議類型硬件類型OP發(fā)送端以太網(wǎng)地址發(fā)送端IP地址目的以太網(wǎng)地址目的IP地址硬件地址長度協(xié)議地址長度圖27ARP報文結(jié)構(gòu)圖28ARP結(jié)構(gòu)232分析TCP/IP機制的實驗TCP是一種面向連接的、可靠的傳輸層協(xié)議,TCP數(shù)據(jù)傳只有連接建立后才可進行數(shù)據(jù)傳輸需要通過在客戶端和服務(wù)端建立特定的虛電路連接來完成,該過程通常被稱為“三次握手”,如圖29,即發(fā)送方先發(fā)送連接請求,然后接受方進行連接確認,最后發(fā)送方對接受方再次進確認。下面就以ETHEREAL捕獲的建TCP連接過程的三個數(shù)據(jù)包為例對TCP/IP協(xié)議進行分析。SYN,SEQXSYN,SEQY,ACKX1ACKY1圖28三次握手示意圖第一步ETHEREAL要保持捕獲狀態(tài)如圖210,過濾器設(shè)置為TCP,這樣就可以只捕獲TCP協(xié)議的數(shù)據(jù)包。圖210TCP捕獲狀態(tài)窗口第二步保持捕獲的狀態(tài),打開HTTP/WWW163COM網(wǎng)頁,這樣就捕獲到在訪問網(wǎng)頁時建立連接的TCP數(shù)據(jù)包如圖211。圖211TCP捕獲狀態(tài)窗口第三步點擊停止,如圖212顯示的就是捕獲的前4個數(shù)據(jù)包,可以看到1至3號數(shù)據(jù)包是連接建立過程,連接建立完成以后4號數(shù)據(jù)包開始傳輸數(shù)據(jù)。圖212捕獲到的數(shù)據(jù)包客戶端發(fā)送連接請求,從圖213可以看出,該數(shù)據(jù)包封裝了三個頭信息以太網(wǎng)幀、IP數(shù)據(jù)報(首部格式如圖213)和TCP報文段固定首部格式如圖214,具體數(shù)據(jù)如表215表表215具體數(shù)據(jù)接收方MAC00030F000C4B源主機MAC00030DA40F72TYPE0X0800版本號VERSION4首部HEADLENGTH20BYTES服務(wù)類型SERVICESFIELD0X00數(shù)據(jù)報總長TOTALLENGTH48標(biāo)識IDENTIFICATION0X96B53標(biāo)志FLAGS0X04段偏移FRAGMENOFFSET0生存時間TIMETOLIVE128TCP報文段PROTOCOL0X06頭部校驗和0X1206表示正確請求主機的IP地址為101023226,目的主機的IP地址為5824824540,在運輸層,主要數(shù)據(jù)對象是TCP報文。在以上的TCP報文段中,具體數(shù)據(jù)如表216表216具體數(shù)據(jù)目的端口號DESTINATIONPORT80請求方源端口號SOURCEPORT1615HTTP協(xié)議的保留端口號0頭部長度HEADERLENGTH28BYTES標(biāo)志位FLAGSOX0002窗口字段WINDOWSIZE的最大字節(jié)數(shù)65535校驗和CHECKSUM0XF6A表示正確15序列號SEQ是本次連接的初始序號,因此在連接請求時相對初始值是0,其實際值是246815A1;確認號是00000070,指示ACK0表示忽略確認號,SYN1表示正在進行連接請求,在連接請求中,SYN1、ACK0,連接響應(yīng)時,SYN1、ACK1;PSH為015。比特04816192431版本首部長度總長度服務(wù)類型標(biāo)識標(biāo)志片偏移生存時間協(xié)議首部檢驗和源地址目標(biāo)地址圖213IP數(shù)據(jù)報首部格式比特08162431目的端口確認號源端口序號數(shù)據(jù)偏移保留URGACKPSHPSTSYNFIN窗口檢驗和緊急指針圖213TCP報文段固定首部格式字節(jié)662461054目的MAC地址源MAC地址類型數(shù)據(jù)FCS圖217以太網(wǎng)V2MAC幀格式圖218發(fā)送方發(fā)出的連接請求數(shù)據(jù)包如圖218是對此數(shù)據(jù)包的具體分析,了解到服務(wù)端5824824540發(fā)至客戶端101023226。在響應(yīng)TCP報文段中,SEQ為EF84C89B,確認號為246817A2,標(biāo)志位為0X0010,指示ACK標(biāo)志為1,表明確認號有效、SYN仍然為1。圖219服務(wù)端響應(yīng)數(shù)據(jù)包如圖220為客戶端確認數(shù)據(jù)包,數(shù)據(jù)包由客戶端101023226發(fā)送給服務(wù)端5824824540,序列號為246815A2,本次確認號為73FF17FF,標(biāo)志位OX0010,指示ACK標(biāo)志為1表明確認號有效,SYN置為0表示連接建立結(jié)束。圖220客戶端確認數(shù)據(jù)包建立了完整的TCP連接后全雙工模式的數(shù)據(jù)傳輸過程開始了。通過上述利用ETHEREAL對TCP連接過程的三個數(shù)據(jù)包的分析,可以了解TCP/IP協(xié)議的三次握手過程。233UDP協(xié)議的實驗UDP是USERDATAGRAMPROTOCOL的簡稱,中文名是用戶數(shù)據(jù)包協(xié)議,是OSI參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)6。其特點UDP是一個無連接協(xié)議,當(dāng)傳送時就可以從應(yīng)用程序的數(shù)據(jù)獲得,并且盡快地把它放到網(wǎng)絡(luò)上面;一臺服務(wù)機可同時向多個客戶機傳輸相同的消息,是因為傳輸數(shù)據(jù)不建立連接,也就不需要維護連接狀態(tài)了;UDP信息包的標(biāo)題只有8個字節(jié),相對TCP的20個字節(jié)信息包的額外開銷很??;吞吐量只受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶寬、源端和終端主機性能的限制;UDP不保證可靠交付,不需要維持復(fù)雜的鏈接狀態(tài)表這里面有許多參數(shù);UDP是面向報文的,應(yīng)用程序需要選擇合適的報文大小6。圖221抓包后主界面大量UDP協(xié)議原始框表示出了分組中包含的每個數(shù)據(jù)的字節(jié),我們可以看出最原始的傳輸數(shù)據(jù)。方框右邊是ASCII碼,左邊是十六進制的數(shù)據(jù)。報文的二進制碼就是發(fā)送的最原始內(nèi)容。選擇其中第8個包進行分析。圖222第8個FRAME表223數(shù)據(jù)解析第1行現(xiàn)在此貞基本信息。名稱,692字節(jié)第2行顯示到達時間20100702第3、4行現(xiàn)在使用時間第6、7行現(xiàn)在貞長度和捕獲長度,都是692字節(jié)第8、9、10行現(xiàn)在此貞類型,為UDP類型圖224以太網(wǎng)圖225顯示了此貞的源地址和目的地址,分別為第3行,第7行。另外說明了此貞是個單波貞“THISISAUNICASTFRAME”。圖225INTERNET協(xié)議表226具體數(shù)據(jù)分析第1行給出了源地址和目的地址,分別為602124012;2185615886第2行VERSION4,表示IP協(xié)議的版本號為4,即IPV4,占4位,HEADERLENGTH20BYTES,表示IP包頭的總長度為20個字節(jié),該部分占4個位。所以第一行合起來就是一個字節(jié)第3行給出頭長度,20字節(jié)第6行IDENTIFICATION40793,表示IP包識別號為40793。該部分占兩個字節(jié)第7行FLAGS,表示片標(biāo)志,占3個位。各位含義分別為第一個“0”不用,第二位為不可分片位標(biāo)志位,此處值為“1”表示該數(shù)據(jù)表禁制分片。第三位為是否最后一段標(biāo)志位,此處“0”表示最后一段第10行給出貞類型,為UDP第11行HEADERCHECKSUN0XF43CCORRECT,表示IP包頭校驗和為0XF43C,括號內(nèi)的CORRECT表示此IP數(shù)據(jù)包是正確的,沒有被非法修改過。該部分占兩字節(jié)圖227用戶數(shù)據(jù)報協(xié)議表228具體數(shù)據(jù)分析第2行源端口13237。2字節(jié),源端口號,即發(fā)送這個TCP包的計算機所使用的端口號第3行目的端口10611。2字節(jié),目標(biāo)端口號,即接受這個TCP包計算機所使用的端口號第4行長度658字節(jié)第5行CHECKSUM檢驗和,校驗和。在數(shù)據(jù)處理和數(shù)據(jù)通信領(lǐng)域中,用于校驗?zāi)康牡囊唤M數(shù)據(jù)項的和。這些數(shù)據(jù)項可以是數(shù)字或在計算檢驗和過程中看作數(shù)字的其它字符串244ICMP協(xié)議的實驗ICMP是(INTERNETCONTROLMESSAGEPROTOCOL)INTERNET控制報文協(xié)議。它是TCP/IP協(xié)議族的一個子協(xié)議,屬于網(wǎng)絡(luò)層協(xié)議,主要用于在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態(tài)信息等,當(dāng)遇到IP數(shù)據(jù)無法訪問目標(biāo)、IP路由器無法按當(dāng)前的傳輸速率轉(zhuǎn)發(fā)數(shù)據(jù)包等情況時,會自動發(fā)送ICMP消息,ICMP提供一致易懂的出錯報告信息,發(fā)送的出錯報文返回到發(fā)送原數(shù)據(jù)的設(shè)備,因為只有發(fā)送設(shè)備才是出錯報文的邏輯接受者,發(fā)送設(shè)備隨后可根據(jù)ICMP報文確定發(fā)生錯誤的類型,并確定如何才能更好地重發(fā)失敗的數(shù)據(jù)報1024。圖229窗口中的ICMP協(xié)議(請求)圖230窗口中的ICMP協(xié)議(應(yīng)答)從上面兩圖和前面分析的協(xié)議區(qū)別是增加了TYPE0ECHOPINGREQUEST/REPLY,表示了PING類型和代碼。圖231網(wǎng)際協(xié)議表231數(shù)據(jù)分析第1行給出了源地址和目的地址,分別為602124012;221202136137第2行VERSION4,表示IP協(xié)議的版本號為4,即IPV4,占4位,HEADERLENGTH20BYTES,表示IP包頭的總長度為20個字節(jié),該部分占4個位。所以第一行合起來就是一個字節(jié)第3行給出包頭長度,68字節(jié)第6行IDENTIFICATION40853,表示IP包識別號為40853。該部分占兩個字節(jié)第7行FLAGS,表示片標(biāo)志,占3個位。各位含義分別為第一個“0”不用,第二位為不可分片位標(biāo)志位,此處值為“1”表示該數(shù)據(jù)表禁制分片。第三位為是否最后一段標(biāo)志位,此處“0”表示最后一段第10行給出貞類型,為ICMP第11行HEADERCHECKSUN0X8AECORRECT,表示IP包頭校驗和為0X8AE,括號內(nèi)的CORRECT表示此IP數(shù)據(jù)包是正確的,沒有被非法修改過。該部分占兩字節(jié)3網(wǎng)絡(luò)協(xié)議分析程序的設(shè)計31應(yīng)用技術(shù)311VISUALC簡介VISUALC即VC,微軟公司出品的高級可視化計算機程序開發(fā)工具。他提供了一套開發(fā)環(huán)境VISUALSTUDIO,VISUALSTUDIO本身包括一個文本編輯器、資源編輯器、工程編譯工具、一個增量連接器、源代碼瀏覽器、集成調(diào)試工具,以及一套聯(lián)機文檔,借助這套工具,用戶可以隨心所欲地開發(fā)出各種功能的應(yīng)用軟件以及借助OPENGL和DIRECTX技術(shù)開發(fā)游戲軟件。VISUALC可以識別C/C并編譯,支持MFC類庫,并提供了一系列模板,常用的MFCAPPWIZARDEXE/DLL,MFCACTIVEXCONTROLWIZARD,WIN32APPLICATION,WIN32CONSOLEAPPLICATION,ATLCOMAPPWIZARD,這種可視化編程環(huán)境可以令程序員花更多精力在程序功能的實現(xiàn)上,而不是底層的建設(shè)上,這就大大加快了程序開發(fā)速度和效率,這也是VISUALC一個顯著的特點,利用VISUALC編譯出的程序空間小,運行快,比其他的編譯工具編譯出的軟件占據(jù)較多優(yōu)勢11。312WINPCAP簡介WINPCAP是一個在WINDOWS操作系統(tǒng)下的免費、公開的用于直接訪問網(wǎng)絡(luò)的開發(fā)工具包(編程API)。大多數(shù)WINDOWS網(wǎng)絡(luò)應(yīng)用程序都是通過WINSOCKAPI(WINDOWS套接口)這類高級編程接口訪問網(wǎng)絡(luò)的。這種方法只能可以在網(wǎng)絡(luò)上進行簡單的數(shù)據(jù)傳送,不可以滿足實際的需要。有些程序希望繞過TCP/IP協(xié)議棧,直接處理底層網(wǎng)絡(luò)中的通信數(shù)據(jù),它們需要對網(wǎng)絡(luò)進行底層進行直接訪問,即在沒有類似協(xié)議棧(TCP/IP協(xié)議棧)的實體介入條件下對網(wǎng)絡(luò)進行原始訪問?;赪INSOCKAPI編程,應(yīng)用程序是通過調(diào)用操作系統(tǒng)提供的編程接口訪問TCP/IP協(xié)議棧實現(xiàn)網(wǎng)絡(luò)通信的。基于WINPCAP編程,網(wǎng)絡(luò)程序?qū)嶋H上是繞開操作系統(tǒng)的TCP/IP協(xié)議棧直接通過底層網(wǎng)絡(luò)發(fā)送數(shù)據(jù),因此網(wǎng)絡(luò)程序可以實現(xiàn)一些更低級、更靈活的功能。WINPCAP提供了一個強大的編程接口,它很容易地在各個操作系統(tǒng)之間進行移植和方便開發(fā)。很多不同的工具軟件都使用WINPCAP進行網(wǎng)絡(luò)安全監(jiān)控,網(wǎng)絡(luò)分析和故障排除等方面。WINPCAP特別適用于網(wǎng)絡(luò)及協(xié)議分析,網(wǎng)絡(luò)監(jiān)控,NIDS等經(jīng)典領(lǐng)域。但是WINPCAP也不是萬能,因為它不利用主機的如TCP/IP協(xié)議去接收和發(fā)送數(shù)據(jù)包,所以它一定不可以阻塞,一臺主機中各程序之間的通信數(shù)據(jù)是不可以同時處理,物理線路上的數(shù)據(jù)報只能被它感受到,因此QOS調(diào)度和個人防火墻等是不能用它。(1)利用WINPCAP進行網(wǎng)絡(luò)數(shù)據(jù)包的捕獲和過濾的步驟表31具體步驟第一步打開網(wǎng)卡,并設(shè)為混雜模式第二步回調(diào)函數(shù)NETWORKTAP在得到監(jiān)聽命令后,從網(wǎng)絡(luò)設(shè)備驅(qū)動程序處收集數(shù)據(jù)包把監(jiān)聽到的數(shù)據(jù)包負責(zé)傳送給過濾程序第三步當(dāng)PACKETFILTER監(jiān)聽到有數(shù)據(jù)包到達時,NDIS中間驅(qū)動程序首先調(diào)用分組驅(qū)動程序,該程序?qū)?shù)據(jù)傳遞給每一個參與進程的分組過濾程序第四步然后由PACKETFILTER過濾程序決定哪些數(shù)據(jù)包應(yīng)該丟棄,哪些數(shù)據(jù)包應(yīng)該接收,是否需要將接收到的數(shù)據(jù)拷貝到相應(yīng)的應(yīng)用程序第五步通過分組過濾器后,將數(shù)據(jù)未過濾掉的數(shù)據(jù)包提交給核心緩沖區(qū)。然后等待系統(tǒng)緩沖區(qū)滿后,再將數(shù)據(jù)包拷貝到用戶緩沖區(qū)。監(jiān)聽程序可以直接從用戶緩沖區(qū)中讀取捕獲的數(shù)據(jù)包第六步關(guān)閉網(wǎng)卡25圖32NDIS驅(qū)動程序結(jié)構(gòu)(2)WINPCAP安裝本網(wǎng)絡(luò)探測程序需要用到兩個文件,他們都可以從WINPCAP官方網(wǎng)站HTTP/WWWWINPCAPORG/INSTALL/DEFAULTHTM上下載。第一個文件是WINPCAP4_0_2EXE,它是一個自動安裝文件,其包括重要的動態(tài)鏈接庫DLL和驅(qū)動程序,雙擊此文件就可以按照提示進行安裝了。這個文件必須安裝,他是所有基于WINPCAP的應(yīng)用程序運行所必須的。如果不安裝此文件,就不能運行基于WINPCAP的應(yīng)用程序。第二個文件是WPDPACK_4_0_2ZIP,他是WINPCAP開發(fā)包文件,是設(shè)計基于WINPCAP的應(yīng)用程序的開發(fā)文件。該文件包括開發(fā)用的頭文件和靜態(tài)鏈接庫文件,是開發(fā)者要用到的。如果不需要開發(fā)基于WINPCAP的程序,而只是運行基于WINPCAP的軟件,就不需要此文件。(3)WINPCAP數(shù)據(jù)結(jié)構(gòu)由于WINPCAP的設(shè)計與LIBPCAP相同的數(shù)據(jù)結(jié)構(gòu)。在此只列出所有的WINPCAP核心數(shù)據(jù)結(jié)構(gòu),并進行簡單介紹。PCAP_ADDR數(shù)據(jù)結(jié)構(gòu)描述的是網(wǎng)絡(luò)接口的地址的定義如下TYPEDEFSTRUCTPCAP_ADDRPCAP_ADDR_TSTRUCTPCAP_ADDRSTRUCTPCAP_ADDRNEXT/指向下一個地址節(jié)點STRUCTSOCKADDRADDR/網(wǎng)絡(luò)接口地址STRUCTSOCKADDRNETMASK/地址掩碼STRUCTSOCKADDRBROADADDR/廣播地址STRUCTSOCKADDRDSTADDR/目的地址PCAP_FILE_HEADER數(shù)據(jù)結(jié)構(gòu)描述一個WINPCAP用不同的存儲文件類型,一個存儲文件類型用唯一值來表示26定義如下STRUCTPCAP_FILE_HEADERBPF_U_INT32MAGIC/文件類型U_SHORTVERSION_MAJOR/主版本號U_SHORTVERSION_MINOR/次版本號BPF_INT32THISZONE/區(qū)域時間BPF_U_INT32SIGFIGS/時間戳BPF_U_INT32SNAPLEN/捕獲長度BPF_U_INT32LINKTYPE/鏈路層類型PCAP_IF數(shù)據(jù)結(jié)構(gòu)描述的是把當(dāng)網(wǎng)絡(luò)接口表較多時組成一個鏈表,用此鏈表來存儲所有的網(wǎng)絡(luò)接口26,定義如下TYPEDEFSTRUCTPCAP_IFPCAP_IF_TSTRUCTPCAP_IFSTRUCTPCAP_IFNEXT/下一個網(wǎng)絡(luò)接口節(jié)點CHARNAME/網(wǎng)絡(luò)接口名字CHARDESCRIPTION/描述信息STRUCTPCAP_ADDRADDRESSES/網(wǎng)絡(luò)接口地址BPF_U_INT32FLAGS/標(biāo)記;PCAP_PKTHDR數(shù)據(jù)結(jié)構(gòu)描述每個捕獲到的數(shù)據(jù)包的一些基本信息,定義如下STRUCTPCAP_PKTHDRSTRUCTTIMEVALTS/時間戳BPF_U_INT32CAPLEN/捕獲長度BPF_U_INT32LEN/數(shù)據(jù)包長度;PCAP_STAT數(shù)據(jù)結(jié)構(gòu)主要描述的是WINPCAP的狀態(tài)信息26,定義如下STRUCTPCAP_STATU_INTPS_RECV/捕獲到得數(shù)據(jù)包個數(shù)U_INTPS_DROP/丟失的數(shù)據(jù)包個數(shù)U_INTPS_IFDROP/未用IFDEFWIN32U_INTBS_CAPT/數(shù)據(jù)包到達應(yīng)用層的個數(shù)ENDIF(4)WINPCAP函數(shù)說明WINPCAP提供的輸出函數(shù)與LIBPCAP的函數(shù)是完全一樣的,他們的使用方式也完全一樣。在此只列出所以函數(shù)名稱及功能介紹,其詳細說明請查看WINPCAP幫助文檔,幫助文檔可從此處下載HTTP/WWWCOFFEECATNETCN/WINPCAP/HTML/INDEXHTML。與WINDOWS相關(guān)的輸出函數(shù)單獨列出,并進行詳細介紹。表33網(wǎng)絡(luò)接口函數(shù)查找機器的所有可用的網(wǎng)絡(luò)接口,用一個網(wǎng)絡(luò)聊表返回INTPCAP_FINDALLDEVSPCAP_IF_TALLDEVSP,CHARERRBUF釋放網(wǎng)絡(luò)接口鏈表中的所有網(wǎng)絡(luò)接口VOIDPCAP_FREEALLDEVSPCAP_IF_TALLDEVS查詢本機的網(wǎng)絡(luò)接口名字CHARPCAP_LOOKUPDEVCHARERRBUF獲取網(wǎng)絡(luò)地址和網(wǎng)絡(luò)掩碼INTPCAP_LOOKUPNETREGISTERCONSTCHAREVICE,REGISTERBPF_U_INT32NETP,REGISTERBPF_U_INT32MASKP,REGISTERCHARERRBUF打開一個網(wǎng)絡(luò)接口進行數(shù)據(jù)包捕獲。打開IADE模式有“PROMISC“表示如果是1,就表示以混雜模式打開此網(wǎng)絡(luò)接口;否則,以非混雜模式打開網(wǎng)絡(luò)接口PCAP_TPCAP_OPEN_LIVECONSTCHARDEVICE,INTSNAPLEN,INTPROMISC,INTTO_MS,CHARERRBUF表34規(guī)則函數(shù)設(shè)置BFP過濾規(guī)則,由參數(shù)FP確定INTPCAP_SETFILTERPCAP_TP,STRUCTBPF_PROGRAMFP編譯BPF過濾規(guī)則INTPCAP_COMPILEPCAP_TP,STRUCTBFP_PROGRAMPROGRAM,CHARBUF,INTOPTIMIZE,BPF_U_INT32MASK編譯BPF過濾規(guī)則INTPCAP_COMPILE_NOPCAPINTSNAPLEN_ARG,INTLINKTYPE_ARG,STRCUTBPF_PROGRAMPROGRAM,CHARBUF,INTOPTIMIZE,BPF_U_INT32MASK釋放過濾規(guī)則的內(nèi)存VOIDPCAP_FREECODESTRUCTBPF_PROGRAMPROGRAM表35數(shù)據(jù)包捕獲函數(shù)循環(huán)捕獲網(wǎng)絡(luò)數(shù)據(jù)包,直到遇到錯誤或滿足退出條件。每捕獲一個數(shù)據(jù)包就調(diào)用CALLBACK只是的回調(diào)函數(shù)。所以,可以在回調(diào)函數(shù)中對捕獲到的數(shù)據(jù)包進行操作INTPCAP_LOOPPCAP_TP,INTCNT,PCAP_HANDLERCALLBACK,U_CHARUSER捕獲網(wǎng)路數(shù)據(jù)包INTPCAP_DISPATCHPCAP_TP,INTCNT,PCAP_HANDLERCALLBACK,U_CHARUSER捕獲一個網(wǎng)絡(luò)數(shù)據(jù)包,然后返回此數(shù)據(jù)包捕獲一個網(wǎng)絡(luò)數(shù)據(jù)包CONSTU_CHARPCAP_NEXTPCAP_TP,STRUCTPCAP_PKTHDRHINTPCAP_NEXT_EXPCAP_TP,STRUCTPCAP_PKTHDRPKT_HEADER,CONSTU_CHARPKT_DATA退出循環(huán)捕獲數(shù)據(jù)包狀態(tài)VOIDPCAP_BREAKLOOPPCAP_TP構(gòu)造一個LIBPCAP句柄PCAP_TPCAP_OPEN_DEADINTLINKTYPE,INTSNAPLEN打開一個文件,此文件的內(nèi)容是網(wǎng)絡(luò)數(shù)據(jù)包VOIDPCAP_OPEN_OFFLINECONSTCHARFNAME,CHARERRBUF關(guān)閉LIBPCAP操作,并銷毀相應(yīng)的資源VOIDPCAP_CLOSEPCAP_TP表36文件相關(guān)函數(shù)返回LIBPCAP的文件句柄FILEPCAP_FILEPCAP_TP返回LIBPCAP的文件描述符號INTPCAP_FILENOPCAP_TP把數(shù)據(jù)包數(shù)據(jù)存入文件中PCAP_DUMPER_TPCAP_DUMP_OPENPCAP_TP,CONSTCHARFNAME把數(shù)據(jù)包數(shù)據(jù)存入文件INTPCAP_DUMP_FLUSHPCAP_DUMPER_TP關(guān)閉文件VOIDPCAP_DUMP_CLOSEPCAP_DUMPER_TP)向文件中寫網(wǎng)路數(shù)據(jù)包內(nèi)容VOIDPCAP_DUMPU_CHARUSER,CONSTSTRUCTPCAP_PKTHDRH,CONSTU_CHAR返回一個標(biāo)準的文件句柄FILEPCAP_DUMP_FILEPCAP_DUMPER_TP表37錯誤處理函數(shù)獲取最后一個錯誤信息VOIDPCAP_PERRORPCAP_TP,CHARPREFIX獲取對應(yīng)的錯誤信息CHARPCAP_STRERRORINTERRNUM表38輔助函數(shù)獲得統(tǒng)計信息INTPCAP_STATSPCAP_TP,STRUCTPCAP_STATPS是獲取鏈路層狀態(tài)。例如,如果類型為DLT_EN10MB,就表示以太網(wǎng)INTPCAP_DATALINKPCAP_TP返回支持的所有鏈路層類型的鏈表INTPCAP_LIST_DATALINKSPCAP_TP,INTDLT_BUFFER設(shè)置鏈路層類型INTPCAP_SET_DATALINKPCAP_TP,INTDLT此函數(shù)的功能是把鏈路層類型對應(yīng)的名字轉(zhuǎn)換成標(biāo)識INTPCAP_DATALINK_NAME_TO_VALCONSTCHARNAME把鏈路層標(biāo)識轉(zhuǎn)換成對應(yīng)的鏈路層名字字符串CONSTCHARPCAP_DATALINK_VAL_TO_NAMEINTDLT把鏈路層的描述求出來CONSTCHARPCAP_DATALINK_VAL_TO_DESCRIPTIONINTDLT返回LIBPCAP句柄中的SNAPSHOT數(shù)值INTPCAP_SNAPSHOTPCAP_TP返回文件類型是否正確的信息INTPCAP_IS_SWAPPEDPCAP_TP返回文件的主版本號INTPCAP_MAJOR_VERSIONPCAP_TP返回文件按的次版本號INTPCAP_MINOR_VERSIONPCAP_TP返回LIBPCAP的版本信息CONSTCHARPCAP_LIB_VERSIONVOID返回LIBPCAP的非阻塞狀態(tài)INTPCAP_GETNONBLOCKPCAP_TP,CHARERRBUF設(shè)置LIBPCAP是否為非阻塞模式INTPCAP_SETNONBOCKPCAP_TP,INTNONBLOCK,CHARERRBUFINTPCAP_SETNONBOCKPCAP_TP,INTNONBLOCK,CHARERRBUF表39與WINDOWS相關(guān)的函數(shù)函數(shù)返回值函數(shù)操作成功就返回0,失敗就返回1參數(shù)描述參數(shù)P表示W(wǎng)INPCAP句柄,參數(shù)DIM表示字節(jié)數(shù)目此函數(shù)的功能是設(shè)置內(nèi)核中與網(wǎng)卡相關(guān)的緩沖區(qū)的大小INTPCAP_SETBUFFPCAP_TP,INTDIM函數(shù)返回值函數(shù)操作成功就返回0,失敗就返回1參數(shù)描述參數(shù)P表示W(wǎng)INPCAP句柄。參數(shù)MODE表示工作模式,有兩種工作模式捕獲模式和統(tǒng)計模式,分別用MODE_CAPT和MODE_STAT表示。如果是捕獲模式,網(wǎng)絡(luò)接口就只捕獲網(wǎng)絡(luò)數(shù)據(jù)包;如果是統(tǒng)計模式,網(wǎng)絡(luò)接口就可以進行網(wǎng)絡(luò)信息統(tǒng)計此函數(shù)的功能是設(shè)置網(wǎng)絡(luò)接口的共組模式INTPCAP_SETMODEPCAP_TP,INTMODE數(shù)返回值函數(shù)操作成功就返回0,失敗就返回1參數(shù)描述參數(shù)P表示W(wǎng)INPCAP句柄,參數(shù)BUF表示要發(fā)送的數(shù)據(jù)包緩存數(shù)據(jù),參數(shù)SIZE表示緩存BUF的大小此函數(shù)的功能是發(fā)送一個原始數(shù)據(jù)包INTPCAP_SENDPACKETPCAP_TP,U_CHARBUF,INTSIZE函數(shù)返回值函數(shù)操作成功就返回0,失敗就返回1參數(shù)描述參數(shù)P表示W(wǎng)INPCAP句柄,擦數(shù)SIZE表示緩存大小此函數(shù)的功能是在內(nèi)環(huán)設(shè)置一個最小的緩存大小。此緩存用來存放數(shù)據(jù)包內(nèi)容,如果緩存裝滿,內(nèi)核就把次數(shù)據(jù)內(nèi)容復(fù)制給應(yīng)用層;如果緩存還有空閑,內(nèi)核就一直等到緩存裝滿后再把它們送到應(yīng)用層,而不是一有數(shù)據(jù)到達就把它們送入應(yīng)用層INTPCAP_SETMINTOCOPYPCAP_TP,INTSIZE32設(shè)計思路321程序功能介紹網(wǎng)絡(luò)協(xié)議分析程序主要要實現(xiàn)倆個功能捕獲數(shù)據(jù)包,即獲取以太網(wǎng)上的數(shù)據(jù)包;分析數(shù)據(jù)包,即對數(shù)據(jù)包進行協(xié)議分析。為了使程序有更好的操作性和用戶體驗,程序使用VISUALC60進行開發(fā)。程序主界面采用文檔/視圖結(jié)構(gòu),目的是利用其產(chǎn)生的菜單和工具欄、狀態(tài)欄,提供交互的命令。具體思想是設(shè)計一個類似VC界面的主界面,包含有6個用于顯示信息的視圖。主視圖占據(jù)程序界面的大部分區(qū)域用于顯示數(shù)據(jù)包的主要信息,包括數(shù)據(jù)包索引號、捕獲到數(shù)據(jù)包的時間、數(shù)據(jù)包的長度、以太網(wǎng)的源/目的MAC地址、源/目的IP地址以及端口號。流量視圖用于顯示單位時間的IP數(shù)據(jù)包個數(shù)。包結(jié)構(gòu)視圖用于顯示用戶所選數(shù)據(jù)包的詳細信息。查看視圖用于查看各種數(shù)據(jù)包的統(tǒng)計信息和系統(tǒng)的一些輸出信息。主機視圖用于顯示ARP請求主機的IP和MAC地址。二進制包視圖用于顯示數(shù)據(jù)包的二進制數(shù)據(jù)。除主視圖外,其他的視圖都可以由用戶決定是否顯示。322設(shè)計思路1首先獲取網(wǎng)絡(luò)設(shè)備,然后打開設(shè)備,并設(shè)置網(wǎng)卡處于混雜模式,啟動捕獲線程,不斷地接收數(shù)據(jù)包和分析數(shù)據(jù)包。2通過在對話欄的組合框中輸入過濾串來確定監(jiān)聽某種協(xié)議TCP,UDP,ICMP的數(shù)據(jù)包。默認情況下是不進行過濾的;3通過菜單或工具欄按鈕來控制監(jiān)聽線程的開始和結(jié)束;4單獨創(chuàng)建一個線程用于進行數(shù)據(jù)包的接收,以提高界面的反應(yīng)能力;監(jiān)聽的結(jié)果顯示于列表控件中,包括以下各項,接收時間、數(shù)據(jù)包長度、源MAC地址、目的MAC地址、協(xié)議、源IP/端口、目標(biāo)IP/端口。圖31設(shè)計思路圖32應(yīng)用程序模塊設(shè)置過濾字符串選項設(shè)置分析數(shù)據(jù)包保存數(shù)據(jù)包更新列表視圖接收數(shù)據(jù)包停止終止監(jiān)聽線程結(jié)束結(jié)束保存顯示結(jié)果監(jiān)聽網(wǎng)絡(luò)保存到磁盤N圖33流程圖33主要函數(shù)說明使用WINPCAP庫函數(shù),設(shè)置網(wǎng)卡為混雜模式,接收所有流經(jīng)它的數(shù)據(jù),并交由上層協(xié)議處理軟件處理。下面具體討論一下各個函數(shù)的功能。(1)DWORDWINAPICAPTURETHREADLPVOIDLPPARAMETER參數(shù)LPPARAMETER空類型指針,在程序中使用該函數(shù)時傳遞的是文檔類指針。網(wǎng)絡(luò)監(jiān)聽線程函數(shù),全局函數(shù)。函數(shù)主要進行接收數(shù)據(jù)的工作。函數(shù)是由菜單抓包開始命令的響應(yīng)函數(shù)ONMENUITEMSTART中的STARTCAPTURE函數(shù)調(diào)用,主要是根據(jù)從界面接收相關(guān)參數(shù),設(shè)置有關(guān)變量的值,開始監(jiān)聽網(wǎng)絡(luò)。函數(shù)流程開網(wǎng)絡(luò)接口、檢測鏈路層類型、設(shè)置過濾器、捕獲數(shù)據(jù)包。并在該函數(shù)中調(diào)用SAVEPACKET進行保存數(shù)據(jù)包。(2)UINTSEARCHTHREADLPVOIDLPARAM參數(shù)LPPARAMETER空類型指針,在程序中使用該函數(shù)時傳遞的是文檔類指針。局域網(wǎng)主機搜索線程函數(shù),全局函數(shù)。函數(shù)主要功能就是搜索局域網(wǎng)內(nèi)的主機名稱和IP地址。N創(chuàng)建監(jiān)聽線程NYYY(3)SAVEPACKETSTRUCTPCAP_PKTHDRHEADER,CONSTU_CHARPKT_DATA參數(shù)HEADER保存每個數(shù)據(jù)包的一些基本信息,PKT_DATA保存著完整的數(shù)據(jù)包。函數(shù)是由CAPTURETHREAD函數(shù)調(diào)用,完成數(shù)據(jù)包在內(nèi)存中的保存,以備以后使用。函數(shù)流程新建DATAPACKET對象、新建PCAP_PKTHDR、將參數(shù)中的HEADER中的對應(yīng)值賦給新建PCAP_PKTHDR、新建PDATA字符指針、將參數(shù)中的PKT_DATA復(fù)制到PDATA中、保存DATAPACKET對象到CPTRLIST鏈表M_DATA中。此函數(shù)的功能是將網(wǎng)絡(luò)數(shù)據(jù)包數(shù)據(jù)保存到CPTRLIST鏈表中。(4)ONTIMERUINTNIDEVENT參數(shù)NIDEVENT計時器ID。此函數(shù)的功能是計算機是否連接到網(wǎng)絡(luò)以及連接的方式。例外流量視圖的更新也是在此函數(shù)中操作的。(5)INTANALYZEDATAPCAP_PKTHDRHEADER,CONSTU_CHARPKT_DATA參數(shù)HEADER保存每個數(shù)據(jù)包的一些基本信息,PKT_DATA保存著完整的數(shù)據(jù)包。函數(shù)是由SAVEPACKET函數(shù)調(diào)用,完成對數(shù)據(jù)包的初步分析,為列表視圖準備數(shù)據(jù)。函數(shù)流程撥去以太網(wǎng)頭部、獲得上層封裝的協(xié)議、根據(jù)協(xié)議類型獲得相應(yīng)的源/目的IP地址,源/目的端口。此函數(shù)的功能是分析一個數(shù)據(jù)包,得到接收的時間、數(shù)據(jù)包長度、以太網(wǎng)的MAC地址,源/目的IP地址,源/目的端口。并調(diào)用視圖類中的UPDATELIST函數(shù)更新列表視圖。(6)DUMP_IPCONSTU_CHARP此函數(shù)的功能是解析IP包,獲取數(shù)據(jù)包的源地址和目的地址,包的生存周期TTL,IP包內(nèi)所使用的協(xié)議等,然后根據(jù)協(xié)議的類型,相應(yīng)地調(diào)用TCP,UDP,ICMP協(xié)議的解析函數(shù)進行數(shù)據(jù)分析。(7)DUMP_TCPCONSTU_CHARP,INTLEN此函數(shù)的功能是對TCP數(shù)據(jù)包解析,得到通信兩方的端口號以及標(biāo)志位等。雖然還可以解析包內(nèi)的數(shù)據(jù),但是只可以顯示數(shù)據(jù)的字符串格式,反映不出數(shù)據(jù)的原貌,更別說加密了。(8)DUMP_UDPCONSTU_CHARP,INTLEN此函數(shù)的功能是對UDP頭部進行分析。(9)DUMP_ICMPCONSTU_CHARP,INTLEN此函數(shù)的功能是對ICMP頭部進行分析。(10)DUMP_ARPCONSTU_CHARP此函數(shù)的功能是對ARP數(shù)據(jù)包進行分析。(11)DUMP_EAPCONSTU_CHARP此函數(shù)的功能是對EAP數(shù)據(jù)包進行分析。(12)UPDATETREEINTINDEX此函數(shù)的功能是當(dāng)用戶在列表視圖中選中一個數(shù)據(jù)包時更新主界面右邊的包結(jié)構(gòu)視圖的內(nèi)容。(13)UPDATEEDITDATAPACKETPDATA此函數(shù)的功能是當(dāng)用戶在列表視圖中選中一個數(shù)據(jù)包時更新主界
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年阿拉伯語等級考試詞匯實戰(zhàn)試題試卷
- 致敬抗美援朝英雄烈士作文
- 2025年雅思考試閱讀專項模擬試卷:教育改革與發(fā)展趨勢
- 兒童疫苗接種計劃與常見疫苗介紹
- 閱讀的歷史人物話題作文10篇
- 2025年教師資格證面試結(jié)構(gòu)化面試真題卷:教育心理研究與應(yīng)用
- 2025年北京市公務(wù)員遴選考試申論試題匯編
- 最讓我感動的一本書讀后感15篇
- 甲狀腺癌圍手術(shù)期護理試題
- 2025年風(fēng)能利用設(shè)備項目提案報告模范
- 智聯(lián)eas測評題庫
- 浙江省杭州市余杭區(qū)2024年小升初語文試題及答案
- 實驗訓(xùn)練2數(shù)據(jù)查詢操作
- 2024年吉林省中考道德與法治試卷真題(含答案)
- 長春市南關(guān)區(qū)2023-2024學(xué)年數(shù)學(xué)五下期末經(jīng)典試題含解析
- 理工英語4-02-國開機考參考資料
- 福州市勞動合同書(2007年11月印制)
- 小升初真題卷(七)(江蘇卷)(試題)- 2023-2024學(xué)年六年級下冊數(shù)學(xué)蘇教版
- 銀川市西夏區(qū)六年級下冊數(shù)學(xué)期末測試卷標(biāo)準卷
- 2024年邯鄲市邯山區(qū)六年級下學(xué)期小升初招生語文試卷含答案
- 學(xué)校零星維護維修方案
評論
0/150
提交評論