2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  xxxxxxx</b></p><p>  信息科學(xué)與技術(shù)學(xué)院畢業(yè)論文</p><p> 課題名稱:網(wǎng)絡(luò)協(xié)議仿真軟件的設(shè)計與實現(xiàn)</p><p> 學(xué)生姓名:xxxxxxxxxxxxx</p><p> xxxxxxxxxxxxx</p><p> 學(xué) 院:信息

2、科學(xué)與技術(shù)學(xué)院</p><p> 專業(yè)年級:信息管理與信息系統(tǒng)</p><p> 指導(dǎo)教師:xxxxxx 講師</p><p> 完成日期:年 月</p><p>  網(wǎng)絡(luò)協(xié)議仿真軟件的設(shè)計與實現(xiàn)</p><p>  學(xué)生:xxxxxxxxx</p><p>  指導(dǎo)

3、老師:xxxxx</p><p>  [摘 要]由于網(wǎng)絡(luò)模型和協(xié)議的抽象性,即使專業(yè)人員對其理解也有很大困難。為了將抽象的難以理解的網(wǎng)絡(luò)模型框架、協(xié)議原理、網(wǎng)絡(luò)應(yīng)用等專業(yè)知識,用易于理解的通俗易懂的形式將其理解。非專業(yè)的人員在使用網(wǎng)絡(luò)協(xié)議仿真軟件的同時可以對網(wǎng)絡(luò)協(xié)議有基本的理解,有一定專業(yè)知識的人員更好的理解網(wǎng)絡(luò)協(xié)議原理、掌握學(xué)習(xí)要領(lǐng)。</p><p>  本課題通過對網(wǎng)絡(luò)抓包軟件的實現(xiàn),

4、來詳細(xì)深入的了解網(wǎng)絡(luò)協(xié)議如何工作,文中首先分析了抓包的原理和技術(shù),并介紹了幾種常見的抓包軟件,然后研究了入侵檢測系統(tǒng)中使用的包捕獲技術(shù),利用winpcap接字在windows平臺下實現(xiàn)了一個網(wǎng)絡(luò)抓包軟件程序,具有對數(shù)據(jù)包進(jìn)行拆包、解包等功能,最后通過動畫演示生動形象的描述網(wǎng)絡(luò)協(xié)議如何運行。</p><p>  [關(guān)鍵詞] 網(wǎng)絡(luò)抓包軟件 數(shù)據(jù)包捕獲 數(shù)據(jù)包分析 Winpcap</p><p

5、>  Network protocol emulation software design </p><p>  and implementation</p><p>  Students:xxxxxxxxxxx</p><p>  Instructor:xxxxxxxxx</p><p>  [Abstract] As the net

6、work model and agreement of the abstract, even to the professional understanding will have great difficulty. In order to bring the abstract to understand the network model of the framework agreement, principle, network a

7、pplication and other professional knowledge, in an understandable easy-to-read formats will be the understanding. Casual personnel to use network protocol emulation software on the network at the same time can be a basic

8、 understanding of the agreement, have c</p><p>  This topic through network caught software to realize, to a detailed understanding of how the network protocol, this paper first analyzes the principle and te

9、chnology of caught, and introduces several common caught software, and then studied the intrusion detection system used in the packet capture technology, using winpcap meet word in Windows the workbench implements a netw

10、ork caught a software program, has for packet for unpacking, solution package, and other functions, the last through the a</p><p>  [Key words] network sniffe ; capture data packet ; analyze data capture ; W

11、inpcap</p><p><b>  目錄</b></p><p><b>  第一章緒論1</b></p><p>  1.1 課題背景1</p><p>  1.2 課題研究的目的及意義1</p><p><b>  1.3 任務(wù)書1</b&

12、gt;</p><p>  1.3.1 設(shè)計時間1</p><p>  1.3.2 課題分工2</p><p>  1.3.3 設(shè)計成果2</p><p>  1.3.4 論文組織2</p><p>  第二章網(wǎng)絡(luò)協(xié)議及協(xié)議仿真技術(shù)3</p><p>  2.1 網(wǎng)絡(luò)協(xié)議3<

13、/p><p>  2.1.1 OSI七層參考模型3</p><p>  2.1.2 TCP/IP參考模型3</p><p>  2.1.3 OSI模型與TCP/IP模型的比較4</p><p>  2.1.4 主要協(xié)議5</p><p>  2.1.5 數(shù)據(jù)包在TCP/IP網(wǎng)絡(luò)中的封裝解封過程10</p&g

14、t;<p>  2.2 仿真技術(shù)簡介11</p><p>  2.3 反嗅探措施13</p><p>  2.3.1 嗅探的檢測13</p><p>  2.3.2 嗅探的防御13</p><p>  2.4 Windows下的網(wǎng)絡(luò)嗅探及WinPcap研究13</p><p>  2.4.1 W

15、inPcap簡介13</p><p>  2.4.2 WinPcap體系結(jié)構(gòu)16</p><p>  2.4.3 Windows下的網(wǎng)絡(luò)嗅探19</p><p>  2.4.4 基于WinPcap的包捕獲過程21</p><p>  第三章需求分析與動畫演示設(shè)計23</p><p>  3.1 功能需求2

16、3</p><p>  3.2 性能需求23</p><p>  3.3 可行性分析24</p><p>  3.4 動畫演示設(shè)計24</p><p>  第四章詳細(xì)設(shè)計28</p><p>  4.1 開發(fā)環(huán)境28</p><p>  4.2 系統(tǒng)功能模塊圖29</p>

17、;<p>  4.3 系統(tǒng)流程圖30</p><p>  4.4 詳細(xì)設(shè)計31</p><p>  4.4.1 界面實現(xiàn)31</p><p>  4.4.2 選擇網(wǎng)卡34</p><p>  4.4.3 過濾規(guī)則34</p><p>  4.4.4 數(shù)據(jù)包捕獲36</p><

18、;p>  4.4.5 數(shù)據(jù)包分析37</p><p>  第五章系統(tǒng)測試46</p><p>  5.1編寫目的46</p><p>  5.2測試概要46</p><p>  5.3對軟件功能的評價49</p><p>  第六章開發(fā)總結(jié)51</p><p><b&

19、gt;  致謝53</b></p><p><b>  緒論</b></p><p><b>  課題背景</b></p><p>  近年來,數(shù)據(jù)通信網(wǎng)絡(luò)無論就其物理的規(guī)模還是應(yīng)用范圍來講,都獲得了巨大的發(fā)展。Internet上不斷地有新的需求出現(xiàn),人們開發(fā)新的協(xié)議和算法來滿足這些變化的需求。這種需求的例子

20、包括服務(wù)質(zhì)量支持、組播傳輸、安全性、移動組網(wǎng)和策略管理。對這些領(lǐng)域的協(xié)議和算法的開發(fā)和評價要求人們回答很多設(shè)計上的問題。由于網(wǎng)絡(luò)協(xié)議是抽象的,很多學(xué)生不易理解,所以用仿真軟件的設(shè)計與實現(xiàn)來了解網(wǎng)絡(luò)協(xié)議。</p><p>  本論文采用了WinPcap驅(qū)動對鏈路層數(shù)據(jù)幀進(jìn)行高效捕獲,并針對四種具體協(xié)議ARP、IP、TCP、UDP進(jìn)行協(xié)議分析。借助WinPcap來研究Windows平臺下的網(wǎng)絡(luò)協(xié)議仿真技術(shù)是具有現(xiàn)實意

21、義的,這不僅能促進(jìn)網(wǎng)絡(luò)嗅探系統(tǒng)的改進(jìn)和發(fā)展,還能促進(jìn)WinPcap本身的發(fā)展。在本論文的程序開發(fā)過程中涉及到較多方面,如協(xié)議分析,MFC編程,及對WinPcap驅(qū)動框架的理解,這些工作在很大程度上加深了自己對網(wǎng)絡(luò)協(xié)議應(yīng)用的理解。本課題主要通過對數(shù)據(jù)包的抓捕與分析機制進(jìn)行研究, 參考了大量有關(guān)抓捕數(shù)據(jù)包的專業(yè)文獻(xiàn),由此了解國內(nèi)以及國際上主要的抓捕分析數(shù)據(jù)包的技術(shù)方法,并通過制作一個共享環(huán)境下的的數(shù)據(jù)抓包軟件的具體實現(xiàn)以對該機制進(jìn)行深一步的

