




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