版權(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ù)包的協(xié)議分析程序的設(shè)計(jì)開(kāi)發(fā)論文作者姓名:申請(qǐng)學(xué)位專業(yè):申請(qǐng)學(xué)位類別:論文提交日期:網(wǎng)絡(luò)數(shù)據(jù)包的協(xié)議分析程序的設(shè)計(jì)開(kāi)發(fā)摘要本文設(shè)計(jì)與實(shí)現(xiàn)了一個(gè)基于Linux下Libpcap庫(kù)函數(shù)的網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序。程序的主要功能包括網(wǎng)絡(luò)數(shù)據(jù)包捕獲和常用網(wǎng)絡(luò)協(xié)議分析。程序由輸入/輸出模塊、規(guī)那么匹配模塊、數(shù)據(jù)捕獲模塊、協(xié)議分析模塊組成。其中數(shù)據(jù)捕獲模塊和協(xié)議分析模塊是本程序最關(guān)鍵、最主要的模塊。本文的主要內(nèi)容如下:首先介紹了網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序的背景和概念。其次進(jìn)行了程序的總體設(shè)計(jì):確定了程序的功能,給出了程序的結(jié)構(gòu)圖和層次圖,描述了程序的工作流程,對(duì)實(shí)現(xiàn)程序的關(guān)鍵技術(shù)做出了分析。接著,介紹完數(shù)據(jù)包捕獲的相關(guān)背景和Libpcap函數(shù)庫(kù)后,闡述了如何利用Libpcap函數(shù)庫(kù)實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包捕獲模塊。然后對(duì)協(xié)議分析流程進(jìn)行了詳細(xì)的講解,分析了常用網(wǎng)絡(luò)協(xié)議。最后進(jìn)行了程序的測(cè)試與運(yùn)行:測(cè)試了程序能否按照預(yù)期的效果正確執(zhí)行,印證了預(yù)期結(jié)果。關(guān)鍵詞:Libpcap;Linux;數(shù)據(jù)包捕獲;應(yīng)用層;協(xié)議識(shí)別TheDesignandDevelopmentofNetworkPacketProtocolAnalyzingProgramAbstractThethesisisanattempttointroduceanimplementationofnetworkprotocolanalyzingprogramwhichisbasedonLibpcap,afamousnetworkpacketcapturelibraryonLinux.IthasarichfeaturesetwhichincludescapturingnetworkpacketsandanalyzingpopularnetworkprotocolsonInternet.Theprogramismadeupofaninput/outputmodule,arulesmatchingmodule,apacketcapturingmoduleandaprotocolanalyzingmodule.Andthelasttwomodulesarekeymodules.Theresearchworkwasdescribedasfollowed.firstly,weintroducethebackgroundandconceptsaboutnetworkprotocolanalyzingprograms;andwemakeanintegrateddesignontheprogram,definefunctionsofit,figureoutitsstructureandhierarchicalgraphs,describetheworkflowofit,andanalyzethekeytechniquesusedinit;Secondly,afterelaboratingonthebackgroundofpacketcaptureandtheLibpcaplibrary,westateaapproachtoimplementapacketcapturemodulewithLibpcap;Thirdly,weexplaintheworkflowaboutprotocolanalysis,andanalyzecommonnetworkprotocols;Finally,wetestourprogramtoseewhetheritworksasexpected,fortunately,itdoes.Keywords:Libpcap;Linux;Networkpacketcapturing;Applicationlayer;Protocolidentification目錄論文總頁(yè)數(shù):23頁(yè)1 引言 11.1 課題背景 11.2 網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序簡(jiǎn)介 21.3 國(guó)內(nèi)外研究現(xiàn)狀 22 網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序的總體設(shè)計(jì) 32.1 網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序的功能分析 32.2 系統(tǒng)的組成結(jié)構(gòu)和工作流程 32.2.1 系統(tǒng)的結(jié)構(gòu)框圖 32.2.2 系統(tǒng)的結(jié)構(gòu)和功能 42.2.3 程序的工作流程 52.3 系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)分析 63 網(wǎng)絡(luò)數(shù)據(jù)包捕獲模塊的實(shí)現(xiàn) 73.1 網(wǎng)絡(luò)數(shù)據(jù)包捕獲簡(jiǎn)介 73.2 基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲的實(shí)現(xiàn) 83.2.1 Libpcap安裝 83.2.2 Libpcap中根本的數(shù)據(jù)結(jié)構(gòu)和函數(shù) 83.3 數(shù)據(jù)捕獲模塊的實(shí)現(xiàn) 114 協(xié)議分析模塊的實(shí)現(xiàn) 114.1 網(wǎng)絡(luò)協(xié)議分析的總體流程 124.2 對(duì)TCP/IP模型中各層協(xié)議的分析 144.2.1 以太網(wǎng)首部的分析與提取 144.2.2 IP首部的分析與提取 154.2.3 TCP/UDP首部的分析與提取 164.2.4 應(yīng)用層協(xié)議的識(shí)別與分析 185 程序運(yùn)行與測(cè)試 205.1 測(cè)試環(huán)境 205.1.1 硬件環(huán)境 205.1.2 程序運(yùn)行環(huán)境 205.2 測(cè)試步驟 205.3 測(cè)試結(jié)果評(píng)價(jià) 20結(jié)論 20參考文獻(xiàn) 21致謝 22聲明 23引言課題背景隨著計(jì)算機(jī)網(wǎng)絡(luò)的不斷開(kāi)展,全球信息化已成為當(dāng)今社會(huì)開(kāi)展的趨勢(shì)。但由于計(jì)算機(jī)網(wǎng)絡(luò)自身所特具有的特點(diǎn),比方聯(lián)結(jié)形式多樣性和網(wǎng)絡(luò)的開(kāi)放性、互連性等特征,所以導(dǎo)致網(wǎng)絡(luò)易受黑客還有一些病毒的攻擊。所以網(wǎng)上信息的平安和保密是一個(gè)至關(guān)重要的問(wèn)題。對(duì)于軍用的自動(dòng)化指揮網(wǎng)絡(luò)和銀行等傳輸敏感數(shù)據(jù)的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)而言,其網(wǎng)上信息的平安和保密尤為重要。因此,網(wǎng)絡(luò)必須有足夠強(qiáng)的平安措施,否那么該網(wǎng)絡(luò)將是個(gè)無(wú)用、甚至?xí)<皣?guó)家平安的網(wǎng)絡(luò)。在計(jì)算機(jī)網(wǎng)絡(luò)的世界里,存在著很多潛在的威脅,因此網(wǎng)絡(luò)的平安措施應(yīng)能全方位地應(yīng)對(duì)各種不同的威脅,這樣才可以真正的做到網(wǎng)絡(luò)效勞于社會(huì),表達(dá)網(wǎng)絡(luò)的先進(jìn)性。計(jì)算機(jī)網(wǎng)絡(luò)所面臨的威脅大體可分為兩種:一是對(duì)網(wǎng)絡(luò)中信息的威脅;二是對(duì)網(wǎng)絡(luò)中設(shè)備的威脅。影響計(jì)算機(jī)網(wǎng)絡(luò)的因素很多,有些因素可能是有意的,也可能是無(wú)意的;可能是人為的,也可能是非人為的;可能是外來(lái)黑客對(duì)網(wǎng)絡(luò)系統(tǒng)資源的非法使有,歸結(jié)起來(lái),針對(duì)網(wǎng)絡(luò)平安的威脅主要有三種:(1)人為的無(wú)意失誤:如操作員平安配置不當(dāng)造成的平安漏洞,用戶平安意識(shí)不強(qiáng),用戶口令選擇不慎,用戶將自己的帳號(hào)隨意轉(zhuǎn)借他人或與別人共享等都會(huì)對(duì)網(wǎng)絡(luò)平安帶來(lái)威脅。(2)人為的惡意攻擊:這是計(jì)算機(jī)網(wǎng)絡(luò)所面臨的最大威脅,敵手的攻擊和計(jì)算機(jī)犯罪就屬于這一類。此類攻擊又可以分為以下兩種:一種是主動(dòng)攻擊,它以各種方式有選擇地破壞信息的有效性和完整性;另一類是被動(dòng)攻擊,它是在不影響網(wǎng)絡(luò)正常工作的情況下,進(jìn)行截獲、竊取、破譯以獲得重要機(jī)密信息。這兩種攻擊均可對(duì)計(jì)算機(jī)網(wǎng)絡(luò)造成極大的危害,并導(dǎo)致機(jī)密數(shù)據(jù)的泄漏。(3)網(wǎng)絡(luò)軟件的漏洞和“后門(mén)〞:網(wǎng)絡(luò)軟件不可能是百分之百的無(wú)缺陷和無(wú)漏洞的,然而,這些漏洞和缺陷恰恰是黑客進(jìn)行攻擊的首選目標(biāo),曾經(jīng)出現(xiàn)過(guò)黑客攻入網(wǎng)絡(luò)內(nèi)部的事件,這些事件的大局部就是因?yàn)槠桨泊胧┎煌晟扑兄碌目喙A硗?,軟件的“后門(mén)〞都是軟件公司的設(shè)計(jì)編程人員為了自便而設(shè)置的,一般不為外人所知,但一旦“后門(mén)〞洞開(kāi),其造成的后果將不堪設(shè)想。為了及早發(fā)現(xiàn)并制止網(wǎng)絡(luò)上的各種攻擊,我們需要通過(guò)對(duì)網(wǎng)絡(luò)上的數(shù)據(jù)進(jìn)行分析來(lái)發(fā)現(xiàn)并找出問(wèn)題,提前預(yù)防。這也是本論文的一個(gè)重要目的。網(wǎng)絡(luò)平安管理員運(yùn)用網(wǎng)絡(luò)封包截獲技術(shù),抓取網(wǎng)絡(luò)中有用的數(shù)據(jù)包,然后通過(guò)對(duì)數(shù)據(jù)包內(nèi)容進(jìn)行分析,確定哪些是有害的或者含有攻擊企圖的包,以此來(lái)到達(dá)對(duì)網(wǎng)絡(luò)攻擊的預(yù)防。同時(shí)許多防火墻也是基于包過(guò)濾技術(shù)的。本文將介紹網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序的工作原理以及它的實(shí)現(xiàn)。網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序簡(jiǎn)介網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序是一種用于收集網(wǎng)絡(luò)中有用數(shù)據(jù)的程序,這些數(shù)據(jù)可以是用戶的帳號(hào)和密碼,也可以是一些商用機(jī)密數(shù)據(jù)等。它是利用計(jì)算機(jī)的網(wǎng)絡(luò)接口截獲目的地為其他計(jì)算機(jī)的數(shù)據(jù)報(bào)文的一種工具。網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序的正當(dāng)用處主要是分析網(wǎng)絡(luò)的流量,以便找出所關(guān)心的網(wǎng)絡(luò)中潛在的問(wèn)題。例如,假設(shè)網(wǎng)絡(luò)的某一段運(yùn)行得不是很好,報(bào)文的發(fā)送比擬慢,而我們又不知道問(wèn)題出在什么地方,此時(shí)就可以用網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序來(lái)作出精確的問(wèn)題判斷。在合理的網(wǎng)絡(luò)中,網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序的存在對(duì)系統(tǒng)管理員是至關(guān)重要的,系統(tǒng)管理員通過(guò)網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序可以診斷出大量的不可見(jiàn)模糊問(wèn)題,這些問(wèn)題涉及兩臺(tái)乃至多臺(tái)計(jì)算機(jī)之間的異常通訊,有些甚至牽涉到各種的協(xié)議,借助于網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序系統(tǒng)管理員可以方便確實(shí)定出多少的通訊量屬于哪個(gè)網(wǎng)絡(luò)協(xié)議、占主要通訊協(xié)議的主機(jī)是哪一臺(tái)、大多數(shù)通訊目的地是哪臺(tái)主機(jī)、報(bào)文發(fā)送占用多少時(shí)間、或著相互主機(jī)的報(bào)文傳送間隔時(shí)間等等,這些信息為管理員判斷網(wǎng)絡(luò)問(wèn)題、管理網(wǎng)絡(luò)區(qū)域提供了非常珍貴的信息。國(guó)內(nèi)外研究現(xiàn)狀現(xiàn)在國(guó)內(nèi)外已經(jīng)有很多成熟并且功能強(qiáng)大的網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析軟件。比擬著名的網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析軟件有:開(kāi)源軟件:Wireshark、TcpDump。商用軟件:EtherPeek下面對(duì)這幾種軟件進(jìn)行簡(jiǎn)要的介紹:Wireshark:Wireshark是一個(gè)開(kāi)放源碼的網(wǎng)絡(luò)分析系統(tǒng),也是是目前最好的開(kāi)放源碼的網(wǎng)絡(luò)協(xié)議分析器,支持Linux和Windows平臺(tái)。Wireshark起初由GeraldCombs開(kāi)發(fā),隨后由一個(gè)松散的Wireshark團(tuán)隊(duì)組織進(jìn)行維護(hù)開(kāi)發(fā)。它目前所提供的強(qiáng)大的協(xié)議分析功能完全可以媲美商業(yè)的網(wǎng)絡(luò)分析系統(tǒng),自從1998年發(fā)布最早的0.2版本至今,大量的志愿者為Wireshark添加新的協(xié)議解析器,如今Wireshark已經(jīng)支持五百多種協(xié)議解析。很難想象如此多的人開(kāi)發(fā)的代碼可以很好的融入系統(tǒng)中;并且在系統(tǒng)中參加一個(gè)新的協(xié)議解析器很簡(jiǎn)單,一個(gè)不了解系統(tǒng)的結(jié)構(gòu)的新手也可以根據(jù)留出的接口進(jìn)行自己的協(xié)議開(kāi)發(fā)。這都?xì)w功于Wireshark良好的設(shè)計(jì)結(jié)構(gòu)。事實(shí)上由于網(wǎng)絡(luò)上各種協(xié)議種類繁多,各種新的協(xié)議層出不窮。一個(gè)好的協(xié)議分析器必需有很好的可擴(kuò)展性和結(jié)構(gòu)。這樣才能適應(yīng)網(wǎng)絡(luò)開(kāi)展的需要不斷參加新的協(xié)議解析器。TcpDump:顧名思義,TcpDump可以將網(wǎng)絡(luò)中傳送的數(shù)據(jù)包的“頭〞完全截獲下來(lái)提供分析。它支持針對(duì)網(wǎng)絡(luò)層、協(xié)議、主機(jī)、網(wǎng)絡(luò)或端口的過(guò)濾,并提供and、or、not等邏輯語(yǔ)句來(lái)幫助你去掉無(wú)用的信息。用盡量簡(jiǎn)單的話來(lái)定義TcpDump,就是:dumpthetrafficonanetwork,根據(jù)使用者的定義對(duì)網(wǎng)絡(luò)上的數(shù)據(jù)包進(jìn)行截獲的包分析工具。TcpDump以其強(qiáng)大的功能,靈活的截取策略,成為每個(gè)高級(jí)的系統(tǒng)管理員分析網(wǎng)絡(luò),排查問(wèn)題等所必備的工具之一。EtherPeek:這個(gè)工具軟件開(kāi)始只是一個(gè)網(wǎng)絡(luò)分析器型的數(shù)據(jù)包監(jiān)測(cè)軟件,經(jīng)過(guò)這些年的開(kāi)展已經(jīng)成為一個(gè)真正的網(wǎng)絡(luò)管理工具并具有網(wǎng)站監(jiān)視和分析等新的功能,被美國(guó)聯(lián)邦調(diào)查局用來(lái)追蹤逃犯、販賣毒品的人、電腦黑客和一些被疑心為外國(guó)間諜的人。是一個(gè)直觀,功能強(qiáng)大的以太網(wǎng)網(wǎng)絡(luò)和協(xié)議分析器。支持Macintosh和Windows平臺(tái)。EtherPeek把查找和修復(fù)多平臺(tái)上的復(fù)雜網(wǎng)絡(luò)任務(wù)變得簡(jiǎn)單化。EtherPeek采用工業(yè)標(biāo)準(zhǔn),非常容易使用,提供解碼、過(guò)濾和診斷網(wǎng)絡(luò)的功能。以友好圖形界面知名,EtherPeek提供非常詳細(xì)且多樣化的網(wǎng)絡(luò)使用信息,網(wǎng)絡(luò)結(jié)點(diǎn)的會(huì)話和數(shù)據(jù)包內(nèi)容。在有問(wèn)題的局域網(wǎng)絡(luò)中使用EtherPeek執(zhí)行一個(gè)自定的診斷測(cè)試,監(jiān)控網(wǎng)絡(luò)的通信和事件,跟蹤非法的網(wǎng)絡(luò)活動(dòng),測(cè)試和調(diào)試網(wǎng)絡(luò)軟硬件。網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序的總體設(shè)計(jì)網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序的功能分析對(duì)于網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序進(jìn)行功能分析的第一步是要確立程序所要實(shí)現(xiàn)的目標(biāo),也就是程序最終要解決的問(wèn)題。本程序所要實(shí)現(xiàn)的目標(biāo)就是在共享式以太網(wǎng)中捕獲根據(jù)過(guò)濾規(guī)那么設(shè)置的流經(jīng)本地網(wǎng)卡的數(shù)據(jù)包,并且對(duì)數(shù)據(jù)包中的信息進(jìn)行分析。網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序必須完成對(duì)常用協(xié)議的識(shí)別和分析:要求至少實(shí)現(xiàn)TCP/IP協(xié)議簇幾個(gè)根本協(xié)議的分析〔ARP、RARP、TCP、UDP〕,以及應(yīng)用層的常用協(xié)議分析。為了減少設(shè)計(jì)的復(fù)雜度,程序采用字符界面。對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲、規(guī)那么過(guò)濾和對(duì)數(shù)據(jù)包的分析是本程序的主要功能。系統(tǒng)的組成結(jié)構(gòu)和工作流程系統(tǒng)的結(jié)構(gòu)框圖基于以上分析,本文設(shè)計(jì)了網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序,圖2-1是程序的結(jié)構(gòu)框圖。FedoraCoreLinux4FedoraCoreLinux4數(shù)據(jù)包捕獲應(yīng)用程序接口數(shù)據(jù)包處理圖2-1網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序結(jié)構(gòu)框圖下面對(duì)該程序的整體結(jié)構(gòu)進(jìn)行一下描述:該程序的運(yùn)行環(huán)境是FedoraCore4linux。FedoraCore是linux的一個(gè)發(fā)行版,他的前身是Redhatlinux。本程序通過(guò)調(diào)用安裝在linux上的Libpcap函數(shù)庫(kù)抓取經(jīng)過(guò)本地網(wǎng)卡的數(shù)據(jù)包,從而完成數(shù)據(jù)包的捕獲。然后將捕獲后的數(shù)據(jù)包交給上層的數(shù)據(jù)處理模塊,進(jìn)行協(xié)議分析。最后將分析后的數(shù)據(jù)顯示在用戶界面上。系統(tǒng)的結(jié)構(gòu)和功能網(wǎng)絡(luò)數(shù)據(jù)包的協(xié)議分析程序是一個(gè)基于Libpcap開(kāi)發(fā)庫(kù),應(yīng)用與共享以太網(wǎng)的網(wǎng)絡(luò)分析程序如圖2-2所示,系統(tǒng)主要包括4大模塊:網(wǎng)絡(luò)數(shù)據(jù)報(bào)協(xié)議網(wǎng)絡(luò)數(shù)據(jù)報(bào)協(xié)議分析程序輸入數(shù)據(jù)捕獲規(guī)那么匹配數(shù)據(jù)處理協(xié)議分析輸出圖2-2網(wǎng)絡(luò)數(shù)據(jù)包的協(xié)議分析程序的層次圖1、數(shù)據(jù)輸入模塊。該模塊主要功能是接收用戶輸入用于捕獲數(shù)據(jù)包的信息。其中包括選擇用于捕獲的網(wǎng)絡(luò)接口和需要過(guò)濾的內(nèi)容。2、數(shù)據(jù)捕獲模塊。該模塊的主要功能是捕獲流經(jīng)本地網(wǎng)卡的所有數(shù)據(jù)。其原理是通過(guò)把網(wǎng)卡設(shè)置為混雜模式,使得網(wǎng)卡對(duì)所有流經(jīng)它的數(shù)據(jù)包都交給上層程序處理。3、規(guī)那么匹配模塊,該模塊的主要功能是根據(jù)用戶的需求對(duì)需要捕獲的數(shù)據(jù)包進(jìn)行過(guò)濾設(shè)置。因?yàn)椴皇撬薪?jīng)過(guò)本地網(wǎng)卡的數(shù)據(jù)報(bào)都對(duì)我們分析網(wǎng)絡(luò)有用,而且如果將所有經(jīng)過(guò)網(wǎng)卡的數(shù)據(jù)捕獲會(huì)增加系統(tǒng)的開(kāi)銷。因此我們?cè)O(shè)置了一個(gè)規(guī)那么匹配模塊,當(dāng)所捕獲的信息與我們?cè)O(shè)置的規(guī)那么相符時(shí)我們就把它交給數(shù)據(jù)處理模塊,否那么就丟棄。4、數(shù)據(jù)處理模塊。該模塊的主要功能是對(duì)捕獲的數(shù)據(jù)進(jìn)行分析顯示處理。主要是調(diào)用協(xié)議分析模塊和顯示模塊。4.1協(xié)議分析模塊。該模塊的主要功能是對(duì)捕獲的數(shù)據(jù)包進(jìn)行協(xié)議分析。把數(shù)據(jù)包捕獲下來(lái)后,我們需要對(duì)其分析才能知道網(wǎng)絡(luò)中存在的平安問(wèn)題。該模塊主要是對(duì)TCP/IP各層的協(xié)議進(jìn)行分析。4.2顯示模塊。該模塊的主要功能是將分析的結(jié)果顯示給用戶。對(duì)數(shù)據(jù)包進(jìn)行協(xié)議分析后要把結(jié)果顯示給用戶本程序才結(jié)束。因?yàn)閿?shù)據(jù)包中包含的信息太多,如果全部顯示給用戶有所不便,所以我們挑選其中比擬重要的信息輸出給用戶。程序的工作流程圖2-3為本程序的流程圖,下面其進(jìn)行簡(jiǎn)要的表達(dá):1、程序開(kāi)始時(shí)首先查找計(jì)算機(jī)上所有可用的網(wǎng)卡,并讓用戶選擇用于捕獲數(shù)據(jù)包的網(wǎng)卡。2、用戶輸入用于捕獲數(shù)據(jù)包的網(wǎng)卡和過(guò)濾規(guī)那么。只過(guò)濾用戶所關(guān)心的信息。3、程序判斷該網(wǎng)卡所在的網(wǎng)絡(luò)是否為以太網(wǎng),不是那么中止,是那么繼續(xù)。因?yàn)楸境绦蛑荒茉诠蚕硪蕴W(wǎng)中進(jìn)行數(shù)據(jù)捕獲。4、編譯用戶設(shè)置的過(guò)濾規(guī)那么。5、開(kāi)始進(jìn)行捕獲,并分析數(shù)據(jù),將數(shù)據(jù)顯示給用戶。當(dāng)用戶停止時(shí)就結(jié)束程序,否那么繼續(xù)捕獲。查找所有可用的網(wǎng)卡查找所有可用的網(wǎng)卡是否是以太網(wǎng)編譯并且設(shè)置過(guò)濾規(guī)那么開(kāi)始捕獲數(shù)據(jù)并分析顯示結(jié)果結(jié)束程序用戶中止嗎?選擇用于捕獲的網(wǎng)卡和過(guò)濾規(guī)那么開(kāi)始NYNNYY圖2-3網(wǎng)絡(luò)數(shù)據(jù)包的協(xié)議分析程序的流程圖系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)分析前面給出了網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序的總體結(jié)構(gòu)、功能模塊和工作流程。要實(shí)現(xiàn)程序預(yù)定的功能,就必須解決實(shí)現(xiàn)程序的關(guān)鍵技術(shù)。網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序要實(shí)現(xiàn)的關(guān)鍵技術(shù)包括:數(shù)據(jù)包捕獲技術(shù)、對(duì)TCP/IP各層根本協(xié)議進(jìn)行分析的技術(shù)、協(xié)議識(shí)別技術(shù)。1、數(shù)據(jù)包捕獲技術(shù):本程序要對(duì)網(wǎng)絡(luò)中的數(shù)據(jù)進(jìn)行分析,首先就要將網(wǎng)絡(luò)中的數(shù)據(jù)包捕獲下來(lái)。因此實(shí)現(xiàn)數(shù)據(jù)包捕獲是本程序設(shè)計(jì)的根底也是首先要解決的技術(shù)問(wèn)題。要實(shí)現(xiàn)共享以太網(wǎng)中的數(shù)據(jù)捕獲,各個(gè)平臺(tái)有不同的技術(shù)。在Linux有一個(gè)專門(mén)為程序員編寫(xiě)數(shù)據(jù)包捕獲程序而開(kāi)發(fā)的庫(kù):Libpcap。Libpcap是用戶態(tài)的數(shù)據(jù)包截獲API,具有獨(dú)立性和可移植性,支持BPF過(guò)濾機(jī)制等。通過(guò)調(diào)用Libpcap庫(kù)函數(shù)可以輕易的實(shí)現(xiàn)共享以太網(wǎng)中數(shù)據(jù)包的截獲,而且實(shí)時(shí)性相當(dāng)?shù)膹?qiáng),因?yàn)長(zhǎng)ibpcap是處于用戶態(tài)所以減少了系統(tǒng)的開(kāi)銷。Libpcap是一個(gè)基于BPF的開(kāi)放源碼的捕包函數(shù)庫(kù)。現(xiàn)有的大局部Linux捕包系統(tǒng)都是基于這套函數(shù)庫(kù)或者是在它根底上做一些針對(duì)性的改良。2、對(duì)TCP/IP各層根本協(xié)議分析的技術(shù):要對(duì)TCP/IP各層的根本協(xié)議進(jìn)行分析,主要是要對(duì)所要分析的協(xié)議有充分的了解,特別是對(duì)各種協(xié)議的報(bào)頭格式要有深入的了解。對(duì)各種協(xié)議進(jìn)行分析時(shí)主要是將報(bào)頭中的重要信息顯示給用戶,還有可能對(duì)數(shù)據(jù)包的正文信息解碼。3、協(xié)議識(shí)別技術(shù):由于OSI的7層協(xié)議模型,協(xié)議數(shù)據(jù)是從上到下封裝后發(fā)送的。對(duì)于協(xié)議的識(shí)別需要從下至上進(jìn)行。例如,首先對(duì)網(wǎng)絡(luò)層的協(xié)議識(shí)別后進(jìn)行脫去網(wǎng)絡(luò)層協(xié)議頭。將里面的數(shù)據(jù)交給傳輸層分析,這樣一直進(jìn)行下去直到應(yīng)用層。應(yīng)用層以下的各種協(xié)議一般都可以通過(guò)下一層的協(xié)議中的關(guān)鍵信息來(lái)識(shí)別。但是應(yīng)用層的協(xié)議種類相當(dāng)多,無(wú)法從下層協(xié)議中識(shí)別。對(duì)于應(yīng)用層協(xié)議識(shí)別的方法目前有幾種技術(shù):基于特征串的應(yīng)用層協(xié)議識(shí)別、VenusFastProtocolRecognition、以及端口識(shí)別。在本程序中我們采用的是端口識(shí)別技術(shù)。端口識(shí)別的原理是常用協(xié)議使用固定端口來(lái)進(jìn)行通信。端口識(shí)別的優(yōu)點(diǎn)是:簡(jiǎn)單、容易實(shí)現(xiàn)。缺點(diǎn)是:一些不常用協(xié)議不能被識(shí)別,常用協(xié)議修改端口后也無(wú)法識(shí)別。網(wǎng)絡(luò)數(shù)據(jù)包捕獲模塊的實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包捕獲簡(jiǎn)介網(wǎng)絡(luò)數(shù)據(jù)包截獲一般指通過(guò)截獲整個(gè)網(wǎng)絡(luò)的所有信息流量,根據(jù)信息源主機(jī),目標(biāo)主機(jī),效勞協(xié)議端口等信息簡(jiǎn)單過(guò)濾掉不關(guān)心的數(shù)據(jù),再將用戶感興趣的數(shù)據(jù)發(fā)送給更高層的應(yīng)用程序進(jìn)行分析。一方面要,網(wǎng)絡(luò)截取模塊要能保證截取到所有網(wǎng)絡(luò)上的數(shù)據(jù)包,尤其是檢測(cè)到被分片的數(shù)據(jù)包〔這可能蘊(yùn)涵著攻擊〕。另方面,數(shù)據(jù)截取模塊截取數(shù)據(jù)包的效率也是很重要的。它直接影響整個(gè)入侵檢測(cè)系統(tǒng)的運(yùn)行速度。從廣義的角度上看,一個(gè)包捕獲機(jī)制包含三個(gè)主要局部:最底層是針對(duì)特定操作系統(tǒng)的包捕獲機(jī)制,最高層是針對(duì)用戶程序的接口,第三局部是包過(guò)濾機(jī)制。不同的操作系統(tǒng)實(shí)現(xiàn)的底層包捕獲機(jī)制可能是不一樣的,但從形式上看大同小異。數(shù)據(jù)包常規(guī)的傳輸路徑依次為網(wǎng)卡、設(shè)備驅(qū)動(dòng)層、數(shù)據(jù)鏈路層、IP層、傳輸層、最后到達(dá)應(yīng)用程序。而數(shù)據(jù)包捕獲機(jī)制是在數(shù)據(jù)鏈路層增加一個(gè)旁路處理,對(duì)發(fā)送和接收到的數(shù)據(jù)包做過(guò)濾/緩沖等相關(guān)處理,最后直接傳遞到應(yīng)用程序。值得注意的是,包捕獲機(jī)制并不影響操作系統(tǒng)對(duì)數(shù)據(jù)包的網(wǎng)絡(luò)棧處理。對(duì)用戶程序而言,包捕獲機(jī)制提供了一個(gè)統(tǒng)一的接口,使用戶程序只需要簡(jiǎn)單的調(diào)用假設(shè)干函數(shù)就能獲得所期望的數(shù)據(jù)包。這樣一來(lái),針對(duì)特定操作系統(tǒng)的捕獲機(jī)制對(duì)用戶透明,使用戶程序有比擬好的可移植性。包過(guò)濾機(jī)制是對(duì)所捕獲到的數(shù)據(jù)包根據(jù)用戶的要求進(jìn)行篩選,最終只把滿足過(guò)濾條件的數(shù)據(jù)包傳遞給用戶程序?;贚ibpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲的實(shí)現(xiàn)Libpcap安裝Libpcap提供了系統(tǒng)獨(dú)立的用戶級(jí)別網(wǎng)絡(luò)數(shù)據(jù)包捕獲接口,并充分考慮到應(yīng)用程序的可移植性。Libpcap可以在絕大多數(shù)類unix平臺(tái)下工作。在windows平臺(tái)下,一個(gè)與Libpcap很類似的函數(shù)包winpcap提供捕獲功能,其官方網(wǎng)站是://winpcap.polito.it/Libpcap軟件包可從:///下載,解壓后依此執(zhí)行以下三條命令即可安裝。./configuremakemakeinstall但如果希望Libpcap能在linux上正常工作,那么必須使內(nèi)核支持“packet〞協(xié)議,也即在編譯內(nèi)核時(shí)翻開(kāi)配置選項(xiàng)CONFIG_PACKET(選項(xiàng)缺省為翻開(kāi))。Libpcap中根本的數(shù)據(jù)結(jié)構(gòu)和函數(shù)主要函數(shù):intpcap_findalldevs(pcap_if_t*alldevsp,char*errbuf)功能:枚舉系統(tǒng)所有網(wǎng)絡(luò)設(shè)備的信息參數(shù):alldevsp:是一個(gè)pcap_if_t結(jié)構(gòu)體的指針,如果函數(shù)pcap_findalldevs函數(shù)執(zhí)行成功,將獲得一個(gè)可用網(wǎng)卡的列表,而里面存儲(chǔ)的就是第一個(gè)元素的指針。Errbuf:存儲(chǔ)錯(cuò)誤信息的字符串。返回值:int,如果返回0那么執(zhí)行成功,錯(cuò)誤返回-1。pcap_t*pcap_open_live(char*device,intsnaplen,intpromisc,intto_ms,char*ebuf)功能:設(shè)置一個(gè)抓包描述符參數(shù):其第一個(gè)參數(shù)是我們?cè)谏弦还?jié)中指定的設(shè)備,snaplen是整形的,它定義了將被pcap捕獲的最大字節(jié)數(shù)。當(dāng)promisc設(shè)為true時(shí)將置指定接口為混雜模式〔然而,當(dāng)它置為false時(shí)接口仍處于混雜模式的特殊情況也是有可能的〕。to_ms是讀取時(shí)的超時(shí)值,單位是毫秒(如果為0那么一直嗅探直到錯(cuò)誤發(fā)生,為-1那么不確定)。最后,ebuf是一個(gè)我們可以存入任何錯(cuò)誤信息的字符串〔就像上面的errbuf〕。intpcap_compile(pcap_t*p,structbpf_program*fp,char*str,intoptimize,bpf_u_int32netmask)功能:編譯過(guò)濾規(guī)那么參數(shù):第一個(gè)參數(shù)是會(huì)話句柄〔pcap_t*handle在前一節(jié)的例如中〕。接下來(lái)的是我們存儲(chǔ)被編譯的過(guò)濾器版本的地址的引用。再接下來(lái)的那么是表達(dá)式本身,存儲(chǔ)在規(guī)定的字符串格式里。再下邊是一個(gè)定義表達(dá)式是否被優(yōu)化的整形量〔0為false,1為true,標(biāo)準(zhǔn)規(guī)定〕。最后,我們必須指定應(yīng)用此過(guò)濾器的網(wǎng)絡(luò)掩碼。函數(shù)返回-1為失敗,其他的任何值都說(shuō)明是成功的。intpcap_setfilter(pcap_t*p,structbpf_program*fp)功能:設(shè)置過(guò)濾規(guī)那么。參數(shù):這非常直觀,第一個(gè)參數(shù)是會(huì)話句柄,第二個(gè)參數(shù)是被編譯表達(dá)式版本的引用〔可推測(cè)出它與pcap_compile()的第二個(gè)參數(shù)相同〕。intpcap_loop(pcap_t*p,intcnt,pcap_handlercallback,u_char*user)功能:循環(huán)抓包直到用戶中止。參數(shù):第一個(gè)參數(shù)是會(huì)話句柄,接下來(lái)是一個(gè)整型,它告訴pcap_loop()在返回前應(yīng)捕獲多少個(gè)數(shù)據(jù)包〔假設(shè)為負(fù)值那么表示應(yīng)該一直工作直至錯(cuò)誤發(fā)生〕。第三個(gè)參數(shù)是回調(diào)函數(shù)的名稱〔正像其標(biāo)識(shí)符所指,無(wú)括號(hào)〕。最后一個(gè)參數(shù)在有些應(yīng)用里有用,但更多時(shí)候那么置為NULL。數(shù)據(jù)結(jié)構(gòu):structpcap_if{structpcap_if*next;char*name;char*description;structpcap_addr*addresses;u_intflags;};pcap_if*next;如果非空,指向鏈的下一個(gè)元素。如果為空是鏈的最后一個(gè)元素。char*name;指向一個(gè)字符串,該字符串是傳給pcap_open_live()函數(shù)的設(shè)備名;char*description;如果非空,指向一個(gè)對(duì)設(shè)備的人性化的描述字符串。pcap_addr*addresses;指向網(wǎng)卡地址鏈中的第一個(gè)元素。u_intflags;PCAP_IF_網(wǎng)卡的標(biāo)志?,F(xiàn)在唯一可用的標(biāo)識(shí)是PCAP_IF_LOOKBACK,它被用來(lái)標(biāo)識(shí)網(wǎng)卡是不是lookback網(wǎng)卡。structpcap_pkthdr{structtimevalts;/*timestamp*/bpf_u_int32caplen;/*lengthofportionpresent*/bpf_u_int32len;/*lengththispacket(offwire)*/};timevalts;數(shù)據(jù)報(bào)時(shí)間戳;bpf_u_int32caplen;當(dāng)前分片的長(zhǎng)度;dpf_u_int32len;這個(gè)數(shù)據(jù)報(bào)的長(zhǎng)度;細(xì)節(jié)描述:在dump文件中的每個(gè)數(shù)據(jù)報(bào)都有這樣一個(gè)報(bào)頭。它用來(lái)處理不同數(shù)據(jù)報(bào)網(wǎng)卡的不同報(bào)頭問(wèn)題。structpcap_stat{u_intps_recv;/*numberofpacketsreceived*/u_intps_drop;/*numberofpacketsdropped*/u_intps_ifdrop;/*dropsbyinterfaceXXXnotyetsupported*/};u_intps_recv;接受數(shù)據(jù)報(bào)的數(shù)目;u_intps_drop;被驅(qū)動(dòng)程序丟棄的數(shù)據(jù)報(bào)的數(shù)目;u_intps_ifdrop;被網(wǎng)卡丟棄的數(shù)據(jù)報(bào)的數(shù)目;structpcap_addr{pcap_addr*next;sockaddr*addr;sockaddr*netmask;sockaddr*broadaddr;sockaddr*dstaddr;};pcap_addr*next;如果非空,指向鏈表中一個(gè)元素的指針;空表示鏈表中的最后一個(gè)元素。sockaddr*addr;指向包含一個(gè)地址的sockaddr的結(jié)構(gòu)的指針。sockaddr*netmask;如果非空,指向包含相對(duì)于addr指向的地址的一個(gè)網(wǎng)絡(luò)掩碼的結(jié)構(gòu)。sockaddr*broadaddr;如果非空,指向包含相對(duì)于addr指向的地址的一個(gè)播送地址,如果網(wǎng)絡(luò)不支持播送可能為空。sockaddr*dstaddr;如果非空,指向一個(gè)相對(duì)于addr指向的源地址的目的地址,如果網(wǎng)絡(luò)不支持點(diǎn)對(duì)點(diǎn)通訊,那么為空。數(shù)據(jù)捕獲模塊的實(shí)現(xiàn)第一步調(diào)用pcap_findalldevs查找出所有可用的網(wǎng)卡,顯示出來(lái),并接收用戶選擇網(wǎng)卡。第二步用戶輸入用于捕獲數(shù)據(jù)包的網(wǎng)卡后,調(diào)用pcap_open_live生成一個(gè)抓包描述符。第三步通過(guò)調(diào)用pcap_datalink檢查該網(wǎng)卡所在網(wǎng)絡(luò)是不是以太網(wǎng),如果不是那么中止程序。第四步接收用戶輸入的過(guò)濾條件,調(diào)用pcap_compile和pcap_setfilter生成過(guò)濾規(guī)那么。第五步調(diào)用pcap_loop進(jìn)行循環(huán)捕獲數(shù)據(jù)包,直到用戶中止。具體流程入以下圖所示:ppcap_findalldevs()pcap_open_live()pcap_datalink()pcap_compile()pcap_setfilter()pcap_loop()endBeginNNYY圖3-1數(shù)據(jù)捕獲模塊流程圖協(xié)議分析模塊的實(shí)現(xiàn)雖然到此為止已經(jīng)可以順利完成數(shù)據(jù)包的監(jiān)聽(tīng)工作,但這并不意味著己經(jīng)大功告成了,因?yàn)閺那懊娴臄?shù)據(jù)包監(jiān)聽(tīng)的原理中可以知道,數(shù)據(jù)包捕獲程序工作在網(wǎng)絡(luò)底層,將網(wǎng)卡設(shè)置為混雜模式以后,從網(wǎng)絡(luò)底層捕獲到的數(shù)據(jù)包會(huì)直接往上發(fā)給應(yīng)用程序進(jìn)行處理,而不再像普通的數(shù)據(jù)包那樣經(jīng)過(guò)操作系統(tǒng)的層層過(guò)濾。這樣一來(lái),應(yīng)用程序收到的數(shù)據(jù)包是最原始的數(shù)據(jù)包,也就是說(shuō)監(jiān)聽(tīng)主機(jī)接收到的數(shù)據(jù)包中,除了數(shù)據(jù)包本身的內(nèi)容之外,還帶有從對(duì)方主機(jī)中的傳輸層、網(wǎng)絡(luò)層以及數(shù)據(jù)鏈路層的數(shù)據(jù)包頭信息,所以要想獲得數(shù)據(jù)包里的應(yīng)用數(shù)據(jù),是需要我們自己來(lái)按照每一層的協(xié)議剝離數(shù)據(jù)包頭中的每一層首部?jī)?nèi)容的,這就是協(xié)議分析需要完成的工作。網(wǎng)絡(luò)協(xié)議分析的總體流程網(wǎng)絡(luò)功能的分層帶來(lái)了網(wǎng)絡(luò)協(xié)議的層次結(jié)構(gòu),網(wǎng)絡(luò)數(shù)據(jù)在傳送時(shí),同樣也是被分解成一個(gè)個(gè)的數(shù)據(jù)報(bào)逐層傳送的,在兩臺(tái)主機(jī)的實(shí)際通信過(guò)程中,從邏輯上講,是兩臺(tái)主機(jī)的對(duì)等層直接通信。而實(shí)際上,數(shù)據(jù)包并不是從某一計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)的第N層直接傳導(dǎo)另一計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)的第N層的,而是從這臺(tái)計(jì)算機(jī)的某一層直接傳送N十1層,直至到達(dá)物理層最后分解為比特流流經(jīng)物理介質(zhì)到達(dá)另一臺(tái)計(jì)算機(jī),然后在從另一臺(tái)計(jì)算機(jī)中的底層逐層向上傳送的。當(dāng)數(shù)據(jù)包被傳輸?shù)侥骋粚拥臅r(shí)候,該層都會(huì)對(duì)數(shù)據(jù)包進(jìn)行加工,在發(fā)送方通常是加上一個(gè)與該層協(xié)議有關(guān)的控制或標(biāo)志信息,即數(shù)據(jù)包的包頭或包尾;而在接受方那么是需要逐層拆下本層標(biāo)志,即去掉數(shù)據(jù)包的包頭或包尾,根據(jù)控制信息進(jìn)行相應(yīng)的處理,將分解后的數(shù)據(jù)報(bào)逐層上傳,直至應(yīng)用程序獲得最終數(shù)據(jù)。比方發(fā)送方在數(shù)據(jù)鏈路層通常會(huì)在包頭加上目的MAC地址、源MAC地址、其他一些具體網(wǎng)絡(luò)信息及幀定界符,在包尾加上循環(huán)冗余碼,并使用字節(jié)填充或位填充,由接收方數(shù)據(jù)鏈路層去掉包頭與包尾進(jìn)行相關(guān)解釋工作。數(shù)據(jù)包的加工工作如圖4-1所示:應(yīng)用程序TCP應(yīng)用程序TCPIP以太網(wǎng)驅(qū)動(dòng)程序用戶數(shù)據(jù)用戶數(shù)據(jù)APP首部應(yīng)用數(shù)據(jù)TCP首部應(yīng)用數(shù)據(jù)TCP首部IP首部應(yīng)用數(shù)據(jù)TCP首部IP首部以太網(wǎng)頭以太網(wǎng)尾圖4-1數(shù)據(jù)封裝示意TCP傳給IP的數(shù)據(jù)單元稱作TCP報(bào)文段或簡(jiǎn)稱為T(mén)CP段(TCPSegment);IP傳給網(wǎng)絡(luò)接口層的數(shù)據(jù)單元稱作IP數(shù)據(jù)報(bào)(IPdatagram);通過(guò)以太網(wǎng)傳輸?shù)谋忍亓鞣Q作幀,分組既可以是一個(gè)IP數(shù)據(jù)報(bào)也可以是IP數(shù)據(jù)報(bào)的一個(gè)片(fragment)。協(xié)議分析就是數(shù)據(jù)封裝的逆過(guò)程。協(xié)議分析的流程圖如圖4-2所示:開(kāi)始開(kāi)始讀取原始數(shù)據(jù)報(bào)文提取并分析鏈路層報(bào)頭提取并分析IP地址信息提取并分析TCP/UDP地址信息根據(jù)端口判斷應(yīng)用層協(xié)議顯示提取報(bào)頭中的主要信息結(jié)束顯示圖4-2網(wǎng)絡(luò)協(xié)議分析流程圖從圖可以看到,對(duì)于監(jiān)聽(tīng)程序捕獲到的數(shù)據(jù)報(bào),需要按以下步驟分層次進(jìn)行協(xié)議分析:(1)首先是讀取數(shù)據(jù)鏈路層的報(bào)頭,從報(bào)頭中可以得到:計(jì)算機(jī)的源MAC地址和目的MAC地址、數(shù)據(jù)包的長(zhǎng)度以及上層協(xié)議的類型。(2)然后需要去掉數(shù)據(jù)鏈層的報(bào)頭,此時(shí)可以獲得IP數(shù)據(jù)報(bào)、arp、rarp數(shù)據(jù)包,在這一層中可以對(duì)IP數(shù)據(jù)報(bào)做一定的統(tǒng)計(jì)和分析等等;對(duì)arp、rarp數(shù)據(jù)包可以獲得發(fā)送端IP和目的IP等重要信息。(3)對(duì)于IP數(shù)據(jù)報(bào)去除網(wǎng)絡(luò)層的報(bào)頭以后,可以獲得傳輸層數(shù)據(jù)報(bào),對(duì)TCP/UDP數(shù)據(jù)包的報(bào)頭進(jìn)行分析在這一層中還可以獲得數(shù)據(jù)報(bào)的端口號(hào)信息,根據(jù)端口號(hào)進(jìn)一步判斷數(shù)據(jù)報(bào)屬于何種應(yīng)用層協(xié)議。(4)對(duì)數(shù)傳輸層數(shù)據(jù)報(bào)去除掉傳輸層報(bào)頭以后,就獲得了應(yīng)用層數(shù)據(jù)報(bào),在應(yīng)用層進(jìn)行協(xié)議分析的工作就是按照應(yīng)用層的工作原理、協(xié)議標(biāo)準(zhǔn),復(fù)原獲得應(yīng)用層的內(nèi)容,如SMTF/POP3協(xié)議分析可以復(fù)原出正在傳輸?shù)泥]件信息,F(xiàn)TP協(xié)議分析可以復(fù)原出傳輸中的文件名以及用戶名口令密碼等信息,協(xié)議分析可以復(fù)原出目標(biāo)主機(jī)瀏覽網(wǎng)頁(yè)的原貌等等。(5)對(duì)所有的數(shù)據(jù)報(bào)頭分析處理后,取出其中的主要信息然后顯示給用戶。對(duì)TCP/IP模型中各層協(xié)議的分析前面的內(nèi)容已經(jīng)提到過(guò),我們?cè)趯?duì)數(shù)據(jù)包根據(jù)應(yīng)用層協(xié)議進(jìn)行分析的時(shí)候都需要首先剝離數(shù)據(jù)包中的包頭并且需要根據(jù)包頭信息判斷是何種應(yīng)用層協(xié)議。下面就按照數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層到傳輸層再到應(yīng)用層的順序詳細(xì)的講解每層包頭的結(jié)構(gòu)以及如何對(duì)每層的數(shù)據(jù)報(bào)進(jìn)行協(xié)議分析。以太網(wǎng)首部的分析與提取因?yàn)槊恳粋€(gè)使用Libpcap捕獲的數(shù)據(jù)包,都會(huì)有一個(gè)指向原始報(bào)文頭的指針。假設(shè)這個(gè)指針為p。把這個(gè)指針強(qiáng)制轉(zhuǎn)換為以太幀格式:(structether_header*)p。我們就得到了以太幀的報(bào)文頭,就可以對(duì)該層協(xié)議進(jìn)行分析和處理。由于在定義IEEE802.3以前,以太網(wǎng)就存在,因?yàn)橛卸鄠€(gè)以太網(wǎng)標(biāo)準(zhǔn),所以TCP/IP可以支持多種不同的鏈路層協(xié)議,如以太網(wǎng)、令牌環(huán)網(wǎng)、FDDI(光纖分布式數(shù)據(jù)接口)等。以太網(wǎng)是當(dāng)今TCP/IP采用的主要的局域網(wǎng)技術(shù),它采用一種稱作CSMA/CD的媒體接入方法,其意思是帶沖突檢測(cè)的載波偵聽(tīng)多路接入(CarrierSenseMultipleAccesswithCollisionDetection),發(fā)送端在傳輸之前要偵聽(tīng)信道。在以太網(wǎng)內(nèi)的IP和ARP數(shù)據(jù)報(bào)或者使用以太網(wǎng)II的或者使用IEEE:802.3子網(wǎng)訪問(wèn)協(xié)議(SNAP)來(lái)封裝數(shù)據(jù)。這里我們只討論最為常用的以太網(wǎng)II數(shù)據(jù)報(bào)格式,這是在RFC894中定義的,如圖4-3所示,這是以太網(wǎng)II的封裝格式:字節(jié)66246~15004目的地址源地址類型數(shù)據(jù)FCS圖4-3以太網(wǎng)II的封裝格式其中每個(gè)字段的含義如下:(1)幀初始同步((Preamble):8字節(jié)長(zhǎng),提供接收端的同步和分隔幀的功能。需要注意的是,幀初始同步字段在網(wǎng)絡(luò)監(jiān)視器中是不可見(jiàn)的。(2)目的地址(DestinationAddress):6字節(jié)長(zhǎng),指明目的地址。目的地址可以是單播、多播或者以太網(wǎng)的播送地址。其中,單播地址也稱為MAC地址。(3)源地址((SourceAddress):6字節(jié)長(zhǎng),指明發(fā)送節(jié)點(diǎn)的單播地址。(4)以太網(wǎng)類型(EtherType):2字節(jié)長(zhǎng),指明在以太網(wǎng)幀中上層協(xié)議的類型。這個(gè)字段被用來(lái)將以太網(wǎng)的有效載荷傳給正確的上層協(xié)議實(shí)體。如果在該字段中未注明有上層協(xié)議實(shí)體接收有效載荷幀。該幀將被丟棄。比方,對(duì)于IP數(shù)據(jù)報(bào),這個(gè)字段的值為0x0800;對(duì)于ARP消息,該字段的值被設(shè)置為0x0806。(5)有效載荷(Payload):以太網(wǎng)II的幀的有效載荷由上層協(xié)議的協(xié)議數(shù)據(jù)單元組成,是數(shù)據(jù)包本身的具體內(nèi)容。以太網(wǎng)II能發(fā)送最大1500字節(jié)的有效載荷。因?yàn)橐蕴W(wǎng)具有沖突檢測(cè)機(jī)制,以太網(wǎng)II的最小幀有效載荷為46字節(jié)。如果上層的協(xié)議數(shù)據(jù)單元小于46字節(jié),那么必須填充到46字節(jié)。(6)幀校驗(yàn)序列(FrameCheckSequence,FCS):4字節(jié)長(zhǎng),提供位級(jí)別的完整性校驗(yàn),也被稱為循環(huán)冗余校驗(yàn)(CRC)。本子段對(duì)于網(wǎng)絡(luò)監(jiān)視器來(lái)說(shuō)同樣是不可見(jiàn)的。IP首部的分析與提取因?yàn)橐蕴珟瑘?bào)頭的長(zhǎng)度都是一樣的。所以在提取IP包頭的時(shí)候可以將指針P加上以太幀包頭的長(zhǎng)度后,把格式強(qiáng)制轉(zhuǎn)化為IP包頭格式即:(structip*)(p+sizeof(structether_header))。就得到了指向IP報(bào)頭的指針,我們就可以進(jìn)行相應(yīng)的分析了。IP網(wǎng)絡(luò)上的主機(jī)是通過(guò)IP數(shù)據(jù)報(bào)來(lái)交換數(shù)據(jù)的,IP數(shù)據(jù)報(bào)包括數(shù)據(jù)單元和首部字段,其中,數(shù)據(jù)單元包含要交換的所有信息,首部字段描述這個(gè)信息和數(shù)據(jù)報(bào)本身。只要設(shè)備需要通過(guò)IP網(wǎng)絡(luò)向其他網(wǎng)絡(luò)發(fā)送數(shù)據(jù),它就會(huì)創(chuàng)立一個(gè)數(shù)據(jù)報(bào)來(lái)發(fā)送數(shù)據(jù)。實(shí)際上,IP數(shù)據(jù)報(bào)是作為IP包來(lái)發(fā)送的,IP包將IP數(shù)據(jù)報(bào)通過(guò)交換設(shè)備一跳一跳地中繼到目的系統(tǒng)。雖然很多時(shí)候一個(gè)IP數(shù)據(jù)報(bào)就是一個(gè)IP包,但它們?cè)诟拍钌鲜遣煌膶?shí)體。如圖4-4是IP數(shù)據(jù)報(bào)在RFC791中定義的封裝格式:比特04816202431版本報(bào)頭長(zhǎng)效勞類型數(shù)據(jù)包總長(zhǎng)標(biāo)識(shí)符標(biāo)志片偏移生存時(shí)間協(xié)議號(hào)報(bào)頭校驗(yàn)和源IP地址目的IP地址選項(xiàng)填充碼數(shù)據(jù)圖4-4IP數(shù)據(jù)報(bào)格式其中每個(gè)字段的含義如下:(1)版本(version):長(zhǎng)度為4位,顯示IP報(bào)頭的版本。目前在所有互聯(lián)網(wǎng)絡(luò)和Internet中使用的標(biāo)準(zhǔn)IP版本號(hào)是4〔即IPv4〕。(2)報(bào)頭長(zhǎng)(headerlength):長(zhǎng)度為4位,表示IP頭的長(zhǎng)度。典型的IP頭不包括任何選項(xiàng),長(zhǎng)度為20字節(jié)。(3)效勞類型(typeofservice):長(zhǎng)度為8位,表示按照優(yōu)先權(quán)、平安性以及吞吐量等數(shù)據(jù)包的效勞類型。(4)數(shù)據(jù)包總長(zhǎng)(totallength):長(zhǎng)度為2位,表示IP數(shù)據(jù)報(bào)總的字節(jié)數(shù),包括IP頭和有效載荷。(5)標(biāo)識(shí)(identifier):長(zhǎng)度為2位,作為分割以及組裝數(shù)據(jù)包時(shí)的識(shí)別標(biāo)志來(lái)使用,被分割的數(shù)據(jù)包被分配有同一數(shù)值標(biāo)識(shí)。(6)標(biāo)志(flags):長(zhǎng)度為3位,包含兩個(gè)用于分片的標(biāo)志。其中一個(gè)標(biāo)志是用于表示IP有效載荷是否符合分片的標(biāo)準(zhǔn),而另一個(gè)是表示對(duì)于已分片的IP數(shù)據(jù)報(bào)是否還有更多的分片。(7)片偏移(fragmentoffset):長(zhǎng)度為13位,表示分片相對(duì)于原始IP數(shù)據(jù)報(bào)有效載荷的偏移量。(8)生存時(shí)間〔timetolive):長(zhǎng)度為1字節(jié),表示IP數(shù)據(jù)包的壽命,目的是廢棄掉在網(wǎng)絡(luò)中循環(huán)著的IP數(shù)據(jù)包,一般地,每通過(guò)一次路由器,生存時(shí)間就被減去1,當(dāng)生存時(shí)間為0時(shí),數(shù)據(jù)包將被拋棄。(9)協(xié)議(protocol):長(zhǎng)度為1字節(jié),表示包含在有效載荷中的上層協(xié)議。IP協(xié)議字段的一般值有:1表示ICMP,2表示IGMP,6表示TCP,17表示UDP等等。(10)報(bào)頭校驗(yàn)和(headerchecksum):長(zhǎng)度為2字節(jié),是用于確認(rèn)IP數(shù)據(jù)包是否己毀壞的字段。(11)源目的IP地址(source/destinationaddress):長(zhǎng)度為4字節(jié),包含源/目的主機(jī)的IP地址。(12)選項(xiàng)和填充:此字段跟在IP頭之后,但必須是以4個(gè)字節(jié)為增量單位,以使IP頭的大小能用報(bào)頭長(zhǎng)度字段表示。TCP/UDP首部的分析與提取TCP/UDP報(bào)文頭部的獲取跟IP報(bào)文頭部的獲取類似,將P指針的位置向后移IP報(bào)文長(zhǎng)度個(gè)位置即可(structtcphdr*)(p+sizeof(structether_header)+4*iph->ip_hl)。然后就可以對(duì)TCP/UDP數(shù)據(jù)包進(jìn)行分析了。TCP(傳輸控制協(xié)議)為面向事務(wù)的應(yīng)用提供了可靠的面向連接的傳輸協(xié)議。TCP正為目前Intemet上幾乎所有的應(yīng)用協(xié)議所利用,這是因?yàn)榇缶植繎?yīng)用程序都需要可靠的、可糾錯(cuò)的傳輸協(xié)議以保證不喪失或破壞數(shù)據(jù)。盡管IP已經(jīng)做了大局部的搜集工作,并且根據(jù)需要在Internet上發(fā)送數(shù)據(jù)報(bào)和數(shù)據(jù)包,但是IP是不可靠的協(xié)議,并不能保證數(shù)據(jù)報(bào)或者數(shù)據(jù)包能夠原封不動(dòng)的到達(dá)其目的地,TCP作為IP的上層協(xié)議,為IP提供了可靠性效勞,確保了IP數(shù)據(jù)報(bào)中的數(shù)據(jù)的正確性。如圖4-5所示,是TCP段的封裝結(jié)構(gòu)。比特08162431源端口目的端口順序號(hào)確認(rèn)號(hào)數(shù)據(jù)偏移保存標(biāo)志窗口校驗(yàn)和緊急指示符選項(xiàng)〔長(zhǎng)度可變〕填充數(shù)據(jù)圖4-5TCP數(shù)據(jù)報(bào)格式其中,每一段的含義如下:(1)源端口(sourceport):指示發(fā)送TCP段的源應(yīng)用層協(xié)議,是一個(gè)2字節(jié)的字段。IP頭中的源地址和TCP頭中的源端口聯(lián)合起來(lái)提供一個(gè)源套接字。TCP端口為T(mén)CP連接數(shù)據(jù)的傳送定義了一種位置,說(shuō)明段被發(fā)送至的應(yīng)用層進(jìn)程的一個(gè)目的端口。在一般情況下,應(yīng)用層協(xié)議的效勞器端在己知的端口上偵聽(tīng)。表4-1顯示了常用的應(yīng)用層協(xié)議對(duì)應(yīng)的端口號(hào)。(2)目的端口(destinationport):指示目的應(yīng)用層協(xié)議,是一個(gè)2字節(jié)字段。IP頭中的目的IP地址和TCP頭中的端口聯(lián)合起來(lái)提供一個(gè)目的套接字。(3)序列號(hào)(sequencenumber):指示段的第一個(gè)8位組的輸出字節(jié)流的序列號(hào),是一個(gè)4字節(jié)字段。用于保證數(shù)據(jù)的到達(dá)順序與可靠性。利用隨機(jī)值確定初始值,以字節(jié)為單位表示所發(fā)送數(shù)據(jù)的位置。(4)確認(rèn)號(hào)(acknowledgmentnumber):一個(gè)4位的字段,指示接收方希望收到的輸入字節(jié)流中下一個(gè)8位組的序列號(hào)。是用于保證可靠性確實(shí)認(rèn)號(hào)碼。(5)數(shù)據(jù)偏移(dataoffset):表示TCP數(shù)據(jù)的起始位置,以4字節(jié)的整數(shù)倍表示,數(shù)據(jù)偏移字段也是TCP頭的大小。在不包括選項(xiàng)的情況下,TCP報(bào)頭是20個(gè)字節(jié),offset的值為5。(6)保存(reserved):一個(gè)6字節(jié)字段,為了未來(lái)的使用而保存。(7)標(biāo)志(flags):一個(gè)6字節(jié)字段,指示6個(gè)TCP標(biāo)志。這6個(gè)標(biāo)志是:URG(緊急)、ACK(確訓(xùn))、PSH(推)、RST(復(fù)句)、SYN(同步)、FIN(結(jié)束)。(8)窗口(window):一個(gè)2字節(jié)的字段,說(shuō)明該段的發(fā)送方的接收緩沖區(qū)中可供使用的空間有多少字節(jié)數(shù)。窗口大小的廣告是一種實(shí)現(xiàn)接收流流控制的方式。(9)校驗(yàn)和(checksum):一個(gè)2字節(jié)的字段,為T(mén)CP段提供位級(jí)別的完整性校驗(yàn)。(10)緊急指針(urgentpointer):一個(gè)2字節(jié)字段,它說(shuō)明段中緊急數(shù)據(jù)的位置。(11)選項(xiàng)(option):為提高利用TCP的通信性能所準(zhǔn)備的選項(xiàng)。用戶數(shù)據(jù)報(bào)協(xié)議(UDP)是定義用來(lái)在互連網(wǎng)絡(luò)環(huán)境中提供包交換的計(jì)算機(jī)通信的協(xié)議。此協(xié)議默認(rèn)認(rèn)為網(wǎng)路協(xié)議(IP)是其下層協(xié)議。此協(xié)議提供了向另一用戶程序發(fā)送信息的最簡(jiǎn)便的協(xié)議機(jī)制。此協(xié)議是面向操作的,未提供提交和復(fù)制保護(hù)。以下是UDP協(xié)議的報(bào)文頭格式:比特源端口目的端口長(zhǎng)度校驗(yàn)和0 16 31圖4-6TCP數(shù)據(jù)包格式(1)源端口—16位。源端口是可選字段。當(dāng)使用時(shí),它表示發(fā)送程序的端口,同時(shí)它還被認(rèn)為是沒(méi)有其它信息的情況下需要被尋址的答復(fù)端口。如果不使用,設(shè)置值為0。(2)目的端口—16位。目標(biāo)端口在特殊因特網(wǎng)目標(biāo)地址的情況下具有意義。(3)長(zhǎng)度—16位。該用戶數(shù)據(jù)報(bào)的八位長(zhǎng)度,包括協(xié)議頭和數(shù)據(jù)。長(zhǎng)度最小值為8。(4)校驗(yàn)和—16位。IP協(xié)議頭、UDP協(xié)議頭和數(shù)據(jù)位,最后用0填補(bǔ)的信息假協(xié)議頭總和。如果必要的話,可以由兩個(gè)八位復(fù)合而成。應(yīng)用層協(xié)議的識(shí)別與分析對(duì)于應(yīng)用層協(xié)議本程序采用的是端口識(shí)別技術(shù)。端口是應(yīng)用程序在網(wǎng)絡(luò)通信上使用的數(shù)據(jù)輸入輸出口。端口分為兩種。一種為公認(rèn)端口,另一種為短暫端口。公認(rèn)端口被分配給網(wǎng)絡(luò)上的效勞程序。當(dāng)某一網(wǎng)絡(luò)客戶端利用其他計(jì)算機(jī)上的效勞程序時(shí),在根據(jù)IP地址指定效勞計(jì)算機(jī)的同時(shí),也指定了被分配的效勞程序的公認(rèn)端口號(hào)。由此,可以利用與端口號(hào)對(duì)應(yīng)的特定的網(wǎng)絡(luò)效勞。公認(rèn)端口號(hào)有很多,工人端口號(hào)被定義在unix類操作系統(tǒng)下的/etc/services文件中下表列出了其中的一局部。表4-1常用協(xié)議和對(duì)應(yīng)的端口號(hào)上層協(xié)議端口號(hào)/協(xié)議上層協(xié)議的意義Echo7/dup回應(yīng)請(qǐng)求ftp-data20/tcp,20/udp在ftp上數(shù)據(jù)傳送路徑ftp21/tcp,21/udp在ftp上控制數(shù)據(jù)通信路徑telnet23/tcp,23/udp用于遠(yuǎn)程終端連接的標(biāo)準(zhǔn)Smtp25/tcp,25/udp郵件發(fā)送效勞Time37/tcp,37/udp計(jì)時(shí)效勞器Nameserver42/tcp,42/udp主機(jī)名效勞器Nicname43/tcp,43/udpWhois效勞Domain53/tcp,53/udp域名效勞器Tftp69/tcp,69/udp小型文件傳輸協(xié)議Gopher70/tcp,70/udp信息效勞Finger79/tcp,79/udp用戶信息80/tcp,80/udpwwwPop3110/tcp,110/udp郵局協(xié)議Sqlserv118/tcp,118/udpSQL效勞nntp119/tcp,119/udp網(wǎng)絡(luò)新聞傳輸協(xié)議Ntp123/tcp,123/udp網(wǎng)絡(luò)時(shí)間協(xié)議Netbios-ns137/tcp,137/udpNetbios名稱效勞Netbios-dgm138/tcp,138/udpNetbios會(huì)議效勞短暫端口號(hào)是客服端程序與效勞器程序進(jìn)行通信時(shí),短暫使用端口號(hào)。短暫端口號(hào)是不可再生的,被運(yùn)行系統(tǒng)分配給客戶端程序。因?yàn)槌S枚丝诤统S脜f(xié)議對(duì)應(yīng),我們可以利用這個(gè)原理來(lái)識(shí)別應(yīng)用層協(xié)議。關(guān)鍵代碼如下voidgetportname(intportn,charportch[],char*protocol){if(getservbyport(htons(portn),protocol)!=NULL){strcpy(portch,getservbyport(htons(portn),protocol)->s_name);}else{//短暫端口等找不到名稱時(shí)sprintf(portch,"e");}}現(xiàn)在介紹一下getportname()函數(shù)。此函數(shù)完成的是取得端口號(hào)和區(qū)別TCP/UDP類別的兩個(gè)參數(shù)并返回端口名稱的工作。getportname()函數(shù)的核心是調(diào)用getservbyport()函數(shù)。用這個(gè)函數(shù)來(lái)檢索與端口相關(guān)的信息,吧結(jié)果作為指向servent型的結(jié)構(gòu)體的指針并返回。servent型的結(jié)構(gòu)體在netdb.h頭文件中被聲明。在這里使用的s_name成員。把端口名稱賦給s_name。getportname()函數(shù)檢索端口名稱失敗時(shí),返回NULL。這是因?yàn)榈玫降亩丝谔?hào)是短暫端口號(hào),沒(méi)有檢索到它的端口名稱。這時(shí),常把端口號(hào)作為端口的名稱來(lái)用。程序運(yùn)行與測(cè)試測(cè)試環(huán)境硬件環(huán)境處理器P3800Mhz以上;內(nèi)存128M以上;多臺(tái)普通搭載網(wǎng)卡的PC、經(jīng)過(guò)集線器互聯(lián)。程序運(yùn)行環(huán)境安裝有Libpcap8.0以上版本的Linux操作系統(tǒng)。測(cè)試步驟首先,用多臺(tái)PC搭建局域網(wǎng)絡(luò)。其次,選定一臺(tái)PC對(duì)數(shù)據(jù)包捕獲模塊、規(guī)那么過(guò)濾模塊、協(xié)議分析模塊進(jìn)行功能測(cè)試。然后對(duì)每個(gè)功能模塊進(jìn)行數(shù)據(jù)合法性檢查、數(shù)據(jù)一致性檢查。最后對(duì)關(guān)鍵模塊進(jìn)行回歸測(cè)試。測(cè)試結(jié)果評(píng)價(jià)本設(shè)計(jì)在FedoraCore4環(huán)境試運(yùn)行下,編碼后經(jīng)過(guò)屢次測(cè)試并將發(fā)現(xiàn)的錯(cuò)誤及時(shí)修改,系統(tǒng)運(yùn)行正常,根本到達(dá)設(shè)計(jì)目標(biāo),運(yùn)行結(jié)果比擬良好。圖5-1是程序運(yùn)行時(shí)的界面。圖5-1程序運(yùn)行界面結(jié)論在研究了網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)和協(xié)議分析技術(shù)的根底上,本文設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)網(wǎng)絡(luò)數(shù)據(jù)包的議分析程序,該程序具有以下特點(diǎn):(1)將能夠監(jiān)聽(tīng)局域網(wǎng)中的數(shù)據(jù)。(2)能夠識(shí)別應(yīng)用層協(xié)議。與此同時(shí),隨著網(wǎng)絡(luò)技術(shù)的快速開(kāi)展,網(wǎng)絡(luò)帶寬越來(lái)越寬,網(wǎng)絡(luò)規(guī)模越來(lái)越大,網(wǎng)絡(luò)結(jié)構(gòu)越來(lái)越復(fù)雜,可以從以下三個(gè)方面對(duì)本系統(tǒng)做改良和更進(jìn)一步的深入研究。(1)增強(qiáng)監(jiān)聽(tīng)系統(tǒng)的控制功能。目前本系統(tǒng)只能被動(dòng)的接收網(wǎng)絡(luò)數(shù)據(jù),并不能對(duì)監(jiān)聽(tīng)點(diǎn)進(jìn)行控制,如果能夠增加控制功能比方可以設(shè)定監(jiān)聽(tīng)程序的啟動(dòng)/暫停,無(wú)疑會(huì)使得更加靈活強(qiáng)大。(2)與硬件相結(jié)合開(kāi)發(fā)成熟產(chǎn)品。在高速寬帶的網(wǎng)絡(luò)中進(jìn)行監(jiān)聽(tīng)時(shí),由于受限于目前網(wǎng)絡(luò)接口、計(jì)算機(jī)總線結(jié)構(gòu)、CPU處理能力、磁盤(pán)I/O性能等的影響,不可防止會(huì)出現(xiàn)丟包、無(wú)法實(shí)時(shí)控制等情況,這時(shí)應(yīng)類似于網(wǎng)絡(luò)分析儀一樣結(jié)合硬件充分發(fā)揮系統(tǒng)的潛能開(kāi)發(fā)成熟產(chǎn)品。(3)分布式開(kāi)展。把數(shù)據(jù)報(bào)捕獲、協(xié)議分析、數(shù)據(jù)分析、相應(yīng)控制等都集中在一起必然對(duì)整個(gè)系統(tǒng)的性能存在影響,所以可以把各個(gè)組件分散設(shè)計(jì)并協(xié)同工作,甚至一個(gè)組件比方數(shù)據(jù)報(bào)捕獲組件都可以部署在多個(gè)監(jiān)控點(diǎn)。可見(jiàn)網(wǎng)絡(luò)數(shù)據(jù)包的監(jiān)聽(tīng)技術(shù)在今天的網(wǎng)絡(luò)信息時(shí)代是重要的、長(zhǎng)期的研發(fā)課題,它的研究成功將具有重要的社會(huì)效益和理論研究意義。參考文獻(xiàn)[1]小高知宏[日].TCP/IP數(shù)據(jù)包分析程序篇[M].葉明譯.北京:科學(xué)出版社,2003。[2]WRichardStevens.TCP/IP詳解卷1[M].范建華胥光芒張濤譯.北京:機(jī)械工業(yè)出版社,2000。[3]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].北京:電子工業(yè)出版社,2003。[4]劉文濤.網(wǎng)絡(luò)平安開(kāi)發(fā)包詳解[M].北京:電子工業(yè)出版社,2005。[5]Libpcap的數(shù)據(jù)結(jié)構(gòu)和函數(shù)介紹[OL].LinuxAid網(wǎng)站.://oldsite.linuxaid/developer/showdev.jsp?i=525,2005-10-1。[6]王學(xué)磊.網(wǎng)絡(luò)數(shù)據(jù)包截獲與分析研究[D].沈陽(yáng):東北大學(xué)[碩士論文],2004。[7]王皓.遠(yuǎn)程網(wǎng)絡(luò)數(shù)據(jù)包監(jiān)聽(tīng)技術(shù)的研究[D].大連:大連理工大學(xué)[碩士論文],2005。
致謝本文是在歐曉聰老師的熱情關(guān)心和指導(dǎo)下完成的,他淵博的知識(shí)和嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對(duì)順利完本錢(qián)課題起到了極大的作用。在此向他表示我最衷心的感謝!在論文完成過(guò)程中,本人還得到了金虎老師的悉心指導(dǎo)。金老師屢次詢問(wèn)研究進(jìn)程,并為我指點(diǎn)迷津,幫助我開(kāi)拓研究思路,精心點(diǎn)撥、熱忱鼓勵(lì)。金老師一絲不茍的作風(fēng),嚴(yán)謹(jǐn)求實(shí)的態(tài)度,踏踏實(shí)實(shí)的精神,不僅授我以文,而且教我做人,雖歷時(shí)三載,卻給以終生受益無(wú)窮之道。對(duì)金老師的感謝之情是無(wú)法用言語(yǔ)表達(dá)的。感謝我的爸爸媽媽,焉得諼草,言樹(shù)之背,養(yǎng)育之恩,無(wú)以回報(bào),你們永遠(yuǎn)健康快樂(lè)是我最大的心愿。最后向在百忙之中評(píng)審本文的各位專家、老師表示衷心的感謝!作者簡(jiǎn)介姓名:沈也明性別:男出生年月:1985年8月民族:漢E-mail:mitnickshen@gmail
聲明本論文的工作是2006年02月至2007年06月在成都信息工程學(xué)院系完成的。文中除了特別加以標(biāo)注地方外,不包含他人已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機(jī)構(gòu)的學(xué)位或證書(shū)而使用過(guò)的材料。除非另有說(shuō)明,本文的工作是原始性工作。關(guān)于學(xué)位論文使用權(quán)和研究成果知識(shí)產(chǎn)權(quán)的說(shuō)明:本人完全了解成都信息工程學(xué)院有關(guān)保管使用學(xué)位論文的規(guī)定,其中包括:〔1〕學(xué)校有權(quán)保管并向有關(guān)部門(mén)遞交學(xué)位論文的原件與復(fù)印件?!?〕學(xué)校可以采用影印、縮印或其他復(fù)制方式保存學(xué)位論文?!?〕學(xué)校可以學(xué)術(shù)交流為目的復(fù)制、贈(zèng)送和交換學(xué)位論文?!?〕學(xué)??稍试S學(xué)位論文被查閱或借閱?!?〕學(xué)校可以公布學(xué)位論文的全部或局部?jī)?nèi)容〔保密學(xué)位論文在解密后遵守此規(guī)定〕。除非另有科研合同和其他法律文書(shū)的制約,本論文的科研成果屬于成都信息工程學(xué)院。特此聲明!作者簽名:年月日dings?Cle.Perhapsnot.Ath.Not"Perhapsnot,"but"Certainlynot,"mygoodsir,istherightanswer.Thereneverhasbeenatruermethodthanthisdiscoveredbyanyman.Cle.Ibowtoyourauthority,Stranger;letusproceedinthewaywhichyoupropose.Ath.Then,aswouldappear,wemustcompeltheguardiansofourdivinestatetoperceive,inthefirstplace,whatthatprincipleiswhichisthesameinallthefour-thesame,asweaffirm,incourageandintemperance,andinjusticeandinprudence,andwhich,beingone,wecallasweought,bythesinglenameofvirtue.Tothis,myfriends,wewill,ifyouplease,holdfast,andnotletgoure,andknowhowgreatistheirpower,asfarasinmanlies?doindeedexcusethemassofthecitizens,whoonlyfollowthevoiceofthelaws,butwerefusetoadmitasguardiansanywhodonotlabourtoobtaineverypossibleevidencethatthereisrespectingtheGods;ourcityisforbiddenandnotallowedtochooseasaguardianofthelaw,ortoplaceintheselectorderofvirtue,himwhoisnotaninspiredman,andhasnotlabouredatthesethings.Cle.Itiscertainlyjust,asyousay,thathewhoisindolentaboutsuchmattersorincapableshouldberejected,andthatthingshonourableshouldbeputawayfromhim.Ath.AreweassuredthattherearetwothingswhichleadmentobelieveintheGods,aswehavealreadystated?Cle.Whatarethey?Ath.Oneistheargumentaboutthesoul,whichhasbeenalreadymentioned-thatitistheeldest,andmostdivineofallthings,towhichmotionattaininggenerationgivesperpetualexistence;theotherwasanargumentfromtheorderofthemotionofthestars,andofallthingsunderthedominionofthemindwhichorderedtheuniverse.Ifamanlookupontheworldnotlightlyorsubstances,andtothesetheyassignedthecausesofallthings.Suchstudiesgaverisetomuchatheismandperplexity,andthepoetstookoccasiontobeabusive-comparingthephilosopherstoshe-dogsutteringvainhowlings,andtalkingothernonsenseofthesamesort.Butnow,asIsaid,thecaseisreversed.Cle.Howso?Ath.NomancanbeatrueworshipperoftheGodswhodoesnotknowthesetwoprinciples-thatthesoulistheeldestofallthingswhichareborn,andisimmortalandrulesoverallbodies;moreover,asIhavenowsaidseveraltimes,hewhohasnotcontemplatedthemindofnaturewhichissaidtoexistinthestars,andgonethroughtheprevioustraining,andseentheconnectionofmusicwiththesethings,andharmonizedthemallwithlawsandinstitutions,isnotabletogiveareasonofsuchthingsashaveareason.Andhewhoisunabletoacquirethisinadditiontotheordinaryvirtuesofacitizen,canhardlybeagoodrulerofawholestate;butheshouldbethesubordinateofotherrulers.Wherefore,CleiniasandMegillus,letusconsiderwhetherwemaynotaddtoalltheotherlawswhichwehavediscussedthisfurtherone-thatthenocturnalassemblyofthemagistrates,whichhasalsosharedinthewholeschemeofeducationproposedbyus,shallbeaguardsetaccordingtolawforthesalvationofthestate.Shallweproposethis?Cle.Certainly,mygoodfriend,wewillifthethingisinanydegreepossible.Ath.Letusmakeacommonefforttogainsuchanobject;forItoowillgladlyshareintheattempt.Ath.Inthefirstplace,alistwouldhavetobemadeoutofthosewhobytheiragesandstudiesanddispositionsandhabitsarewellfittedforthedutyofaguardian.Inthenextplace,itwillnotbeeasyforthemtodiscoverthemselveswhattheyoughttolearn,orbecomethediscipleofonewhorthecity;noneofthepresentcompanyoflegislators,asImaycallthem,wouldhesitateaboutthat.Andthestatewillbeperfectedandbecomeawakingreality,whichalittlewhileagoweattemptedtocreateasadreamandinideaonly,minglingtogetherreasonandmindinoneimage,inthehopethatourcitizensmightbedulymingledandrightlyeducated;andbeingeducated,anddwellinginthecitadeloftheland,mightbecomeperfectguardians,suchaswehaveneverseenionshipandright,asweenactedbefore.Nowwemustnotconcealfromourselvesthatsuchlawsareapttobeoppressiveandthattheremaysometimesbeahardshipinthelawgivercommandingthekinsmanofth
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)店運(yùn)營(yíng)合同三篇
- 2025版物業(yè)財(cái)務(wù)管理合作協(xié)議范本3篇
- 二零二五年度個(gè)人貨車租賃合同范本(含車輛租賃合同附件清單)2篇
- 實(shí)現(xiàn)目標(biāo)的關(guān)鍵
- 部編版一年級(jí)語(yǔ)文下冊(cè)第19課《咕咚》精美課件
- 二零二五年度公共機(jī)構(gòu)行政車輛保養(yǎng)維修服務(wù)協(xié)議書(shū)2篇
- 二零二五年度某小區(qū)臨街門(mén)面租賃合作協(xié)議書(shū)3篇
- 風(fēng)險(xiǎn)管理與企業(yè)戰(zhàn)略目標(biāo)的銜接培訓(xùn)
- 社區(qū)行業(yè)保安工作總結(jié)
- 二零二五年度創(chuàng)意市集攤位租賃運(yùn)營(yíng)合同12篇
- 2025理論學(xué)習(xí)計(jì)劃2025年理論中心組學(xué)習(xí)計(jì)劃
- 2025年醫(yī)美醫(yī)院公司組織架構(gòu)和業(yè)務(wù)流程
- 山西省2024年中考物理試題(含答案)
- 春節(jié)節(jié)后收心安全培訓(xùn)
- 高中物理斜面模型大全(80個(gè))
- 2025年高考物理復(fù)習(xí)壓軸題:電磁感應(yīng)綜合問(wèn)題(解析版)
- 2024-2030年芯片行業(yè)市場(chǎng)發(fā)展分析及發(fā)展趨勢(shì)前景預(yù)測(cè)報(bào)告
- 2024年個(gè)人車位租賃合同經(jīng)典版(二篇)
- 2024-2030年中國(guó)汽車駕駛培訓(xùn)市場(chǎng)發(fā)展動(dòng)態(tài)與前景趨勢(shì)預(yù)測(cè)報(bào)告
- 中鐵十四局合同范本
- 浙教版七年級(jí)數(shù)學(xué)下冊(cè)單元測(cè)試題及參考答案
評(píng)論
0/150
提交評(píng)論