22、了解。</p><p>  課題研究的目的及意義</p><p>  網(wǎng)絡(luò)協(xié)議具有抽象、難以理解等特點,學(xué)生在學(xué)習(xí)計算機網(wǎng)絡(luò)相關(guān)課程時總感到協(xié)議難懂、不具體。設(shè)計一個網(wǎng)絡(luò)協(xié)議仿真軟件可形象的將網(wǎng)絡(luò)協(xié)議的運行原理和過程演示出來,學(xué)生對網(wǎng)絡(luò)原理理解就會更深、學(xué)習(xí)的進(jìn)度也會加快。</p><p>  由于網(wǎng)絡(luò)模型和協(xié)議的抽象性,即使專業(yè)人員對其理解也有很大困難。為了將抽象

23、的難以理解的網(wǎng)絡(luò)模型框架、協(xié)議原理、網(wǎng)絡(luò)應(yīng)用等專業(yè)知識,用易于理解的通俗易懂的形式將其理解。非專業(yè)的人員在使用網(wǎng)絡(luò)協(xié)議仿真軟件的同時可以對網(wǎng)絡(luò)協(xié)議有基本的理解,有一定專業(yè)知識的人員更好的理解網(wǎng)絡(luò)協(xié)議原理、掌握學(xué)習(xí)要領(lǐng)。</p><p><b>  任務(wù)書</b></p><p><b>  設(shè)計時間</b></p><p>

24、;  (1)第1-3周 搜集相關(guān)文獻(xiàn)文檔</p><p> ?。?)第4周 系統(tǒng)功能模塊分析</p><p>  (3)第5周 系統(tǒng)技術(shù)實現(xiàn)分析 </p><p> ?。?)第6-13周 程序編寫,系統(tǒng)調(diào)試,相關(guān)文檔的撰寫</p><p> ?。?)第14周 完善系統(tǒng)和對論文的撰寫

25、</p><p>  (6)第15周 準(zhǔn)備預(yù)審和相關(guān)畢業(yè)答辯文檔</p><p> ?。?)第16周 終期答辯</p><p><b>  總計16周</b></p><p><b>  課題分工</b></p><p>  徐婷:開題報告、文獻(xiàn)綜述

26、、論文初稿搜集整理相關(guān)文獻(xiàn)資料、需求分析、系統(tǒng)測試</p><p>  饒冬冬:功能模塊的分析和設(shè)計、動畫演示制作、系統(tǒng)調(diào)試修改</p><p>  共同合作:結(jié)構(gòu)設(shè)計、整體模塊設(shè)計、系統(tǒng)編寫實現(xiàn)</p><p><b>  設(shè)計成果</b></p><p>  畢業(yè)設(shè)計相關(guān)文獻(xiàn)及成果清單包括:</p>&

27、lt;p><b>  可執(zhí)行軟件一份</b></p><p><b>  《開題報告》</b></p><p><b>  《文獻(xiàn)綜述》</b></p><p><b>  《用戶手冊》</b></p><p>  《XX大學(xué)信息科學(xué)與技術(shù)學(xué)院201

28、2畢業(yè)設(shè)計論文》</p><p><b>  論文組織</b></p><p>  下面是本論文的章節(jié)組織:</p><p>  第一章:緒論,概括介紹了論文的研究背景、研究目的及意義。</p><p>  第二章:網(wǎng)絡(luò)協(xié)議及協(xié)議仿真技術(shù),系統(tǒng)介紹網(wǎng)絡(luò)協(xié)議框架結(jié)構(gòu),每層的相關(guān)的協(xié)議,以及協(xié)議仿真技術(shù)的知識,包括嗅探的原理

29、,以及一些反嗅探的方法。研究分析網(wǎng)絡(luò)TCP/IP協(xié)議,并對本嗅探器基于的 WinPcap的框架體系進(jìn)行深入地研究。</p><p>  第三章:需求分析與可行性分析,動畫演示設(shè)計。 </p><p>  第四章:主要是網(wǎng)絡(luò)數(shù)據(jù)包捕獲工具實現(xiàn)的詳細(xì)步驟及設(shè)計,主要分為界面,網(wǎng)卡選擇模塊、數(shù)據(jù)包過濾模塊、數(shù)據(jù)包捕獲模塊和數(shù)據(jù)包分析模塊。</p><p>  第五章:對本

30、文所構(gòu)建的數(shù)據(jù)包嗅探器進(jìn)行測試,實驗證明系統(tǒng)達(dá)到了預(yù)期的設(shè)計目標(biāo)。</p><p>  第六章:總結(jié)了本論文的主要工作。</p><p>  網(wǎng)絡(luò)協(xié)議及協(xié)議仿真技術(shù) </p><p><b>  網(wǎng)絡(luò)協(xié)議</b></p><p>  OSI七層參考模型</p><p>  要使兩臺計算機進(jìn)行通信

31、,必須讓它們使用同一種“語言”,通信協(xié)議就是兩臺計算機交換信息所使用的共同語言,它規(guī)定了通信雙方在通信中所應(yīng)共同遵守的規(guī)則,精確地定義了計算機在相互通信過程中的所有細(xì)節(jié)。我們利用一個共同遵守的通信協(xié)議,從而使Intemet成為一個允許連接不同類型的計算機和不同操作系統(tǒng)的網(wǎng)絡(luò)。例如,協(xié)議規(guī)定了每臺計算機發(fā)送報文的格式和每個字段的含義,還規(guī)定了在各種情況下計算機應(yīng)該做出什么反應(yīng),以避免差錯從而達(dá)到最好的通信效果。</p>&l

32、t;p>  在網(wǎng)絡(luò)歷史的早期,國際標(biāo)準(zhǔn)化組織(ISO)和國際電報電話咨詢委員會(CCITT)共同出版了開放系統(tǒng)互聯(lián)的七層參考模型[6],它是一種抽象的包含七層通信協(xié)議的參考模型,其中每一層執(zhí)行某一規(guī)定的任務(wù),每層之間都有相應(yīng)的接口,除了第一層和第七層外,每一層即使用下層提供的服務(wù),又給上層提供服務(wù),也就是說它即是服務(wù)的享有者,又是服務(wù)的提供者。這種設(shè)計模型可以簡化協(xié)議開發(fā)過程中的難度,每一層只需做好該層的工作并提供好向上的接口即可

33、,在保證每一層實現(xiàn)效率的前提下,具體怎么實現(xiàn)要根據(jù)具體情況來確定。該模型的目的是使各種硬件在相同的層次上相互通信,表21表示了OSI七層參考模型。</p><p>  表2-1 OSI七層參考模型</p><p>  按照OSI開放系統(tǒng)互聯(lián)參考模型的觀點,可將網(wǎng)絡(luò)系統(tǒng)劃分為7層結(jié)構(gòu),每一個層次上運行著不同的協(xié)議和服務(wù),并且上下層之間互相配合,完成網(wǎng)絡(luò)數(shù)據(jù)交換的功能。然而,OSI模型僅僅是

34、一個參考模型,并不是實際網(wǎng)絡(luò)中應(yīng)用的模型。實際上應(yīng)用最廣泛的商用網(wǎng)絡(luò)模型是TCP/IP網(wǎng)絡(luò)參考模型,將網(wǎng)絡(luò)劃分為四層,每一個層次上運行著不同的協(xié)議和服務(wù)[4]。</p><p>  TCP/IP參考模型</p><p>  TCP/IP參考模型被稱作因特網(wǎng)分層模型、因特網(wǎng)參考模型(Intemet Reference Model),表2-2表示了TCP/IP分層模型的四層。TCP/IP協(xié)議被

