版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 北方民族大學</b></p><p><b> 學士學位論文</b></p><p> 論文題目 基于HTTP協(xié)議數(shù)據(jù)包解析與還原系統(tǒng)的設計與實現(xiàn)</p><p> 系(部)名 稱: 計算機科學與工程學院 </p><p> 學 生 姓
2、名: 卞春林 </p><p> 專 業(yè): 網(wǎng)絡工程 學 號: 20091613 </p><p> 指導教師姓名: 楊鵬 </p><p> 論文提交時間: 2013-4-23 &l
3、t;/p><p> 論文答辯時間: 2013-4-28 </p><p> 學位授予時間: </p><p><b> 北方民族大學教務</b></p><p> 基于HTTP協(xié)議的數(shù)據(jù)解析與還原系統(tǒng)的設計與實
4、現(xiàn)</p><p><b> 摘 要</b></p><p> 隨著世界信息發(fā)展的速度越來越快,Internet網(wǎng)的快速發(fā)展,信息技術(shù)的應用越來越廣泛,從傳統(tǒng)的小型應用到現(xiàn)在的大型商務應用以及企業(yè)應用等都涉及到信息技術(shù)。網(wǎng)絡技術(shù)的應用已經(jīng)成為當今人們生活中不可缺少的一部分了。加強探索網(wǎng)絡信息監(jiān)聽與還原技術(shù)有助于建立可靠、高效的信息安全保障體系,對社會政治穩(wěn)定
5、和國家信息安全具有重要的現(xiàn)實意義。 </p><p> 針對網(wǎng)絡傳輸環(huán)境和實際的需求,基于TCP/IP協(xié)議族。本文主要分析針對網(wǎng)絡數(shù)據(jù)包的相關(guān)方面。主要涉及以下幾個方面的內(nèi)容:JAVA語言的相關(guān)介紹,網(wǎng)絡數(shù)據(jù)包的捕獲技術(shù),數(shù)據(jù)包的相關(guān)分析技術(shù),HTTP數(shù)據(jù)包的還原重組技術(shù)。對于數(shù)據(jù)包的捕獲中,對TCP/IP協(xié)議族的介紹,介紹基本的網(wǎng)絡協(xié)議原理。對于數(shù)據(jù)包的重組技術(shù),分析如何將無序的數(shù)據(jù)片流進行有序化。對于HTT
6、P信息識別技術(shù)討論超文本傳輸協(xié)議HTTP(HyperText Transfer Protocol),描述協(xié)議相關(guān)的參數(shù),源地址,目標地址,協(xié)議的組成等。</p><p> 本設計實現(xiàn)的網(wǎng)頁信息還原系統(tǒng)立足于高效,準確,穩(wěn)定。實現(xiàn)基于HTTP/1.0協(xié)議網(wǎng)絡信息的解析與還原。</p><p> 關(guān)鍵字:http數(shù)據(jù)包, 解析,還原</p><p> Design
7、 and Implementation of Data Analysis and Restore System Based on HTTP Protocol</p><p><b> Abstract</b></p><p> With the rapid development of the world's information and the Int
8、ernet, the application of information technology is more and more widely, from traditional small applications to large business applications and enterprise applications are related with IT. The application of network tec
9、hnology has become an indispensable part of people's life. </p><p> Strengthening exploration of the network information monitoring and reductive treatment will contribute to creating a reliable and eff
10、icient information security system, which has important practical significance for social and political stability and national information security. </p><p> In view of the network transmission environment
11、 and the actual demand, this paper mainly analyzes the relevant aspects of network data packet, which mainly involves the following several aspects: introduction of the JAVA language, network packet capture technology, d
12、ata packet analysis technology, the restoring recombinant technology of HTTP data packet. For packet capture, this paper introduces the TCP/IP protocol, and the basic principles of the network protocol. For the data pack
13、et recombinat</p><p> The design and implementation of webpage information and restoring system are based on the high efficiency, accuracy and stability, which the aim is to achieve the analysis and restori
14、ng based on network information of HTTP/1.0 protocol</p><p> Key words: http packet,analysis,restore</p><p><b> 目 錄</b></p><p><b> 1.緒 論1</b></p&g
15、t;<p> 1.1研究背景與意義1</p><p> 1.2 研究方法與環(huán)境配置1</p><p> 1.3 研究內(nèi)容和目標2</p><p> 2.網(wǎng)絡協(xié)議基本概念3</p><p> 2.1 網(wǎng)絡體系結(jié)構(gòu)3</p><p> 2.2 網(wǎng)絡協(xié)議分析4</p>&l
16、t;p> 2.2.1 TCP/IP協(xié)議族4</p><p> 2.2.2 HTTP協(xié)議概述5</p><p> 2.2.3 THHP協(xié)議的特點5</p><p> 2.2.4 HTTP協(xié)議的結(jié)構(gòu)6</p><p> 2.3 HTTP協(xié)議的運作方式8</p><p> 3. 開發(fā)工具與環(huán)境介紹
17、11</p><p> 3.1 Java語言介紹11</p><p> 3.1.1 Java語言簡介11</p><p> 3.1.2 Java語言的特點11</p><p> 3.2 JDK概述13</p><p> 3.4 JDK安裝與配置13</p><p> 3.
18、5 MyEclipse相關(guān)介紹13</p><p> 4. 網(wǎng)絡協(xié)議分析系統(tǒng)的設計14</p><p> 4.1 WinPcap的相關(guān)介紹14</p><p> 4.2 體系結(jié)構(gòu)設計15</p><p> 4.3 數(shù)據(jù)包的存儲16</p><p> 4.4 網(wǎng)絡數(shù)據(jù)包的捕獲和存儲流程圖18<
19、/p><p> 4.5 網(wǎng)絡數(shù)據(jù)包的還原原理20</p><p> 5.網(wǎng)絡數(shù)據(jù)捕獲與還原系統(tǒng)的實現(xiàn)21</p><p> 5.1 字符編碼介紹21</p><p> 5.1.1 ASCALL字符編碼21</p><p> 5.1.2 GBK字符編碼21</p><p> 5.
20、1.3 GB2312字符編碼21</p><p> 5.1.4 BIG5字符編碼22</p><p> 5.1.5 UNICODE字符編碼22</p><p> 5.1.6 UTF-8字符編碼23</p><p> 5.2 系統(tǒng)設計模塊要求23</p><p> 5.3 網(wǎng)卡設置模塊24</
21、p><p> 5.3.1 網(wǎng)卡設置模塊實現(xiàn)代碼24</p><p> 5.3.2 問題總結(jié)25</p><p> 5.4 捕獲數(shù)據(jù)包控制模塊26</p><p> 5.4.1捕獲數(shù)據(jù)包模塊實現(xiàn)代碼及運行結(jié)果26</p><p> 5.4.2 捕獲數(shù)據(jù)包的信息分析28</p><p&g
22、t; 5.4.3 問題總結(jié)31</p><p> 5.5 數(shù)據(jù)包重組模塊32</p><p> 5.5.1數(shù)據(jù)包還原算法32</p><p> 5.5.2數(shù)據(jù)包還原模塊實現(xiàn)代碼及運行結(jié)果33</p><p> 5.5.3 問題總結(jié)35</p><p><b> 6.總結(jié)37</b
23、></p><p> 6.1 已完成的工作37</p><p><b> 6.2 展望37</b></p><p><b> 致 謝39</b></p><p><b> 參考文獻40</b></p><p> 附錄I 相關(guān)代碼
24、41</p><p><b> 1.緒 論</b></p><p> 1.1研究背景與意義</p><p> 隨著現(xiàn)代信息技術(shù)迅猛發(fā)展,網(wǎng)絡技術(shù)在日常生活中起到的作用越來越重要,信息安全問題更為重要。網(wǎng)絡上的信息安全問題出現(xiàn)的問題越來越多,同時也受到越來越多的人關(guān)注。而作為萬維網(wǎng)的網(wǎng)絡協(xié)議中,作為最高層的應用層中的核心協(xié)議http協(xié)議
25、是基礎(chǔ)。當網(wǎng)絡出現(xiàn)故障,異常時,對網(wǎng)絡上傳輸?shù)臄?shù)據(jù)進行監(jiān)控和分析,是網(wǎng)絡管理人員對于網(wǎng)絡故障解決的一種方法。網(wǎng)絡信息還原的重要性和緊迫性已經(jīng)刻不容緩。為了維護我國的信息安全,遏制不良信息的傳播,必須加大對網(wǎng)絡信息監(jiān)控與管理的力度,對互聯(lián)網(wǎng)上的信息內(nèi)容進行自動審查、過濾,防止不良信息的傳播,規(guī)范網(wǎng)絡,推進網(wǎng)絡健康文明發(fā)展。</p><p> HTTP是一種詳細規(guī)定了瀏覽器和萬維網(wǎng)服務器之間互相通信的規(guī)則,通過因特
26、網(wǎng)傳送萬維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議。通過分析其協(xié)議內(nèi)容,更好的方便人們的學習與理解,更好的管理網(wǎng)絡中的數(shù)據(jù)傳輸。通過解析與還原HTTP數(shù)據(jù)包可以方便的知道網(wǎng)絡中的數(shù)據(jù)傳輸,對于網(wǎng)絡中的不安全或者不良信息及時的管理,使萬維網(wǎng)中的傳輸更加安全,網(wǎng)絡環(huán)境更加優(yōu)良和安全。對因特網(wǎng)中一些重要數(shù)據(jù)信息進行還原和提取,是保證網(wǎng)絡應用的健康發(fā)展和打擊網(wǎng)絡犯罪的一個重要手段。實時監(jiān)控所在網(wǎng)絡的HTTP通訊,當網(wǎng)絡上出現(xiàn)非法內(nèi)容的HTTP通訊時,將捕獲的非法內(nèi)
27、容保存到數(shù)據(jù)庫,向網(wǎng)絡安全管理部門報告,以便及時保護事業(yè)單位及國家的利益。</p><p> 1.2 研究方法與環(huán)境配置</p><p> 基于對TCP/IP協(xié)議的理論分析,了解其網(wǎng)絡數(shù)據(jù)包的傳輸過程和原理,進而設計出相關(guān)的對于數(shù)據(jù)包的解析和還原軟件。本軟件運行的平臺主要是windows下運行,用到Java語言編寫,需要配置jdk,關(guān)于相關(guān)的配置問題,在后文中有相關(guān)的介紹。</p
28、><p> 1.3 研究內(nèi)容和目標</p><p> 本論文主要是從網(wǎng)絡數(shù)據(jù)傳輸?shù)膮f(xié)議分析入手,介紹相關(guān)的TCP/IP協(xié)議。然后通過對于win cap環(huán)境的相關(guān)配置,JAVA開發(fā)平臺的相關(guān)配置,最后設計并完成對于HTTP數(shù)據(jù)包的捕獲解析與還原軟件的設計與實現(xiàn)。</p><p> 本論文的主要研究內(nèi)容主要有幾下幾點:</p><p> ?。?
29、),對網(wǎng)絡數(shù)據(jù)傳輸協(xié)議做系統(tǒng)的介紹,對于網(wǎng)絡數(shù)據(jù)包捕獲技術(shù),win cap開發(fā)包,JAVA開發(fā)平臺,環(huán)境配置做簡單的介紹。</p><p> (2),網(wǎng)絡協(xié)議原理的簡單介紹、TCP/IP協(xié)議分層及其協(xié)議分布,網(wǎng)絡數(shù)據(jù)包解析過程及各層數(shù)據(jù)包組成部分,數(shù)據(jù)包還原原理。</p><p> ?。?),基于HTTP協(xié)議數(shù)據(jù)包解析與還原軟件的實現(xiàn)。</p><p> 本文所
30、介紹基于HTTP協(xié)議的解析與還原信息主要是Internet信息,這些信息主要包括圖像,聲音,文本等。最后實現(xiàn)數(shù)據(jù)包的解析,數(shù)數(shù)據(jù)包的還原。幫助網(wǎng)管人員監(jiān)聽感興趣的HTTP數(shù)據(jù)包,分析其遵守的協(xié)議以及其應用層數(shù)據(jù),同時將應用層數(shù)據(jù)進行重組,恢復到原始的數(shù)據(jù)格式。</p><p> 2.網(wǎng)絡協(xié)議基本概念</p><p> 2.1 網(wǎng)絡體系結(jié)構(gòu)</p><p> 網(wǎng)
31、絡體系結(jié)構(gòu)是指網(wǎng)絡通信系統(tǒng)的整體設計,它為網(wǎng)絡硬件、軟件、協(xié)議、存取控制和拓撲提供標準。它廣泛采用的是國際標準化組織(ISO)在1979年提出的開放系統(tǒng)互連(OSI-Open System Interconnection)的參考模型。OSI參考模型主要有七層,分別是:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡層、運輸層、會話層、表示層和應用層。TCP/IP是一個四層的體系結(jié)構(gòu),它包含應用層、傳輸層、網(wǎng)際層、和網(wǎng)絡接口層。但是,從本質(zhì)上來說,TCP/IP只
32、有三層,即應用層、運輸層和網(wǎng)際層,因為最下面的網(wǎng)絡接口層實際上并沒有什么詳細的內(nèi)容。</p><p> 下面的圖1-1是兩臺計算機進行網(wǎng)絡通信時的各層數(shù)據(jù)流結(jié)構(gòu)示意圖。</p><p><b> 圖1-1 </b></p><p> 應用層 應用層是體系結(jié)構(gòu)中的最高層。應用層直接為用戶的應用進程提供服務。這是的進程是指的下在運行的
33、程序。在因特網(wǎng)中應用層協(xié)議很多,如支持萬維網(wǎng)應用的HTTP協(xié)議,支持電子郵件的SMTP協(xié)議,支持文件傳送的FTP協(xié)等等。</p><p> 運輸層 運輸層的任務就是負責向兩個主機中的進程之間的通信提供服務。由于一個主機可同時運行多個吉利,因此運輸層有腥用和分用的功能。復用就是多個應用層進程可以使用下面運輸層的,分用則是運輸層把收的信息分別交付給上面應用層中的相應的進程。運輸層主要使用傳輸控制協(xié)議TCP和用戶數(shù)據(jù)
34、協(xié)議UDP。</p><p> 網(wǎng)絡層 網(wǎng)絡層負責為分組網(wǎng)上的不同的主機提供通信服務。在發(fā)送數(shù)據(jù)時,網(wǎng)絡層把層產(chǎn)生的報文段或用戶數(shù)據(jù)報封裝成組或包進行傳送。在TCP/IP體系中,由于網(wǎng)絡層使用IP協(xié)議,因此分組也叫做IP數(shù)據(jù)報,或簡稱為數(shù)據(jù)報。</p><p> 數(shù)據(jù)鏈路層 常簡稱為鏈路層。我們知道,兩個主機之間的數(shù)據(jù)的傳輸,總是在一段一段的鏈路上傳送的,也就是說,在兩個相鄰點之間(主
35、機和路由器之間或現(xiàn)個路由器之間)傳送數(shù)據(jù)是直接傳送的。這時就需要使用專門的鏈路層的協(xié)議。在兩個相鄰結(jié)點之間傳送數(shù)據(jù)時,數(shù)據(jù)鏈路層將網(wǎng)絡層交下來的IP數(shù)據(jù)報組裝成幀,在兩個相鄰結(jié)點間的鏈路上“透明”地傳送幀中的數(shù)據(jù)。每一幀包括數(shù)據(jù)和必要的控制信息(如同步信息、地址信息、差錯控制等)。典型的幀長中有幾百字節(jié)到一千多字節(jié)。</p><p> 物理層 在物理層上所傳數(shù)據(jù)的單位是比特。物理層的任務就是透明地傳送比特流。也
36、就是說,發(fā)送方發(fā)送1(或0)時,接收方應當收到1(或0)而不是0(或1)。因此物理層要考慮用多大的電壓代表“1”或“0”,以及接收方如何識別出發(fā)送方所發(fā)送的比特。物理層還要確定連接電纜的插頭應當有多少根引線以及各條應如何連接。當然,哪幾個比特代表什么意思 ,則不是物理層所要管的。傳遞信息所利用的一些物理媒體,如雙絞線,同軸電纜,光纜,無線信道等,并不在物理層協(xié)議之內(nèi),而是在物理協(xié)議的下面。</p><p> 2
37、.2 網(wǎng)絡協(xié)議分析</p><p> 2.2.1 TCP/IP協(xié)議族</p><p> TCP/IP協(xié)議族,它的特點是上下兩頭大而中間?。簯脤雍途W(wǎng)絡接口都有多種協(xié)議,而中間的IP層很小,上層的各種協(xié)議都向下匯聚到一個IP協(xié)議中。這種像沙漏計時器形狀的TCP/IP協(xié)議族表明:TCP/IP可以為各式各樣的應用提供服務,同時TCP/IP協(xié)議在各式各樣的網(wǎng)絡構(gòu)成的互聯(lián)網(wǎng)上運行。正因為如此,因
38、特網(wǎng)才會發(fā)展到今天的這種全球規(guī)模。在下圖3-2可以看出IP協(xié)議在因特網(wǎng)中的核心作用。</p><p><b> 圖3-2</b></p><p> 2.2.2 HTTP協(xié)議概述</p><p> 超文本傳輸協(xié)議 (HTTP-Hypertext transfer protocol) 是分布式,協(xié)作式,超媒體系統(tǒng)應用之間的通信協(xié)議。是萬維網(wǎng)(
39、world wide web)交換信息的基礎(chǔ)。HTTP是IETF(Internet Engineering Task Force)制定的國際化標準。在HTTP標準制定和實現(xiàn)的過程中,W3C積極參與了其中的工作,并發(fā)揮了重要作用。 它允許將超文本標記語言 (HTML) 文檔從 Web 服務器傳送到 Web 瀏覽器。HTML 是一種用于創(chuàng)建文檔的標記語言,這些文檔包含到相關(guān)信息的鏈接。您可以單擊一個鏈接來訪問其它文檔、圖像或多媒體對象,并獲
40、得關(guān)于鏈接項的附加信息。 HTTP工作在TCP/IP協(xié)議體系中的TCP協(xié)議上??蛻魴C和服務器必須都支持 HTTP,才能在萬維網(wǎng)上發(fā)送和接收 HTML 文檔并進行交互。</p><p> 2.2.3 THHP協(xié)議的特點</p><p> HTTP協(xié)議的主要特點主要有以下幾點:</p><p> (1)、支持客戶/服務器模式.http 協(xié)議。</p>
41、<p> (2)、 簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務器聯(lián)系的類型不同。由于HTTP協(xié)議簡單,使得HTTP服務器的程序規(guī)模小,因而通信速度很快。 </p><p> ?。?)、靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標記。 </p><p>
42、; ?。?)、無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。 </p><p> ?。?)、無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數(shù)據(jù)量增大。</p><p> 另一方面,在服務器不
43、需要先前信息時它的應答就較快。</p><p> 2.2.4 HTTP協(xié)議的結(jié)構(gòu)</p><p> HTTP報文由從客戶機到服務器的請求的從服務器到客戶機的響應組成,因此HTTP報文有兩類:(1)、請求報文——從客戶向服務器發(fā)送的請求報文,見圖2-5-1。(2)、響應報文——從服務器到客戶的回答。見圖2-5-2。由于HTTP是面向文本的(text-oriented),因此報文中的每個字
44、段都是一些ASCII碼串,因而各個字段的長度都是不確定的。</p><p><b> 圖2-5-1</b></p><p><b> 圖2-5-2</b></p><p> HTTP請求報文的響應報文都是由三個部分組成。由此可知,這兩種報文的格式的區(qū)別就是開始行不同。開始行,用于區(qū)分是請求報文還是響應報文。在請求報文
45、中的開始行叫做請求行(Request-Line),而在響應報文的開始行叫做狀態(tài)行(Status-line)。在開始行的三個字段之間都以空格分隔開,最后的“CR”和“LF”分別表示回車和換行。首部行,用來說明瀏覽器或報文主體的一些信息。首部可以有好幾行,但也可以不使用。在每一個首部中都有首部字段名和它的值,每一行在結(jié)束的地方都要有“回車”和“換行”。整個首部行結(jié)束時,還有一些空行將首部行的后面的實體主體分開。實體主體(entity bod
46、y),在請求報文中一般都不用這個字段,而是在響應報文中也可能沒有這個字段。</p><p> 請求報文的結(jié)構(gòu)特點 http請求由三部分組成,分別是:請求行、消息報頭、請求正文。請求行以一個方法符號開頭,以空格分開,后面跟著請求的URI和協(xié)議的版本,格式如下:Method Request-URI HTTP-Version CRLF 其中 Method表示請求方法;Request-URI是
47、一個統(tǒng)一資源標識符;HTTP-Version表示請求的HTTP協(xié)議版本;CRLF表示回車和換行(除了作為結(jié)尾的CRLF外,不允許出現(xiàn)單獨的CR或LF字符)。請求方法(所有方法全為大寫)有多種,各個方法的解釋如下表3.5.1:</p><p><b> 表3.5.1</b></p><p> 關(guān)于一些方法的就用舉例:GET方法:在瀏覽器的地址欄中輸入網(wǎng)址的方式訪問網(wǎng)
48、頁時,瀏覽器采用GET方法向服務器獲取資源,eg:GET /form.html HTTP/1.1 (CRLF)。POST方法要求被請求服務器接受附在請求后面的數(shù)據(jù),常用于提交表單。eg:POST /reg.jsp HTTP/ (CRLF)Accept:image/gif,image/x-xbit,... (CRLF)...HOST:www.guet.edu.cn (CRLF)Content-Length:22 (CRLF)Co
49、nnection:Keep-Alive (CRLF)Cache-Control:no-cache (CRLF)(CRLF) //CRLF表示消息報頭已經(jīng)結(jié)束,在此之前為消息報頭user=jeffrey&pwd=1234 //此行以下為提交的數(shù)據(jù)</p><p> HEAD方法與GET方法幾乎
50、是一樣的,對于HEAD請求的回應部分來說,它的HTTP頭部中包含的信息與通過GET請求所得到的信息是相同的。用這個方法,不必傳輸整個資源內(nèi)容,就可以得到Request-URI所標識的資源的信息。這種方法常用于測試超鏈接的有效性,是否可以訪問,以及最近是否更新。</p><p> 響應報文的結(jié)構(gòu)特點 在接收和解釋請求消息后,服務器返回一個HTTP響應消息。一個響應由四個部分組成;狀態(tài)行、響應頭標、空行、響應數(shù)據(jù)
51、。</p><p> ?。?)、狀態(tài)行:狀態(tài)行由三個標記組成:HTTP版本、狀態(tài)碼和解釋狀態(tài)碼的簡單短語。</p><p> HTTP版本:向客戶端指明其可理解的最高版本。</p><p> 狀態(tài)碼:3位的數(shù)字代碼,指出請求的成功或失敗,如果失敗則指出原因。</p><p> 解釋狀態(tài)碼的簡單短語:為狀態(tài)碼的可讀性解釋。</p&g
52、t;<p> 例如:HTTP/1.1 200 OK</p><p> HTTP狀態(tài)碼:1xx:表示通知信息的,如請求收到了或必須采取進一步的行動。</p><p> 2xx:成功,行為被成功地接受、理解和采納</p><p> 3xx:重定向,為了完成請求,必須進一步執(zhí)行的動作4xx:客戶端錯誤,如請求中有錯誤的語法或不
53、能完成</p><p> 5xx:表示服務器的差錯,如請求中有錯誤的語法或不能完成。</p><p> 常見狀態(tài)代碼、狀態(tài)描述、舉例:</p><p> 200 OK //客戶端請求成功</p><p> 400 Bad Request //客戶端請求有語法錯誤,
54、不能被服務器所理解</p><p> 401 Unauthorized //請求未經(jīng)授權(quán),這個狀態(tài)代碼必須和WWW-Authenticate報頭域一起使用 </p><p> 403 Forbidden //服務器收到請求,但是拒絕提供服務</p><p> 404 Not Found //請求資源不存在,eg:輸入了錯誤的U
55、RL</p><p> 500 Internal Server Error //服務器發(fā)生不可預期的錯誤</p><p> 503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間后可能恢復正常</p><p> ?。?)、響應頭標:像請求頭標一樣,它們指出服務器的功能,標識出響應數(shù)據(jù)的細節(jié)。</p>
56、<p> (3)、空行:最后一個響應頭標之后是一個空行,發(fā)送回車符和退行,表明服務器以下不再有頭標。</p><p> ?。?)、響應數(shù)據(jù):HTML文檔和圖像等,也就是HTML本身。</p><p> 2.3 HTTP協(xié)議的運作方式</p><p> HTTP協(xié)議的運作方式是一個客戶機與服務器建立連接后,客戶機發(fā)送一個請求給服務器。其請求方式的格式為
57、,統(tǒng)一資源標識符、協(xié)議版本號,后邊是MIME信息包括請求修飾符、客戶機信息和可能的內(nèi)容。服務器在接到請求后,給予相應的響應信息,其格式為一個狀態(tài)行包括信息的協(xié)議版本號、一個成功或錯誤的代碼,后邊是MIME信息包括服務器信息、實體信息和可能的內(nèi)容。</p><p> HTTP通訊是由一個用戶代理初始化的并且包括一個申請在源服務器上資源的請求。最簡單的情況可能是在用戶代理和源服務器之間通過一個單獨的連接來完成。其工
58、作原理如下圖2-6-1所示。</p><p><b> 圖2-6-1</b></p><p> 如果當一個或多個中介出現(xiàn)在請求/響應鏈中的時候,情況就會變得復雜一點。中介分為三種:代理(Proxy)、網(wǎng)關(guān)(Gateway)和通道(Tunnel)。一個代理根據(jù)URI的絕對格式來接受請求,重寫全部或部分消息,通過URI的標識把已格式化過的請求發(fā)送到服務器上。網(wǎng)關(guān)是一個
59、接收代理,作為一些其它服務器的上層,可以把請求翻譯給下層的服務器協(xié)議。一個通道作為不改變消息的兩個連接之間的中繼點。當通訊需要通過一個中介(如:防火墻)或者是中介不能識別消息的內(nèi)容時,通道經(jīng)常被使用。其工作原理如下圖2-6-2所示。</p><p><b> 圖2-6-2</b></p><p> 表明了在用戶代理和源服務器之間有三個中介。一個通過整個鏈的請求或響
60、應消息必須經(jīng)過四個連接段。因為一些HTTP通訊選擇可能應用于最近的連接、沒有通道的鄰居,應用于鏈的終點或應用于沿鏈的所有連接。</p><p> 在Internet上,HTTP通訊通常發(fā)生在TCP/IP連接之上。缺省端口是TCP80,但其它的端口也是可用的。但這并不預示著HTTP協(xié)議在Internet或其它網(wǎng)絡的其它協(xié)議之上才能完成。HTTP只預示著一個可靠的傳輸。上面只是介紹了HTTP協(xié)議的宏觀運作方式,下面
61、介紹一下HTTP協(xié)議的內(nèi)部操作過程。</p><p> 基于HTTP協(xié)議的客戶/服務器模式的信息交換過程,如圖2-6-3所示,它分四個過程,建立連接、發(fā)送請求信息、發(fā)送響應信息、關(guān)閉連接。在WWW中,“客戶”與“服務器”是一個相對的概念,只存在于一個特定的連接期間,即在某個連接中的客戶在另一個連接中可能作為服務器。WWW服務器運行時,一直在TCP80端口(WWW的缺省端口)監(jiān)聽,等待連接的出現(xiàn)。</p&g
62、t;<p><b> 圖2-6-3</b></p><p> 3. 開發(fā)工具與環(huán)境介紹</p><p> 3.1 Java語言介紹</p><p> 3.1.1 Java語言簡介</p><p> Java是一種可以撰寫跨平臺應用軟件的面向?qū)ο蟮某绦蛟O計語言,是由Sun Microsystems公
63、司于1995年5月推出的Java程序設計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用于個人PC、數(shù)據(jù)中心、游戲控制臺、科學超級計算機、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。</p><p> Java是定位于網(wǎng)絡計算的計算機語
64、言,它幾乎所有的特點也是圍繞著這一中心展開的并為之服務的,這些特點使得Java語言特別適合于用來開發(fā)網(wǎng)絡上的應用程序;另外,作為一種面世較晚的語言,Java也集中體現(xiàn)和充分利用了若干當代軟件技術(shù)新成果,如面向?qū)ο?、多線程等,這些也都在它的特點中有所反映。</p><p> 3.1.2 Java語言的特點</p><p> Java編程語言的風格十分接近C、C++語言。Java是一個純粹
65、的面向?qū)ο蟮某绦蛟O計語言,它繼承了 C++語言面向?qū)ο蠹夹g(shù)的核心。Java舍棄了C語言中容易引起錯誤的指針(以引用取代)、運算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔憂。在 Java 1.5 版本中,Java 又引入了泛型編程(Generic Programming)、類型安全的枚舉、不定長參數(shù)和自動裝/
66、拆箱等語言特性。</p><p> Java不同于一般的編譯執(zhí)行計算機語言和解釋執(zhí)行計算機語言。它首先將源代碼編譯成二進制字節(jié)碼(bytecode),然后依賴各種不同平臺上的虛擬機來解釋執(zhí)行字節(jié)碼。從而實現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺特性。不過,每次的執(zhí)行編譯后的字節(jié)碼需要消耗一定的時間,這同時也在一定程度上降低了 Java 程序的運行效率。</p><p> Java語言的特點與
67、其歷史發(fā)展是相關(guān)的。它之所以能夠受到如此眾多的好評以及擁有如此迅猛的發(fā)展與其語言本身的特點是分不開的。其主要特點如下所述:</p><p> ?。?)、簡單性:從Java語言的發(fā)展史可以了解到Java語言是在C和C++計算機語言的基礎(chǔ)上進行簡化和改進的一種新型計算機語言,它去掉了C和C++中最難正確應用的指針的最難理解的多重繼承技術(shù)等內(nèi)容,通過垃圾自動回收機制簡化了程序內(nèi)存管理,統(tǒng)一了各種數(shù)據(jù)類型在不同操作系統(tǒng)平
68、臺上所占用的內(nèi)存大小。Java程序的簡單性是其得以迅速普及的最重要的原因之一。</p><p> ?。?)、網(wǎng)絡特性:Java語言正是因為其對互聯(lián)網(wǎng)的良好支持而受到推崇并得以迅速推廣的。Java語言是目前對網(wǎng)絡支持最全面,與網(wǎng)絡關(guān)系最密切的計算機語言之一。</p><p> (3)、面向?qū)ο螅河捎贘ava語言是一種新型計算機語言,沒有兼容過程式計算機語言的負擔,所以Java語言在面向?qū)ο?/p>
69、的特性比C++語言更為徹底。面向?qū)ο竽P褪且环N模擬人類社會和人解決實際問題的模型,因此更為符合人們的思維習慣,而且容易擴充的維護。它的缺點是程序在開發(fā)的過程中常常變得越來越龐大。</p><p> ?。?)、平臺無關(guān)性/可移植性:Java語言的設計目標是讓其程序不用修改就可以在任何一種計算機平臺上運行。解決異構(gòu)操作系統(tǒng)兼容性問題是一個很艱巨的任務。Sun公司提供的Java語言也沒有完全做到這一點。在Java語言的
70、說明書中,Sun公司用權(quán)重(weight)的輕重為表示其提供的類或成員方法與計算機平臺的相關(guān)性大小。不過總的來說,Java語言在這一方面是做的最好的計算機語言。</p><p> (5)、健壯性:健壯性指的程序執(zhí)行的穩(wěn)定性。Java語言設計者在設計Java語言的過程中一直考慮如何減少編寫程序的過程中可能產(chǎn)生的錯誤。Java在編譯和執(zhí)行的過程中都會進行比較嚴格的檢查,以減少錯誤的發(fā)生。Java語言的垃圾自動回收機
71、制和異常處理機制在很大程度上提高了程序的健壯性。另外,Java語言的簡單性同時也在一定的程序上保證程序的健壯性。</p><p> ?。?)、安全性:在網(wǎng)絡上運行的Java程序是符合網(wǎng)絡安全協(xié)議的。在執(zhí)行Java程序的過程中,Java虛擬機對程序的安全性進行檢測。一般來說,Java程序是安全的,它不會訪問不允許問的內(nèi)在或文件。</p><p> ?。?)、多線程性:這主要用來處理復雜或需要
72、并行的事務。組成Java虛擬機的各個程序本身一般也采用多線程機制。采用多線程是提高程序運行效率的一種方法;不過,增加了程序的設計難度。</p><p> ?。?)、解釋性:Java語言是一種解釋執(zhí)行的語言。這是Java語言的一個缺點,因為解釋執(zhí)行的語言相比編譯執(zhí)行的語言需要額外的語句解釋步驟及其運行時間。</p><p> 總之,Java語言是一種易學好用,健壯性好,但采用解釋執(zhí)行的計算
73、機語言。用Java語言編寫程序一般會比用其它計算機語言編寫程序花費更少的時間,而且調(diào)試所需的時間一般也比較短。</p><p><b> 3.2 JDK概述</b></p><p> JDK(Java Development Kit)是Sun Microsystems針對Java開發(fā)員的產(chǎn)品。自從Java推出以來,JDK已經(jīng)成為使用最廣泛的Java SDK。JDK
74、 是整個Java的核心,包括了Java運行環(huán)境、Java工具和Java基礎(chǔ)類庫。JDK是學好Java的第一步。而專門運行在x86平臺的Jrocket在服務端運行效率也要比Sun JDK好很多。從SUN的JDK5.0開始,提供了泛型等非常實用的功能,其版本也不斷更新,運行效率得到了非常大的提高。</p><p> JDK包含的基本組件包括:javac:編譯器,將源程序轉(zhuǎn)成字節(jié)碼。jar – 打包工具,將相關(guān)的類文
75、件打包成一個文件。Javadoc: 文檔生成器,從源碼注釋中提取文檔。jdb debugger,查錯工具。java運行編譯后的java程序(.class后綴的)。appletviewer:小程序瀏覽器,一種執(zhí)行HTML文件上的Java小程序的Java瀏覽器。Javah:產(chǎn)生可以調(diào)用Java過程的C過程,或建立能被Java程序調(diào)用的C過程的頭文件。Javap:Java反匯編器,顯示編譯類文件中的可訪問功能和數(shù)據(jù),同時顯示字節(jié)代碼含義。J
76、console: Java進行系統(tǒng)調(diào)試和監(jiān)控的工具。</p><p> 3.4 JDK安裝與配置</p><p> 1.下載jdk 1.6或更高版本 (http://java.sun .com,同時還要下載其Java Documentation,這是Java幫助文檔)。</p><p> 2.運行剛剛下載的安裝程序進行正式安裝(以下假設安裝于c:\jdk1.6
77、.0_21\,建議安裝路徑不要有空格,不宜安裝在\Program Files目錄下!)。</p><p> 3.設置運行環(huán)境參數(shù):</p><p> 在Windows2000、XP或Win7系統(tǒng),使用鼠標右擊“我的電腦”->屬性->高級->環(huán)境變量</p><p> 系統(tǒng)變量->新建->變量名:JAVA_HOME 變量值:C:\j
78、dk1.6</p><p> 系統(tǒng)變量->新建->變量名:CLASSPATH 變量值:C;\jdk1.6\jre\lib\rt.jar;.;</p><p> 系統(tǒng)變量->編輯->變量名:Path 在變量值的最前面加上:C:\jkd1.6\bin</p><p> (CLASSPATH中有一英文句號“.”后跟一個分號,表示當前路徑的意思
79、)。</p><p> 3.5 MyEclipse相關(guān)介紹</p><p> MyEclipse企業(yè)級工作平臺(MyEclipse Enterprise Workbench ,簡稱MyEclipse)是對EclipseIDE的擴展,利用它我們可以在數(shù)據(jù)庫和JavaEE的開發(fā)、發(fā)布以及應用程序服務器的整合方面極大的提高工作效率。它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)
80、試、測試和發(fā)布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。</p><p> MyEclipse 是一個十分優(yōu)秀的用于開發(fā)Java, J2EE的 Eclipse 插件集合,MyEclipse的功能非常強大,支持也十分廣泛,尤其是對各種開源產(chǎn)品的支持十分不錯。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF,
81、 Struts,Spring, Hibernate,EJB3,JDBC數(shù)據(jù)庫鏈接工具等多項功能??梢哉fMyEclipse幾乎囊括了目前所有主流開源產(chǎn)品的專屬eclipse開發(fā)工具。MyEclipse6.0以前版本需先安裝Eclipse。MyEclipse6.0以后版本安裝時不需安裝Eclipse。</p><p> 4. 網(wǎng)絡協(xié)議分析系統(tǒng)的設計</p><p> 4.1 WinPcap
82、的相關(guān)介紹</p><p> WinPcap(windows packet capture)是windows平臺下一個免費,公共的網(wǎng)絡訪問系統(tǒng)。開發(fā)WinPcap這個項目的目的在于為win32應用程序提供訪問網(wǎng)絡底層的能力。 </p><p> WinPcap是用于網(wǎng)絡封包抓取的一套工具,可適用于32位的操作平臺上解析網(wǎng)絡封包,包含了核心的封包過濾,一個底層動態(tài)鏈接庫,和一個高層系統(tǒng)函
83、數(shù)庫,及可用來直接存取封包的應用程序界面。</p><p> WinPcap是一個免費公開的軟件系統(tǒng)。它用于windows系統(tǒng)下的直接的網(wǎng)絡編程。</p><p> 大多數(shù)網(wǎng)絡應用程序訪問網(wǎng)絡是通過廣泛使用的套接字。這種方法很容易實現(xiàn)網(wǎng)絡數(shù)據(jù)傳輸,因為操作系統(tǒng)負責底層的細節(jié)(比如協(xié)議棧,數(shù)據(jù)流組裝等)以及提供了類似于文件讀寫的函數(shù)接口。</p><p> 但是
84、有時,簡單的方法是不夠的。因為一些應用程序需要一個底層環(huán)境去直接操縱網(wǎng)絡通信。因此需要一個不需要協(xié)議棧支持的原始的訪問網(wǎng)絡的方法。開發(fā)WinPcap這個項目的目的在于為win32應用程序提供訪問網(wǎng)絡底層的能力。它提供了以下的各項功能:</p><p> (1)、捕獲原始數(shù)據(jù)報,包括在共享網(wǎng)絡上各主機發(fā)送/接收的以及相互之間交換的數(shù)據(jù)報;</p><p> (2)、在數(shù)據(jù)報發(fā)往應用程序之
85、前,按照自定義的規(guī)則將某些特殊的數(shù)據(jù)報過濾掉;</p><p> ?。?)、在網(wǎng)絡上發(fā)送原始的數(shù)據(jù)報;</p><p> ?。?)、收集網(wǎng)絡通信過程中的統(tǒng)計信息。</p><p> WinPcap的主要功能在于獨立于主機協(xié)議(如TCP-IP)而發(fā)送和接收原始數(shù)據(jù)報。也就是說,WinPcap不能阻塞,過濾或控制其他應用程序數(shù)據(jù)報的發(fā)收,它僅僅只是監(jiān)聽共享網(wǎng)絡上傳送的
86、數(shù)據(jù)報。因此,它不能用于QoS調(diào)度程序或者</p><p><b> 是個人防火墻。</b></p><p> 4.2 體系結(jié)構(gòu)設計</p><p> 本方案采用的是利用Jpcap.dll在數(shù)據(jù)鏈路層下進行數(shù)據(jù)包的捕獲。Jpcap提供了在Windows系統(tǒng)上進行這種訪問的Java API,它可以訪問底層的網(wǎng)絡數(shù)據(jù)。但Jpcap不是一種純粹
87、的Java解決方案;它需要依賴本地庫的使用。因此,在Windows 平臺上要使用必要的第三方庫,分別是WinPcap或libpcap。</p><p> 利用專門用于網(wǎng)絡監(jiān)聽的一個函數(shù)庫Jpcap.lib提供的函數(shù)完成抓包工作,由于該庫提供的函數(shù)抓到的包是數(shù)據(jù)鏈路層下的幀,因此,它可以被用來基于數(shù)據(jù)鏈路層下的流量捕獲。其體系結(jié)構(gòu)如下圖4-2所示。</p><p><b> 圖
88、4-2</b></p><p> 底層的網(wǎng)絡接口卡(網(wǎng)卡),為了監(jiān)聽所有的包,它被設置為混雜模式(promiscuous mode)工作。這可調(diào)用庫函數(shù)實現(xiàn)。</p><p> Packet Capture driver是較低層的捕獲堆棧的軟件模塊。它和網(wǎng)絡接口卡相互作用抓包,它提供了應用程序一系列函數(shù)可以讀寫數(shù)據(jù)鏈路層上的數(shù)據(jù)。</p><p>
89、 Packet.dll從捕獲程序里分離出來,工作在用戶層,它是一個動態(tài)鏈路庫,使捕獲程序從提供系統(tǒng)獨立的捕獲界面的驅(qū)動程序中獨立出來,它提供了一系列具有捕獲能力的函數(shù)供上層調(diào)用,從而避免了對驅(qū)動器的直接操作,并允許應用程序可以不經(jīng)過重新編譯就可以執(zhí)行在不同操作系統(tǒng)的環(huán)境中。</p><p> WinPcap 是一個第三方類庫,為Jpcap提供基礎(chǔ)類。</p><p> Jpcap是一個
90、靜態(tài)庫,可以被包捕獲程序直接調(diào)用,它應用Packet.dll導出的服務向上層應用程序提供強有力的捕獲界面。它是應用程序的一部分。</p><p> 4.3 數(shù)據(jù)包的存儲</p><p> 對于一個網(wǎng)絡數(shù)據(jù)包的存儲,主要包括TCP包頭信息和TCP包的數(shù)據(jù)信息。TCP包頭信息含有很多相關(guān)的控制信息,如源端口、目的端口、順序號、確認號、校驗和、窗口大小等。這些信息都能夠體現(xiàn)數(shù)據(jù)包所含的內(nèi)容。
91、</p><p> TCP包的頭部格式如下圖4-3所示: </p><p><b> 圖4-3</b></p><p> 其首部的前20B是固定的。TCP報文段的首部最短為20B,后面有4N字節(jié)是根據(jù)需要而增加的選項。通常長度是4的整數(shù)倍字節(jié)。報文段即可以來運載數(shù)據(jù),也可以用來建立連接、釋放連接和應答。</p><p&
92、gt; 就上面的數(shù)據(jù)包格式,各字段的意義如下:</p><p> ?。?)、源端口和目的端口字段:各占2B。端口是運輸層與應用層的服務接口。運輸層的復用和分用要通過端口才能實現(xiàn)。</p><p> ?。?)、序號字段:占4B。TCP連接中傳送的數(shù)據(jù)流中的每一個字節(jié)都編上一個序號。序號字段的值則指的是報文字段所發(fā)送的數(shù)據(jù)的第一個字節(jié)的序號。</p><p> ?。?
93、)、確認號字段:占4B,是期望收到對方的下一個報文段的數(shù)據(jù)的第一個字節(jié)的序號。若確認號=N,則表明到序號N-1為止的所有數(shù)據(jù)都已正確收到。</p><p> (4)、數(shù)據(jù)偏移(首部長度):占4位,它指出TCP報文段的數(shù)據(jù)起始距離TCP報文段的起始位置有多遠。</p><p> (5)、保留字段:占6位,保留為今后使用,但目前應置為0。</p><p> (6)
94、、緊急位URG:當URG=1時,表明緊急指針字段有效。它告訴系統(tǒng)此報文段中有緊急數(shù)據(jù),應盡快傳送。</p><p> (7)、確認位ACK:只有當ACK=1時確認號字段才有效,當ACK=0時,確認號無效。</p><p> ?。?)、推送位PSH:接收TCP收到PSH=1的的報文段,就盡快地音樂會接收應用進程,而不再等到整個緩存都填滿了后再向上交付。</p><p&g
95、t; ?。?)、復位位RST:當RST=1時,表明TCP連接中出現(xiàn)了嚴重的差錯,必須釋放連接,然后再重新建立運輸連接。</p><p> ?。?0)、同步位SYN:同步SYN=1表示這是一個連接請求或連接接收報文。</p><p> ?。?1)、終止位FIN:用來釋放一個連接。FIN=1表示此報文的發(fā)送方的數(shù)據(jù)已發(fā)送完畢,并要求釋放傳輸連接。</p><p> ?。?/p>
96、12)、窗口字段:占2B。接收方的數(shù)據(jù)緩存空間是有限的,故用窗口值作為接收方讓發(fā)送方設置其發(fā)送窗口的依據(jù),單位為字節(jié)。</p><p> (13)、檢驗和:占2B。檢驗和字段檢驗的范圍包括首部和數(shù)據(jù)這兩個部分,在計算檢驗和時,要在TCP字段的前面加強上12B的偽首部。</p><p> (14)、緊急指針安段:占16位,指出在本報文段中緊急數(shù)共有多少個字節(jié)。</p>&l
97、t;p> ?。?5)、選項字段:長度可變。TCP最初只規(guī)定了一種選項,即最大報文段長度(MSS),MSS是TCP報文段中的數(shù)據(jù)字段的最大長度。</p><p> ?。?6)、填充字段:這是為了使整個首部長度是4B的整數(shù)倍。</p><p> 4.4 網(wǎng)絡數(shù)據(jù)包的捕獲和存儲流程圖 </p><p> 在以太網(wǎng)上通訊的每張網(wǎng)卡上都擁有一個全球唯一的物理地址即M
98、AC地址。該地址是一個48比特的二進制數(shù)。在以太網(wǎng)卡中內(nèi)建有一個數(shù)據(jù)包過濾器。該數(shù)據(jù)包過濾器的作用是保留以太網(wǎng)本身網(wǎng)卡的MAC地址為通訊目的的數(shù)據(jù)包和廣播數(shù)據(jù)包,丟棄所有其它無關(guān)的數(shù)據(jù)包,以免CPU對無關(guān)的數(shù)據(jù)報作無謂的處理。這是以太網(wǎng)卡在一般情況下的工作方式。因此在正常情況下,一個合法的網(wǎng)絡接口應該只響應這樣的兩種數(shù)據(jù)包(幀): </p><p> (1)幀的目標地址具有和本地網(wǎng)絡接口相匹配的硬件地址。 &l
99、t;/p><p> (2)幀的目標地址是“廣播地址”。</p><p> 在接收到上面兩種情況的數(shù)據(jù)幀時,網(wǎng)卡通過CPU產(chǎn)生中斷,操作系統(tǒng)進行中斷處理后將幀中包含的數(shù)據(jù)傳送給上層系統(tǒng)進行進一步處理。在其他情況下數(shù)據(jù)幀將被丟棄而不作處理。 </p><p> 要想捕獲到流經(jīng)網(wǎng)卡的不屬于本主機的數(shù)據(jù),必須繞過系統(tǒng)正常工作的處理機制,直接訪問網(wǎng)絡底層。我們可以把網(wǎng)卡的狀
100、態(tài)設為“混雜”模式,當網(wǎng)卡工作在這種“混雜”模式時,該網(wǎng)卡就具備了“廣播地址”,它對所接收到的每一個幀都產(chǎn)生一個硬件中斷以提醒操作系統(tǒng)處理流經(jīng)該網(wǎng)卡上的每一個報文包。操作系統(tǒng)通過直接訪問鏈路層,截獲相關(guān)數(shù)據(jù),由應用程序而非上層協(xié)議(如IP層、TCP層)對數(shù)據(jù)過濾處理,這樣就可以捕獲到流經(jīng)網(wǎng)卡的所有數(shù)據(jù)。</p><p> 不同的操作系統(tǒng)實現(xiàn)的底層包捕獲機制可能是不一樣的,但從形式上看大同小異。數(shù)據(jù)包常規(guī)的傳輸路
101、徑依次為網(wǎng)卡、設備驅(qū)動層、數(shù)據(jù)鏈路層、網(wǎng)絡層、傳輸層、最后到達應用程序。而包捕獲機制是在數(shù)據(jù)鏈路層增加一個旁路處理,對發(fā)送和接收到的數(shù)據(jù)包做過濾、緩沖等相關(guān)處理,最后直接傳遞到應用程序。對用戶程序而言,包捕獲機制提供了一個統(tǒng)一的接口,使用戶程序只需要簡單的調(diào)用若干函數(shù)就能獲得所期望的數(shù)據(jù)包。這樣一來,針對特定操作系統(tǒng)的捕獲機制對用戶透明,使用戶程序有比較好的可移植性。</p><p> 數(shù)據(jù)包的捕獲是通過Jpc
102、ap對網(wǎng)卡的監(jiān)聽實現(xiàn)的,這需要用到WinPcap第三方庫,Jpcap所使用的是一個事件模型來處理包的。Jpcap.dll在數(shù)據(jù)鏈路層進行數(shù)據(jù)包的捕獲,Jpcap提供了能夠在Windows系統(tǒng)上數(shù)據(jù)鏈路層下進行數(shù)據(jù)包捕獲的Java API,其流程圖如下圖4-4:</p><p><b> 圖4-4</b></p><p> 4.5 網(wǎng)絡數(shù)據(jù)包的還原原理</p&
103、gt;<p> 對所捕獲到的數(shù)據(jù)包進行還原,其主要原理是,首長要把捕獲到的數(shù)據(jù)包進行初始化,通過采用ASCALL判碼方式對十六進制數(shù)據(jù)信息進行還原,通過觀察“Content-Type”,“charset”等特殊字符,可以判斷該數(shù)據(jù)包是否傳送的是文本信息,采用的是什么編碼方式。如:“Content-Type:text/html; charset=gb2312”,這樣可以確認為文本信息,采用的是gb2312編碼方式,然后,就
104、可以采用gb2312編碼的解碼方式進行信息的還原。但是,如果是其它信息的編碼,則采用其它編碼方式進行解碼還原。還原的流程圖如下圖4-5所示:</p><p><b> 圖4-5</b></p><p> 5.網(wǎng)絡數(shù)據(jù)捕獲與還原系統(tǒng)的實現(xiàn)</p><p> 5.1 字符編碼介紹</p><p> 5.1.1 ASC
105、ALL字符編碼</p><p> ASCALL碼是美國信息交換標準碼,一種使用7個或8個二進制位進行編碼的方案,最多可以給256個字符,ASCALL碼包括字母、數(shù)字、標點符號、控制字符及其他符號。ASCALL碼于1968年提出,用于在不同計算機硬件和軟件系統(tǒng)中實現(xiàn)數(shù)據(jù)傳輸標準化,在大多數(shù)的小型機和全部的個人計算機都使用此碼。ASCALL碼劃分為兩個集合:128個字符的標準ASCII碼和附加的128個字符的擴充和
106、ASCALL碼。比較EBCDIC。其中95個字符可以顯示。另外33個不可以顯示。 標準ASCII碼為7位,擴充為8位。</p><p> 5.1.2 GBK字符編碼</p><p> GBK即漢字內(nèi)碼擴展規(guī)范,K為擴展的漢語拼音中“擴”字的聲母。英文全稱Chinese Internal Code Specification。GBK編碼標準兼容GB2312,共收錄漢字21003個、符號8
107、83個,并提供1894個造字碼位,簡、繁體字融于一體。</p><p> GB 2312的出現(xiàn),基本滿足了漢字的計算機處理需要,但對于人名、古漢語等方面出現(xiàn)的罕用字,GB 2312不能處理,這導致了后來GBK及GB 18030漢字字符集的出現(xiàn)。</p><p> 5.1.3 GB2312字符編碼</p><p> GB2312是ANSI編碼里的一種,對ANSI
108、編碼最初始的ASCII編碼進行擴充,為了滿足國內(nèi)在計算機中使用漢字的需要,中國國家標準總局發(fā)布了一系列的漢字字符集國家標準編碼,統(tǒng)稱為GB碼,或國標碼。</p><p> GB2312是一個簡體中文字符集,由6763個常用漢字和682個全角的非漢字字符組成。其中漢字根據(jù)使用的頻率分為兩級。一級漢字3755個,二級漢字3008個。由于字符數(shù)量比較大,GB2312采用了二維矩陣編碼法對所有字符進行編碼。首先構(gòu)造一個
109、94行94列的方陣,對每一行稱為一個“區(qū)”,每一列稱為一個“位”,然后將所有字符依照下表的規(guī)律填寫到方陣中。這樣所有的字符在方陣中都有一個唯一的位置,這個位置可以用區(qū)號、位號合成表示,稱為字符的區(qū)位碼。如第一個漢字“啊”出現(xiàn)在第16區(qū)的第1位上,其區(qū)位碼為1601。因為區(qū)位碼同字符的位置是完全對應的,因此區(qū)位碼同字符之間也是一一對應的。這樣所有的字符都可通過其區(qū)位碼轉(zhuǎn)換為數(shù)字編碼信息。</p><p> 5.1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健身俱樂部管理系統(tǒng)的設計與實現(xiàn)學士學位畢業(yè)設計論文
- 健身俱樂部管理系統(tǒng)的設計與實現(xiàn)學士學位畢業(yè)設計論文
- 基于SMTP協(xié)議的數(shù)據(jù)包分析與還原.pdf
- HTTP協(xié)議還原系統(tǒng)的設計與實現(xiàn).pdf
- ofdm信號的matlab仿真及dsp實現(xiàn)學士學位論文
- 基于HTTP協(xié)議還原內(nèi)容的審計系統(tǒng)的設計與實現(xiàn).pdf
- 基于ttl門電路擴頻碼發(fā)生器仿真設計與電路實現(xiàn)學士學位論文
- 直流電機pwm調(diào)速系統(tǒng)的dsp實現(xiàn)學士學位論文
- 基于CM平臺的網(wǎng)絡數(shù)據(jù)包捕獲和解析系統(tǒng)的設計與實現(xiàn).pdf
- 基于web的資料共享系統(tǒng)的設計與實現(xiàn)學位論文
- 基于WinPcap的數(shù)據(jù)包捕獲系統(tǒng)的設計與實現(xiàn).pdf
- 學士學位論文基于工作流的協(xié)同辦公系統(tǒng)的研究與實現(xiàn)
- 高速網(wǎng)絡數(shù)據(jù)包協(xié)議分析系統(tǒng)的研究與實現(xiàn).pdf
- 基于主機的入侵數(shù)據(jù)包檢測系統(tǒng)設計與實現(xiàn).pdf
- 基于j2ee技術(shù)的在線考試系統(tǒng)的設計與實現(xiàn)-學士學位論文
- 基于j2ee技術(shù)的在線考試系統(tǒng)的設計與實現(xiàn)-學士學位論文
- 基于HTTP協(xié)議的網(wǎng)絡數(shù)據(jù)分析系統(tǒng)的設計與實現(xiàn).pdf
- 基于HTTP協(xié)議的PACS系統(tǒng)設計與實現(xiàn).pdf
- 學士學位論文基于鎖相環(huán)的fsk數(shù)據(jù)收發(fā)傳輸系統(tǒng)實現(xiàn)研究
- 基于零拷貝的數(shù)據(jù)包捕獲與過濾系統(tǒng)的設計與實現(xiàn).pdf
評論
0/150
提交評論