35、設(shè)計成四個層次,其中應(yīng)用層對應(yīng)于OSI模型中的應(yīng)用層、會話層、表示層,傳輸層和網(wǎng)絡(luò)層分別對應(yīng)OSI中的相應(yīng)層,網(wǎng)絡(luò)接口層對應(yīng)于OSI中的數(shù)據(jù)鏈路層和物理層。TCP/IP分層模型的四個協(xié)議層分別完成以下的功能[5]:</p><p>  第一層網(wǎng)絡(luò)接口層:網(wǎng)絡(luò)接口層包括用于協(xié)作IP數(shù)據(jù)在已有網(wǎng)絡(luò)介質(zhì)上傳輸?shù)膮f(xié)議。它對實際的網(wǎng)絡(luò)媒體進(jìn)行管理,定義了將資料組成正確幀的規(guī)則和在網(wǎng)絡(luò)中傳輸幀的規(guī)則,定義如何使用實際網(wǎng)絡(luò)如以

36、太網(wǎng)Ethemet等來傳送數(shù)據(jù)。實際上TCP/IP標(biāo)準(zhǔn)并不定義與ISO數(shù)據(jù)鏈路層和物理層相對應(yīng)的功能。相反,它定義像地址解析協(xié)議(ARP-Address Resolution Protocol)這樣的協(xié)議,提供TCP/IP協(xié)議的數(shù)據(jù)結(jié)構(gòu)和實際物理硬件之間的接口。</p><p>  表2-2 TCP/IP參考模型</p><p>  第二層網(wǎng)絡(luò)層:負(fù)責(zé)提供基本的數(shù)據(jù)封包路由功能,讓每一個數(shù)

37、據(jù)包都能夠到達(dá)目的主機,但不檢查是否被正確接收,如網(wǎng)際協(xié)議IP。本層包含IP協(xié)議、RIP協(xié)議(Routing Information Protocol,路由信息協(xié)議),負(fù)責(zé)數(shù)據(jù)的包裝、尋址和路由。同時還包含網(wǎng)問控制報文協(xié)議(ICMP Intemet Control Message Protocol)用來提供網(wǎng)絡(luò)診斷信息。</p><p>  第三層傳輸層:為兩個用戶進(jìn)程之間建立、管理和拆除可靠而又有效的端到端連接

38、,提供兩種端到端的通信服務(wù)。其中TCP協(xié)議(Transmission Control Protocol)提供可靠的數(shù)據(jù)流傳輸服務(wù),UDP協(xié)議(Use Datagram Protocol)提供不可靠的用戶數(shù)據(jù)報服務(wù)。</p><p>  第四層應(yīng)用層:因特網(wǎng)的應(yīng)用層協(xié)議包括FTP(文件傳輸協(xié)議)、HTTP(超文本傳輸協(xié)議)、Telent(遠(yuǎn)程終端協(xié)議)、SMTP(簡單郵件傳送協(xié)議)、IRC(因特網(wǎng)中繼會話)、NNT

39、P(網(wǎng)絡(luò)新聞傳輸協(xié)議)等。</p><p>  OSI模型與TCP/IP模型的比較</p><p>  與OSI參考模型不同,TCP/IP協(xié)議并不完全符合OSI的七層參考模型,如表2-3所示。TCP/IP參考模型更側(cè)重于互聯(lián)設(shè)備間的數(shù)據(jù)傳送,更注重實用性,而不是嚴(yán)格的功能層次劃分。OSI參考模型在解釋互聯(lián)網(wǎng)絡(luò)通信原理上比較適合,TCP/IP在實用性上面比較好,因而成為了互聯(lián)網(wǎng)絡(luò)協(xié)議的市場標(biāo)

40、準(zhǔn)。TCP/IP參考模型是在它所解釋的協(xié)議出現(xiàn)很久以后才發(fā)展起來的,并吸取了OSI模型的經(jīng)驗和教訓(xùn),比OSI模型更靈活,這也是TCP/IP協(xié)議之所以流行的原因。</p><p>  表2-3 OSI模型與TCP/IP模型的比較</p><p><b>  主要協(xié)議</b></p><p><b>  IP</b><

41、/p><p>  網(wǎng)際協(xié)議IP是TCP/IP的心臟,也是網(wǎng)絡(luò)層中最重要的協(xié)議。</p><p>  IP層接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數(shù)據(jù)包傳送到更低層。IP數(shù)據(jù)包是不可靠的,因為IP并沒有做任何事情來確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒有被破壞。IP數(shù)據(jù)包中含有發(fā)送它的主機的

42、地址(源地址)和接收它的主機的地址(目的地址)。</p><p>  高層的TCP和UDP服務(wù)在接收數(shù)據(jù)包時,通常假設(shè)包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務(wù)的認(rèn)證基礎(chǔ),這些服務(wù)相信數(shù)據(jù)包是從一個有效的主機發(fā)送來的。IP確認(rèn)包含一個選項,叫作IP source routing,可以用來指定一條源地址和目的地址之間的直接路徑。對于一些TCP和UDP的服務(wù)來說,使用了該選項的IP包好像是從路徑上的最

43、后一個系統(tǒng)傳遞過來的,而不是來自于它的真實地點。這個選項是為了測試而存在的,說明了它可以被用來欺騙系統(tǒng)來進(jìn)行平常是被禁止的連接。那么,許多依靠IP源地址做確認(rèn)的服務(wù)將產(chǎn)生問題并且會被非法入侵。</p><p>  IP數(shù)據(jù)報格式,如圖2-1所示:</p><p>  圖2-1 IP數(shù)據(jù)報格式</p><p>  版本:4位,標(biāo)識IP版本號。目前有IPv4、IPv6。

44、我們目前所用的IP協(xié)議基本都是IPv4版本。</p><p>  首部長度:4位,度指的是首部占32bit字的數(shù)目,包括任何選項。由圖3-1可知首部所占字節(jié)數(shù)為(4+4+8+16+16+3+13+8+8+16+32+32+0)=160bit,正好是32bit的5倍,所以首部長度最小為5。如果選項字段有其它數(shù)據(jù),則這個值會大于5。由上面也可知IP首部最小長度為20字節(jié),最大長度為(2的4次方-1)*32/8=60字

45、節(jié)。</p><p>  服務(wù)類型:8位,其中:</p><p>  優(yōu)先權(quán):3位,設(shè)置了數(shù)據(jù)包的重要性,取值越大數(shù)據(jù)越重要,取值范圍為:0(正常)-7(網(wǎng)絡(luò)控制)。</p><p>  TOS:4位,分別表示最小延時、最大吞吐量、最高可靠性、最小費用。如果4位TOS子字段均為0,那么就意味著是一般服務(wù)。</p><p>  未使用:1位,必

46、須置0。</p><p>  總長度:16位,總長度指首部和數(shù)據(jù)之和的長度,以字節(jié)為單位。利用首部長度字段和總長度字段,就可以知道I P數(shù)據(jù)報中數(shù)據(jù)內(nèi)容的起始位置和長度。由于該字段長16比特,所以IP數(shù)據(jù)報最長可達(dá)65535字節(jié)。</p><p>  標(biāo)識:16位,唯一地標(biāo)識主機發(fā)送的每一份數(shù)據(jù)報。通常每發(fā)送一份報文它的值就會加1。IP軟件在存儲器中維持一個計數(shù)器,每產(chǎn)生一個數(shù)據(jù)報,計數(shù)器

47、就加1,并將此值賦給標(biāo)識字段。但這個“標(biāo)識”并不是序號,因為IP是無連接服務(wù),數(shù)據(jù)報不存在按序接收的問題。當(dāng)數(shù)據(jù)報由于長度超過網(wǎng)絡(luò)的MTU而必須分片時,這個標(biāo)識字段的值就被復(fù)制到所有的數(shù)據(jù)報的標(biāo)識字段中。相同的標(biāo)識字段的值使分片后的各數(shù)據(jù)報片最后能正確地重裝成為原來的數(shù)據(jù)報。在分片和重組技術(shù)中將會用到。</p><p>  標(biāo)志:3位,但目前只有2位有意義。標(biāo)志字段中的最低位記為MF(More Fragment)

48、。MF=1即表示后面“還有分片”的數(shù)據(jù)報;MF=0表示這已是若干數(shù)據(jù)報片中的最后一個。標(biāo)志字段中間的一位記為DF(Don't Fragment),意思是“不能分片”。只有當(dāng)DF=0時才允許分片,具體定義如下:</p><p><b>  保留位: 1位 ;</b></p><p>  DF字段:1位,取值:0(允許數(shù)據(jù)報分段)、1(數(shù)據(jù)報不能分段);</

49、p><p>  MF字段:1位,取值:0(數(shù)據(jù)包后面沒有包,該包為最后的包)、1(數(shù)據(jù)包后面有更多的包)。</p><p>  片偏移:13位。片偏移指出:較長的分組在分片后,某片在原分組中的相對位置,也就是說,相對用戶數(shù)據(jù)字段的起點,該片從何處開始。片偏移以8個字節(jié)為偏移單位,這就是說,每個分片的長度一定是8字節(jié)(64位)的整數(shù)倍。</p><p>  生存時間:8位

50、,生存時間字段常用的的英文縮寫是TTL(Time To Live),表明是數(shù)據(jù)報在網(wǎng)絡(luò)中的壽命。由發(fā)出數(shù)據(jù)報的源點設(shè)置這個字段,其目的是防止無法交付的數(shù)據(jù)報無限制地在因特網(wǎng)中兜圈子,因而白白消耗網(wǎng)絡(luò)資源。最初的設(shè)計是以秒作為TTL的單位。每經(jīng)過一個路由器時,就把TTL減去數(shù)據(jù)報在路由器消耗掉的一段時間。若數(shù)據(jù)報在路由器消耗的時間小于1秒,就把TTL值減1。當(dāng)TTL值為0時,就丟棄這個數(shù)據(jù)報。一般可以理解為經(jīng)過路由器的最大數(shù)目。</

51、p><p>  協(xié)議:8位。協(xié)議字段指出此數(shù)據(jù)報攜帶的數(shù)據(jù)是使用何種協(xié)議(上層協(xié)議),以便使目的主機的IP層知道應(yīng)將數(shù)據(jù)部分上交給哪個處理過程。協(xié)議可包括TCP、UDP、TELNET等,1=ICMP,6=TCP,17=UDP。</p><p>  首部校驗和:16位,首部檢驗和字段是根據(jù)IP首部計算的檢驗和碼,它不對首部后面的數(shù)據(jù)進(jìn)行計算。ICMP,UDP,TCP在它們各自的首部中均含有同時覆

52、蓋首部和數(shù)據(jù)檢驗和碼。為了計算一份數(shù)據(jù)報的IP檢驗和,首先把檢驗和字段置為0,然后對首部中每個16bit進(jìn)行二進(jìn)制反碼求和(整個首部看成是由一串16 bit的字組成),結(jié)果存在檢驗和字段中。當(dāng)收到一份IP數(shù)據(jù)報后,同樣對首部中每個16 bit進(jìn)行二進(jìn)制反碼的求和。由于接收方在計算過程中包含了發(fā)送方存在首部中的檢驗和,因此,如果首部在傳輸過程中沒有發(fā)生任何差錯,那么接收方計算的結(jié)果應(yīng)該為全1,如果結(jié)果不是全1(即檢驗和錯誤),那么IP就丟

53、棄收到的數(shù)據(jù)報,但是不生成差錯報文,由上層去發(fā)現(xiàn)丟失的數(shù)據(jù)報并進(jìn)行重傳。</p><p>  源IP地址:32位,發(fā)送IP的主機地址。</p><p>  目的IP地址:32位,數(shù)據(jù)發(fā)往的IP主機地址。</p><p><b>  TCP</b></p><p>  如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,那么IP將把

54、它們向‘上’傳送到TCP層。TCP將包排序并進(jìn)行錯誤檢查,同時實現(xiàn)虛電路間的連接。TCP數(shù)據(jù)包中包括序號和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。</p><p>  TCP將它的信息送到更高層的應(yīng)用程序,例如Telnet的服務(wù)程序和客戶程序。應(yīng)用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設(shè)備驅(qū)動程序和物理介質(zhì),最后到接收方。</p><p>  

55、面向連接的服務(wù)(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發(fā)送和接收域名數(shù)據(jù)庫),但使用UDP傳送有關(guān)單個主機的信息。</p><p>  TCP數(shù)據(jù)被封裝在一個IP數(shù)據(jù)報中,如圖2-2所示:</p><p>  圖2-2 TCP數(shù)據(jù)在IP數(shù)據(jù)報中的封裝</p><p>

56、;  圖2-3顯示TCP首部的數(shù)據(jù)格式。如果不計任選字段,它通常是20個字節(jié)。</p><p>  圖2-3 TCP包首部</p><p><b>  UDP</b></p><p>  UDP與TCP位于同一層,但它不管數(shù)據(jù)包的順序、錯誤或重發(fā)。因此,UDP不被應(yīng)用于那些使用虛電路的面向連接的服務(wù),UDP主要用于那些面向查詢---應(yīng)答的服務(wù),

57、例如NFS。相對于FTP或Telnet,這些服務(wù)需要交換的信息量較小。使用UDP的服務(wù)包括NTP(網(wǎng)絡(luò)時間協(xié)議)和DNS(DNS也使用TCP)。</p><p>  欺騙UDP包比欺騙TCP包更容易,因為UDP沒有建立初始化連接(也可以稱為握手)(因為在兩個系統(tǒng)間沒有虛電路),也就是說,與UDP相關(guān)的服務(wù)面臨著更大的危險。</p><p>  UDP是一個簡單的面向數(shù)據(jù)報的運輸層協(xié)議,進(jìn)程

58、的每個輸出操作都正好產(chǎn)生一個UDP數(shù)據(jù)報,并組裝成一份待發(fā)送的IP數(shù)據(jù)報。</p><p>  UDP數(shù)據(jù)報格式有首部和數(shù)據(jù)兩個部分,如圖2-4:</p><p>  圖2-4 UDP數(shù)據(jù)報格式</p><p>  首部很簡單,共8字節(jié),如圖2-5:</p><p>  圖2-5 UDP首部</p><p><b

59、>  包括:</b></p><p>  源端口(Source Port):2字節(jié),源端口號。</p><p>  目的端口(Destination Port ):2字節(jié),目的端口號。</p><p>  長度(Length):2字節(jié),UDP用戶數(shù)據(jù)報的總長度,以字節(jié)為單位。</p><p>  檢驗和(Checksum):

60、2字節(jié),用于校驗UDP數(shù)據(jù)報的數(shù)字段和包含UDP數(shù)據(jù)報首部的“偽首部”。盡管UDP校驗和的基本計算方法與IP首部校驗和的計算方法類似(16bit字的二進(jìn)制反碼和),但是它們之間存在不同的地方,UDP數(shù)據(jù)報長度可以為奇數(shù)字節(jié),但是校驗和的算法是把若干個16bit字相加。解決方法是必要時在最后增加填充字節(jié)0,這只是為了校驗和的計算(也就是說,可能增加的填充字節(jié)不被傳送)。</p><p>  UDP數(shù)據(jù)報和TCP段都

61、包含一個12字節(jié)長的偽首部,它是為了計算校驗和而設(shè)置的。偽首部包含IP首部一些字段,其目的是讓UDP兩次檢查數(shù)據(jù)是否已經(jīng)正確到達(dá)目的地(例如,IP有沒有接受地址不是本主機的數(shù)據(jù)報,以及IP有沒有把應(yīng)傳給另一高層的數(shù)據(jù)報傳送給UDP)。UDP數(shù)據(jù)報中的偽首部格式如圖2-6所示:</p><p>  圖2-6 UDP數(shù)據(jù)報的偽首部格式</p><p><b>  ICMP</b

62、></p><p>  ICMP與IP位于同一層,它被用來傳送IP的的控制信息。它主要是用來提供有關(guān)通向目的地址的路徑信息。</p><p>  IP協(xié)議提供的是面向無連接的服務(wù),不存在關(guān)于網(wǎng)絡(luò)連接的建立和維護(hù)過程,也不包括流量控制與差錯控制功能,但需要對網(wǎng)絡(luò)的狀態(tài)有一些了解,因此在網(wǎng)際層提供了因特網(wǎng)控制消息協(xié)議(Internet control message protocol,簡

63、稱ICMP)來檢測網(wǎng)絡(luò),包括路由、擁塞、服務(wù)質(zhì)量等問題。在網(wǎng)絡(luò)中,ICMP報文將作為IP層數(shù)據(jù)報的數(shù)據(jù),封裝在IP數(shù)據(jù)報中進(jìn)行傳輸,如圖2-7所示,但I(xiàn)CMP并不是高層協(xié)議,而仍被視為網(wǎng)絡(luò)層協(xié)議。</p><p>  圖2-7 ICMP數(shù)據(jù)在IP數(shù)據(jù)報中的封裝</p><p>  ICMP報文的類型很多,且各自又有各自的代碼,因此,ICMP并沒有一個統(tǒng)一的報文格式,不同的ICMP類別分別有

64、不同的報文字段。ICMP報文只是在前4個字節(jié)有統(tǒng)一的格式,共有類型、代碼和校驗和3個字段。如圖2-8所示。</p><p>  圖2-8 ICMP報文的格式</p><p>  其中類型字段表示ICMP報文的類型;代碼字段是為了進(jìn)一步區(qū)分某種類型的幾種不同情況;校驗和字段用來檢驗整個ICMP報文,接著的4個字節(jié)的內(nèi)容與ICMP的類型有關(guān),再后面是數(shù)據(jù)字段,其長度取決于ICMP的類型。<

65、;/p><p>  TCP和UDP的端口結(jié)構(gòu)</p><p>  TCP和UDP服務(wù)通常有一個客戶/服務(wù)器的關(guān)系,例如,一個Telnet服務(wù)進(jìn)程開始在系統(tǒng)上處于空閑狀態(tài),等待著連接。用戶使用Telnet客戶程序與服務(wù)進(jìn)程建立一個連接??蛻舫绦蛳蚍?wù)進(jìn)程寫入信息,服務(wù)進(jìn)程讀出信息并發(fā)出響應(yīng),客戶程序讀出響應(yīng)并向用戶報告。因而,這個連接是雙工的,可以用來進(jìn)行讀寫。</p><p

66、>  數(shù)據(jù)包在TCP/IP網(wǎng)絡(luò)中的封裝解封過程</p><p>  數(shù)據(jù)在網(wǎng)絡(luò)中傳輸時要經(jīng)過封裝和解封的過程,這是兩個正好相反的過程,一個組包,一個解包,下面是數(shù)據(jù)包在網(wǎng)絡(luò)中封裝的過程:首先,計算機生成用戶數(shù)據(jù),數(shù)據(jù)經(jīng)過應(yīng)用層后,被加上應(yīng)用層協(xié)議的首部,然后傳遞到傳輸層變成了傳輸層的數(shù)據(jù)單元,傳輸層把收到的大的報文分割成小的包,再給每一個包加上這一層的報文頭,如TCP頭或者UDP頭,形成新的數(shù)據(jù)單元然后再交

67、給網(wǎng)絡(luò)層,網(wǎng)絡(luò)層又在各個數(shù)據(jù)包上加上自己的IP頭部,包括源IP及目的IP,以方便路由,這樣就到了網(wǎng)絡(luò)接口層,這一層給到來的數(shù)據(jù)加上鏈路層的頭部和尾部,此處是以太網(wǎng)頭部和尾部,最后形成比特流傳輸?shù)骄€路上。包的封裝過程如圖2-9所示:</p><p>  當(dāng)數(shù)據(jù)到達(dá)網(wǎng)絡(luò)另一端的計算機時,又經(jīng)過相反的解包過程:首先,數(shù)據(jù)鏈路層接收到從另一端計算機發(fā)過來的數(shù)據(jù)幀,并由鏈路層的協(xié)議來讀取數(shù)據(jù)幀的內(nèi)容,對于以太網(wǎng)的數(shù)據(jù)鏈路層

68、幀其中有一個字段是標(biāo)志上層協(xié)議的,此處我們假設(shè)是IP協(xié)議,鏈路層協(xié)議會把以太網(wǎng)首部和尾部都去掉,然后把數(shù)據(jù)交給上層的網(wǎng)絡(luò)層,數(shù)據(jù)經(jīng)過網(wǎng)絡(luò)層的處理去掉IP首部后交給相應(yīng)的上層協(xié)議TCP或UDP去處理,同樣道理,TCP或UDP協(xié)議經(jīng)過對數(shù)據(jù)的處理后去掉TCP或UDP頭部,又把數(shù)據(jù)交給應(yīng)用層去處理,最終還原成用戶數(shù)據(jù),這就是數(shù)據(jù)進(jìn)入?yún)f(xié)議棧時的解封過程,如圖2-10所示:</p><p>  圖 2-9 數(shù)據(jù)進(jìn)入?yún)f(xié)議棧時

69、的封裝過程</p><p>  圖 2-10 數(shù)據(jù)進(jìn)入?yún)f(xié)議棧時的解封過程</p><p>  數(shù)據(jù)在協(xié)議棧里面的封裝與解封的原理是網(wǎng)絡(luò)數(shù)據(jù)包捕獲和進(jìn)行協(xié)議分析的基礎(chǔ),本論文所構(gòu)建的數(shù)據(jù)包嗅探器就運用了上述的封裝解封原理,并對所捕獲的數(shù)據(jù)包以協(xié)議樹的形式來顯示包內(nèi)所包含的協(xié)議層次結(jié)構(gòu),另外,本論文最高只是涉及到傳輸層的TCP和UDP協(xié)議的解析,考慮到因特網(wǎng)應(yīng)用層協(xié)議的繁多,并且有可能涉及到

70、加密與解密等一系列的問題,如果要對應(yīng)用層協(xié)議進(jìn)行支持,必須首先去了解掌握這種協(xié)議,然后加入相應(yīng)的應(yīng)用層協(xié)議解析模塊,由于涉及到眾多問題,所以本論文目前并不支持應(yīng)用層協(xié)議的解析,將留待下一步繼續(xù)研究。</p><p><b>  仿真技術(shù)簡介</b></p><p>  本課題做的網(wǎng)絡(luò)協(xié)議仿真軟件實際是嗅探器,嗅探器是指運行在TCP/IP協(xié)議、以太網(wǎng)協(xié)議、IPX協(xié)議或者

71、其他協(xié)議的網(wǎng)絡(luò)上,可以獲取網(wǎng)絡(luò)信息流的軟件或硬件,硬件形式的Sniffer稱為網(wǎng)絡(luò)分析儀,一般都是商業(yè)性的,價格也比較貴。軟件形式的Sniffer有很多,其優(yōu)點是價格便宜,易于學(xué)習(xí)使用,缺點是無法抓取網(wǎng)絡(luò)上所有的傳輸,某些情況下也就無法真正了解網(wǎng)絡(luò)的運行情況[2][3]?,F(xiàn)在的嗅探器一般都是指軟件意義上的,而不是硬件意義上的,軟件嗅探器成本要比硬件嗅探器低得多,并且使用方便,但是在性能方面會比硬件嗅探器差,后者一般是用在要求比較高的地方

72、。</p><p>  通過對國內(nèi)外的文獻(xiàn)調(diào)研發(fā)現(xiàn),網(wǎng)絡(luò)嗅探中的數(shù)據(jù)包捕獲主要可以分兩種方式[1],一種是基于操作系統(tǒng)內(nèi)核的,如Unix、Linux系統(tǒng),它們系統(tǒng)內(nèi)核本身就提供包捕獲機制;第二種就是基于外界提供的驅(qū)動程序庫,如Unix下的Libpcap和Windows下的WinPcap。由操作系統(tǒng)內(nèi)核提供的捕獲機制主要有以下四種:BPF(Berkeley Packet Filter),DLPI(Data Link

73、 Provider Interface),NIT(Network Interface Tap),SOCK_PACKET套接口。其中BPF由基于BSD的Unix系統(tǒng)內(nèi)核所實現(xiàn),而DLPI是Solaris系統(tǒng)的子系統(tǒng),對于NIT則是SunOS 4系統(tǒng)的一部分,但在Solaris系統(tǒng)中已經(jīng)被DLPI取代,Linux系統(tǒng)內(nèi)核則實現(xiàn)了SOCK_PACKET的包捕獲機制。從性能上看,BPF比DLPI及NIT效率要高的多,而SOCK_PACKET最差

74、。</p><p>  嗅探器是網(wǎng)絡(luò)管理員用來管理網(wǎng)絡(luò)的一種工具,通過嗅探器可監(jiān)視網(wǎng)絡(luò)的狀態(tài)、數(shù)據(jù)流動情況以及網(wǎng)絡(luò)上傳輸?shù)男畔⒌?。但是黑客們也常通過嗅探器對網(wǎng)絡(luò)進(jìn)行攻擊,網(wǎng)絡(luò)嗅探技術(shù)在給管理員帶來方便的同時,對網(wǎng)絡(luò)信息安全也構(gòu)成了潛在的威脅。</p><p>  一臺計算機和其他計算機進(jìn)行通訊,一般都需要安裝一塊網(wǎng)卡,嗅探器要想工作,首先要有網(wǎng)卡的支持,由網(wǎng)卡來負(fù)責(zé)接收和發(fā)送網(wǎng)絡(luò)數(shù)據(jù)。每塊

75、網(wǎng)卡在出廠時都有一個全球唯一的48bit長的MAC地址,這樣就保證了網(wǎng)卡地址的唯一性。</p><p>  在以太網(wǎng)上,數(shù)據(jù)是以很小的稱為幀(Frame)的單位傳輸?shù)?,一個數(shù)據(jù)幀有以下幾部分組成,如表2-4。(1)目的MAC地址(2)源MAC地址(3)0800(表示承載的IPv4)(4)IP頭(5)TCP頭或UDP頭(6)數(shù)據(jù)(7)校驗和。</p><p>  表2-4 數(shù)據(jù)鏈路層幀格式&

76、lt;/p><p>  計算機所直接傳送的數(shù)據(jù)是大量的二進(jìn)制數(shù)據(jù)即比特流,在數(shù)據(jù)鏈路層被稱為幀。數(shù)據(jù)發(fā)送和接收的過程是:計算機發(fā)送數(shù)據(jù)時,數(shù)據(jù)從應(yīng)用層向物理層向下傳遞,此過程不斷加上每一層的頭部,逐步包裝成鏈路層數(shù)據(jù)幀,然后通過網(wǎng)卡發(fā)送到線路上,到達(dá)目的計算機后,再執(zhí)行相反的解包過程,最終把數(shù)據(jù)交給應(yīng)用層協(xié)議處理,還原成真實數(shù)據(jù)。對于一個嗅探器來說,也必須使用特定的網(wǎng)絡(luò)協(xié)議如TCP協(xié)議來分解嗅探到的數(shù)據(jù),這就要求嗅探

77、器本身提供對這種協(xié)議的解碼支持,只有這樣才能夠進(jìn)行正確的解碼看到數(shù)據(jù)包里面的數(shù)據(jù)。另外,嗅探器一般是部署到網(wǎng)絡(luò)系統(tǒng)的關(guān)鍵位置如路由器和服務(wù)器上面的。網(wǎng)絡(luò)嗅探在局域網(wǎng)中的應(yīng)用比較廣泛,按照嗅探環(huán)境的不同,可以分為共享式網(wǎng)絡(luò)嗅探和交換式網(wǎng)絡(luò)嗅探。前者相對發(fā)展較早,只要將網(wǎng)卡設(shè)置為混雜模式,并輔以相應(yīng)的捕獲程序即可達(dá)到嗅探的目的。隨著交換機的普及,交換式網(wǎng)絡(luò)嗅探也有了一定的發(fā)展。交換式網(wǎng)絡(luò)嗅探區(qū)別于共享式網(wǎng)絡(luò)嗅探的地方是它主要利用交換網(wǎng)工作機

78、制中的漏洞來實現(xiàn)。知道了嗅探器的工作原理,我們應(yīng)該認(rèn)識到嗅探器并不是專為網(wǎng)絡(luò)攻擊入侵而開發(fā)的,其實一些網(wǎng)絡(luò)診斷命令就屬于嗅探器的范疇,利用嗅探器可以幫助我們檢查底層</p><p><b>  反嗅探措施</b></p><p><b>  嗅探的檢測</b></p><p>  嗅探作為一種重要的網(wǎng)絡(luò)安全技術(shù)手段,應(yīng)得到

79、網(wǎng)絡(luò)安全人員的充分認(rèn)識。由于共享式以太網(wǎng)中的監(jiān)聽原理非常簡單,而且又不干擾正常的網(wǎng)絡(luò)通信,所以發(fā)生在其中的嗅探行為很難被發(fā)現(xiàn)。同時,隨著交換式局域網(wǎng)的流行,網(wǎng)絡(luò)監(jiān)聽也已經(jīng)出現(xiàn)在交換式局域網(wǎng)中,因此,如何有效地檢測和發(fā)現(xiàn)局域網(wǎng)中的嗅探行為并進(jìn)行相應(yīng)的防范己成為維護(hù)局域網(wǎng)安全非常重要的環(huán)節(jié)。盡管網(wǎng)絡(luò)嗅探比較隱蔽不易被發(fā)覺,但仍然可以采用以下幾種方法加以防范。</p><p>  (1)采用加密手段對傳輸?shù)臄?shù)據(jù)進(jìn)行加密

80、,以密文形式傳輸,即使入侵者監(jiān)聽到了傳輸?shù)臄?shù)據(jù)包信息,也不能立刻理解其中的含義,還需要再進(jìn)一步的破解,自然增加了監(jiān)聽的難度。例如Telnet、FTP等采用SSH2進(jìn)行傳輸數(shù)據(jù),它是提供端到端的驗證與加密的應(yīng)用層安全通信協(xié)議,是目前國際互聯(lián)網(wǎng)上最好的安全通信協(xié)議之一。</p><p>  (2)在重要的終端機器上使用靜態(tài)的ARP表,把本局域網(wǎng)內(nèi)所有網(wǎng)卡的IP.MAC地址記錄下來,建立IP.MAC數(shù)據(jù)庫,以便以后使用

81、。</p><p>  (3)對網(wǎng)絡(luò)進(jìn)行分割。網(wǎng)絡(luò)廣播數(shù)據(jù)的時候,數(shù)據(jù)包只能被同一網(wǎng)絡(luò)地址段內(nèi)的嗅探器捕獲,所以可以利用網(wǎng)絡(luò)分割的技術(shù)把網(wǎng)絡(luò)進(jìn)一步劃分為小的局域網(wǎng),縮小嗅探器的嗅探范圍,這樣就能保證網(wǎng)絡(luò)其他部分的安全。</p><p><b>  嗅探的防御</b></p><p>  雖然絕對安靜的嗅探器在理論上無法發(fā)現(xiàn),但是根據(jù)嗅探器在工作

82、中對主機系統(tǒng)或網(wǎng)絡(luò)通訊的影響,也可從中判斷其是否存在。具體可從以下幾個方面入手:</p><p><b>  (1)網(wǎng)卡工作模式</b></p><p><b>  (2)網(wǎng)絡(luò)流量分析</b></p><p><b>  (3)系統(tǒng)資源分析</b></p><p><b&

83、gt;  (4)引誘策略</b></p><p>  網(wǎng)絡(luò)嗅探的防御相對網(wǎng)絡(luò)嗅探的實現(xiàn)難度要大得多,目前大多數(shù)反監(jiān)聽工具主要采用DNS檢測、ARP檢測等方法,而這些方法本身都存在不少缺陷,它們都依賴于目標(biāo)主機發(fā)出DNS反向查詢、ARP應(yīng)答包,而很多優(yōu)秀的嗅探器在運行時會阻止本機發(fā)出以上所說的數(shù)據(jù)包,從而使基于以上原理檢測的反嗅探工具都會失效。對于一些惡意嗅探,目前還沒有一個一勞永逸的方法,在綜合應(yīng)用上

84、述方法的同時,還應(yīng)不斷提高網(wǎng)絡(luò)管理人員的安全意識,做到多注意、勤檢查。</p><p>  Windows下的網(wǎng)絡(luò)嗅探及WinPcap研究</p><p><b>  WinPcap簡介</b></p><p>  本章作為論文的關(guān)鍵部分之一將會做以下幾方面的研究:首先是WinPcap框架的組成部分、WinPcap的新特性與優(yōu)勢,接下來會重點分

85、析WinPcap的體系結(jié)構(gòu),然后對比Windows與Unix下的網(wǎng)絡(luò)嗅探和數(shù)據(jù)包捕獲機制,研究WindOWS下的嗅探的底層基礎(chǔ)NDIS網(wǎng)絡(luò)驅(qū)動器接口規(guī)范,最后總結(jié)了基于Windows的數(shù)據(jù)包捕獲方案,得出了基于WinPcap數(shù)據(jù)包捕獲的一般過程。通過本章對WinPcap驅(qū)動的研究分析,深刻理解了WinPcap本身的運行機制,為更合理和高效的運用WinPcap編程奠定了基礎(chǔ)。</p><p>  WinPcap是由

86、意大利的Fulvio Risso和Loris Degioanni等人實現(xiàn)的應(yīng)用于Win32平臺數(shù)據(jù)包捕獲與分析的一種驅(qū)動軟件包,并提供了在Windows操作系統(tǒng)下的開放源代碼,是一套高性能API封裝庫,有一套標(biāo)準(zhǔn)的抓包接口專門用于網(wǎng)絡(luò)數(shù)據(jù)包的截獲,并在其基礎(chǔ)上增加了自定義數(shù)據(jù)包的發(fā)送能力以及針對Win32平臺的擴展函數(shù),獨立于Windows操作系統(tǒng)的協(xié)議棧。</p><p>  不同版本的Windows系統(tǒng)都有自

87、己的內(nèi)核模塊和用戶層模塊,所以使用Windows SDK開發(fā)的嗅探程序在不同的Windows操作系統(tǒng)版本下需重新進(jìn)行編譯。WinPcap為Win32平臺提供了一個公共的接口Packet.dll,使得程序可以運行在不同版本的Windows 平臺上,而無需重新編譯。另外,WinPcap的標(biāo)準(zhǔn)抓包接口與Libpcap兼容,使系統(tǒng)便于向Unix/Linux平臺移植。</p><p>  WinPcap的主要功能在于獨立于

88、主機協(xié)議如TCP-IP協(xié)議發(fā)送和接收原始數(shù)據(jù)包,也就是說,WinPcap不能阻塞、過濾或控制其他應(yīng)用程序?qū)?shù)據(jù)報的收發(fā),它只是繞過系統(tǒng)原有的協(xié)議棧監(jiān)聽網(wǎng)絡(luò)上傳送的數(shù)據(jù)包。因此,它不能用于QoS(Quality of Service)調(diào)度程序或個人防火墻。WinPcap有以下幾方面的功能[8]:</p><p>  (1)捕獲原始數(shù)據(jù)包,無論它是發(fā)往某臺機器的,還是在其他設(shè)備(共享媒介)上進(jìn)行交換的。</p&

89、gt;<p>  (2)在數(shù)據(jù)包發(fā)往應(yīng)用程序之前,按照自定義的規(guī)則將某些特殊的數(shù)據(jù)包過濾掉。</p><p>  (3)將原始數(shù)據(jù)包通過網(wǎng)絡(luò)發(fā)送出去。</p><p>  (4)收集并統(tǒng)計網(wǎng)絡(luò)流量信息。</p><p>  1)WinPcap框架的各個組成部分</p><p>  圖2-11 Winpcap框架的組成部分<

90、;/p><p>  如圖2-11所示,WinPcap包括內(nèi)核級的數(shù)據(jù)包監(jiān)聽驅(qū)動NPF、低級動態(tài)鏈接庫(Packet.dll)和高級系統(tǒng)無關(guān)庫(Wpcap.dll)。在利用WinPcap抓包時,要繞過操作系統(tǒng)的協(xié)議棧來訪問網(wǎng)絡(luò)上傳輸?shù)脑紨?shù)據(jù)包,這就要求WinPcap的一部分要運行在操作系統(tǒng)核心層,直接與網(wǎng)絡(luò)接口驅(qū)動交互,這就是NPF驅(qū)動要完成的任務(wù),它是依賴于操作系統(tǒng)的。另外,還需要提供向上的用戶級程序接口以方便應(yīng)用

91、程序調(diào)用,WinPcap提供了Packet.dll和Wpcap.dll這兩個動態(tài)鏈接庫,通過調(diào)用這些接口,用戶程序可以與NPF交互,利用它所提供的高級特性來捕獲并處理數(shù)據(jù)包。</p><p>  2)WinPcap的新特性與優(yōu)勢</p><p>  WinPcap除了有強大的數(shù)據(jù)包捕獲功能以外,相比BSD Capturing Component,它還增加了統(tǒng)計及數(shù)據(jù)包發(fā)送功能,另外還有遠(yuǎn)

92、程捕獲的能力。(1)統(tǒng)計功能可以快速實現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)的統(tǒng)計,如一定時間內(nèi)流經(jīng)總線的數(shù)據(jù)包數(shù)目,數(shù)據(jù)字節(jié)數(shù)等。它不需要把數(shù)據(jù)包傳送到應(yīng)用程序,避免了大量的數(shù)據(jù)包拷貝操作。WinPcap的這種包統(tǒng)計功能是一種非常高效的、用來監(jiān)測網(wǎng)絡(luò)的方法,即使在局域網(wǎng)有大量數(shù)據(jù)包流動時,它仍然可以工作的很好。</p><p>  (2)發(fā)送數(shù)據(jù)包功能使得應(yīng)用程序不僅可以嗅探網(wǎng)絡(luò),還可以實現(xiàn)向網(wǎng)絡(luò)發(fā)送數(shù)據(jù),但是WinPcap本身不具備產(chǎn)

93、生數(shù)據(jù)包的能力,需要通過手工或者其它工具來構(gòu)造。</p><p>  (3)WinPcap又?jǐn)U展了自身的標(biāo)準(zhǔn)代碼,這樣,基于WinPcap的工具可以擁有遠(yuǎn)程捕獲的能力[7],這個高級特性能夠捕獲在遠(yuǎn)程網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包。它需要一個遠(yuǎn)程后臺程序,由它進(jìn)行捕獲,并把捕獲到的數(shù)據(jù)發(fā)回,一個本地客戶端會發(fā)送合適的命令并接收捕獲到的數(shù)據(jù)。例如:遠(yuǎn)程后臺程序被加入到客戶軟件中,我們并不需要另外修改,就能使程序擁有遠(yuǎn)程捕捉的能

94、力。反之亦然,遠(yuǎn)程后臺程序必須被安裝和配置在遠(yuǎn)程機器上。遠(yuǎn)程捕獲協(xié)議(RPCAP)可以在兩種模式下工作:</p><p>  被動模式(默認(rèn)):客戶機連接到遠(yuǎn)程后臺程序,它發(fā)送一些合適的命令,并開始捕獲。</p><p>  主動模式:遠(yuǎn)程后臺程序試圖連接到客戶機,然后,客戶機發(fā)送一些合適的命令,并開始捕獲。主動模式是有用的,除了當(dāng)遠(yuǎn)程后臺程序遇到了防火墻的阻止而不能訪問外部網(wǎng)絡(luò)時。在這種

95、情況下,遠(yuǎn)程后臺程序可以被配置成允許與已知的主機建立連接,而那個主機,只需要配置成等待連接即可。在連接建立完成之后,協(xié)議會繼續(xù)自己的工作,這些工作在主動模式和被動模式下幾乎是一樣的。</p><p>  使用WinPcap庫相對于其他方法有以下優(yōu)點:</p><p>  (1)函數(shù)調(diào)用簡單。</p><p>  (2)可以捕獲完整的數(shù)據(jù)幀,包括鏈路層幀頭信息(不包括

96、幀尾的校驗和,網(wǎng)卡在</p><p>  驗證校驗和后將自動丟棄校驗和部分,只將前面的數(shù)據(jù)交給上層),從而可以全面地分析各種網(wǎng)絡(luò)協(xié)議。</p><p>  (3)可以捕獲從本機發(fā)出的數(shù)據(jù)幀。</p><p>  (4)內(nèi)核級的封包過濾,僅提交給應(yīng)用程序需要的數(shù)據(jù),系統(tǒng)開銷小。</p><p>  (5)WinPcap提供了一套標(biāo)準(zhǔn)的抓包接口,

97、與Libpcap兼容,因此用其開發(fā)的應(yīng)用程序具有較強的可移植性。</p><p>  WinPcap體系結(jié)構(gòu)</p><p>  WinPcap的體系結(jié)構(gòu)是借鑒的BSD Capturing Component的體系結(jié)構(gòu),首先對BSD Capturing Component的體系結(jié)構(gòu)和Winpcap體系結(jié)構(gòu)做一下對比。</p><p>  1)BSD Capturi

98、ng Component的體系結(jié)構(gòu)</p><p>  BSD Capturing Component是Unix下最常用的捕獲數(shù)據(jù)包的驅(qū)動,其基本體系結(jié)構(gòu)見圖2-12。</p><p>  如圖2-4所示,BSD Capturing Component由以下幾部分組成:Network Tap,它負(fù)責(zé)從網(wǎng)絡(luò)直接捕獲所有的數(shù)據(jù)包;BPF-Berkeley Packet Filter,它用來分

99、析捕獲進(jìn)來的數(shù)據(jù)包;兩種Buffer:一種工作在核心層,一種工作在用戶層。經(jīng)過BPF的數(shù)據(jù)包被拷貝到Kemel Buffer中,它分為兩個buffer:store buffer和hold buffer。store buffer用于保存從網(wǎng)絡(luò)適配器捕獲的數(shù)據(jù)包,hold buffe則用于將數(shù)據(jù)包拷貝到用戶的buffer中。</p><p>  二者之間擁有swap特性:由于storebuffer比hold buff

100、er更易被填滿,所以當(dāng)store buffer 己滿,而hold buffer為空的時候,store buffer變成hold buffer,而之前的hold buffer變成store buffer,這樣使得用戶的程序和捕獲數(shù)據(jù)包的驅(qū)動完全分開。User-level buffer存儲從核心層進(jìn)來的數(shù)據(jù)包,它可防止用戶直接訪問內(nèi)核管理的內(nèi)存。</p><p>  圖2-12 BSD Capturing Comp

101、onent的體系結(jié)構(gòu)</p><p>  2)WinPcap的體系結(jié)構(gòu)</p><p>  WinPcap體系結(jié)構(gòu)如圖2-13所示。</p><p>  WinPcap包捕獲驅(qū)動由三個模塊組成,一個在內(nèi)核級,另外兩個處于用戶級,以動態(tài)鏈接庫的形式提供。由于BPF功能強大而且工作穩(wěn)定,所以WinPcap沿用了其中幾個最重要的模塊:包過濾器,內(nèi)核級和用戶級的緩存,用戶

102、級上的兩種庫[9][10]。</p><p>  (1)NPF-Netgroup Packet Filter,內(nèi)核級的網(wǎng)絡(luò)包過濾器,它是WinPcap架構(gòu)的核心,是一個虛擬設(shè)備驅(qū)動程序文件,是WinPcap體系結(jié)構(gòu)中最底層的模塊。NPF具有高效和迅速的特點,即使在流量很大的快速局域網(wǎng)中也能正常的進(jìn)行包捕獲,丟包率小并且占用的系統(tǒng)資源少[11]。</p><p>  (2)Packet.dl

103、l一數(shù)據(jù)包低級驅(qū)動程序庫,它是與Libpcap相兼容的一組用戶級的函數(shù)庫,為Win32平臺提供了一個公共的接口,是一個能用來直接訪問NPF驅(qū)動程序的API。</p><p>  (3)Wpcap.dll.?dāng)?shù)據(jù)包高級驅(qū)動程序庫,是個更高層的、系統(tǒng)無關(guān)的API,它是對Packet.dll更高層的封裝。</p><p>  處于最下方的是網(wǎng)卡驅(qū)動,它用來管理網(wǎng)卡捕獲的數(shù)據(jù)包。為了讓網(wǎng)卡能夠捕獲網(wǎng)

104、絡(luò)中的全部數(shù)據(jù)包,應(yīng)將其設(shè)為“混雜模式”。</p><p>  在利用WinPcap開發(fā)網(wǎng)絡(luò)監(jiān)聽程序時,主要是調(diào)用Packet.dll和Wpcap.dll中提供的API函數(shù)[12]。Packet.dll直接映射了內(nèi)核的調(diào)用,Wpcap.dll提供了更加友好、功能更加強大的函數(shù)調(diào)用。當(dāng)所開發(fā)的捕獲程序沒有涉及到對底層進(jìn)行編程的特殊需求時,使用Wpcap.dll動態(tài)鏈接庫,其實Wpcap.dll也要使用packet.

105、dll中的函數(shù),但是Wpcap.dll提供了一個強大及時并且易用的編程環(huán)境。Packet.dll提供了一些Wpcap.dll沒有提供的功能,Wpcap.dll的設(shè)計目標(biāo)是提供一套可移植并且系統(tǒng)無關(guān)的捕獲API集合,因此它不可能將驅(qū)動所提供的全部功能都輸出出來。所以在這樣的情況下,就需要使用Packet.dll提供的特殊函數(shù)來滿足對系統(tǒng)開發(fā)的更高要求。</p><p>  圖2-13 WinPcap的體系結(jié)構(gòu)&l

106、t;/p><p>  3)用到的WinPcap的主要用戶接口函數(shù)和數(shù)據(jù)結(jié)構(gòu)</p><p>  (1)用戶接口函數(shù):</p><p>  int pcap_findalldevs():獲得己連接到本機上所有網(wǎng)卡的列表。</p><p>  pcap_t *pcap_open_live():打開一個網(wǎng)絡(luò)適配器,建立捕獲會話。</p>

107、<p>  int pcap_compile():將一個高層的布爾過濾表達(dá)式編譯成一個能夠被過濾引</p><p>  擎所解釋的低層的字節(jié)碼。</p><p>  int pcap_setfilter():將一個過濾器與內(nèi)核捕獲會話相關(guān)聯(lián)。</p><p>  int pcap_loop()或int pcap_dispatch():進(jìn)行數(shù)據(jù)包的捕獲。&l

108、t;/p><p>  void pcap freealldevs():釋放設(shè)備列表。</p><p>  int pcap datalink():獲取數(shù)據(jù)鏈路層傳輸類型。</p><p>  void(*) pcap_handler():接收數(shù)據(jù)包的回調(diào)函數(shù)。</p><p>  (2)數(shù)據(jù)結(jié)構(gòu)(只列出了數(shù)據(jù)結(jié)構(gòu)的名字):</p>

109、<p>  packetheader:內(nèi)核緩沖池中每個數(shù)據(jù)包的預(yù)定結(jié)構(gòu)。</p><p>  pcap_addr:接口地址描述。用于函數(shù)pcap_findalldevs()。</p><p>  pcap_if:接口表中的一項,用于函數(shù)pcap_findalldevs()。</p><p>  pcap_pkthdr:當(dāng)機轉(zhuǎn)儲文件(dump file)中數(shù)

110、據(jù)包的首部。</p><p>  Windows下的網(wǎng)絡(luò)嗅探</p><p>  同時WinPcap的出現(xiàn)具有一定的必然性。Windows作為當(dāng)前最流行的用戶平臺,占據(jù)了絕大多數(shù)PC用戶的桌面。如何在源碼不公開的Windows操作系統(tǒng)下實現(xiàn)一個網(wǎng)絡(luò)嗅探系統(tǒng),成為很多人關(guān)注的焦點。微軟贊助了意大利的一家研究院開發(fā)了WinPcap這個項目,最終導(dǎo)致了WinPcap的產(chǎn)生。現(xiàn)在WinPcap本

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論