基于http協(xié)議數(shù)據(jù)包的解析與還原系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué)士學(xué)位論文_第1頁(yè)
已閱讀1頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  北方民族大學(xué)</b></p><p><b>  學(xué)士學(xué)位論文</b></p><p>  論文題目 基于HTTP協(xié)議數(shù)據(jù)包解析與還原系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  系(部)名 稱: 計(jì)算機(jī)科學(xué)與工程學(xué)院 </p><p>  學(xué) 生 姓

2、名: 卞春林 </p><p>  專 業(yè): 網(wǎng)絡(luò)工程 學(xué) 號(hào): 20091613 </p><p>  指導(dǎo)教師姓名: 楊鵬 </p><p>  論文提交時(shí)間: 2013-4-23 &l

3、t;/p><p>  論文答辯時(shí)間: 2013-4-28 </p><p>  學(xué)位授予時(shí)間: </p><p><b>  北方民族大學(xué)教務(wù)</b></p><p>  基于HTTP協(xié)議的數(shù)據(jù)解析與還原系統(tǒng)的設(shè)計(jì)與實(shí)

4、現(xiàn)</p><p><b>  摘 要</b></p><p>  隨著世界信息發(fā)展的速度越來(lái)越快,Internet網(wǎng)的快速發(fā)展,信息技術(shù)的應(yīng)用越來(lái)越廣泛,從傳統(tǒng)的小型應(yīng)用到現(xiàn)在的大型商務(wù)應(yīng)用以及企業(yè)應(yīng)用等都涉及到信息技術(shù)。網(wǎng)絡(luò)技術(shù)的應(yīng)用已經(jīng)成為當(dāng)今人們生活中不可缺少的一部分了。加強(qiáng)探索網(wǎng)絡(luò)信息監(jiān)聽(tīng)與還原技術(shù)有助于建立可靠、高效的信息安全保障體系,對(duì)社會(huì)政治穩(wěn)定

5、和國(guó)家信息安全具有重要的現(xiàn)實(shí)意義。 </p><p>  針對(duì)網(wǎng)絡(luò)傳輸環(huán)境和實(shí)際的需求,基于TCP/IP協(xié)議族。本文主要分析針對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的相關(guān)方面。主要涉及以下幾個(gè)方面的內(nèi)容:JAVA語(yǔ)言的相關(guān)介紹,網(wǎng)絡(luò)數(shù)據(jù)包的捕獲技術(shù),數(shù)據(jù)包的相關(guān)分析技術(shù),HTTP數(shù)據(jù)包的還原重組技術(shù)。對(duì)于數(shù)據(jù)包的捕獲中,對(duì)TCP/IP協(xié)議族的介紹,介紹基本的網(wǎng)絡(luò)協(xié)議原理。對(duì)于數(shù)據(jù)包的重組技術(shù),分析如何將無(wú)序的數(shù)據(jù)片流進(jìn)行有序化。對(duì)于HTT

6、P信息識(shí)別技術(shù)討論超文本傳輸協(xié)議HTTP(HyperText Transfer Protocol),描述協(xié)議相關(guān)的參數(shù),源地址,目標(biāo)地址,協(xié)議的組成等。</p><p>  本設(shè)計(jì)實(shí)現(xiàn)的網(wǎng)頁(yè)信息還原系統(tǒng)立足于高效,準(zhǔn)確,穩(wěn)定。實(shí)現(xiàn)基于HTTP/1.0協(xié)議網(wǎng)絡(luò)信息的解析與還原。</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 研究?jī)?nèi)容和目標(biāo)2</p><p>  2.網(wǎng)絡(luò)協(xié)議基本概念3</p><p>  2.1 網(wǎng)絡(luò)體系結(jié)構(gòu)3</p><p>  2.2 網(wǎng)絡(luò)協(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é)議的特點(diǎn)5</p><p>  2.2.4 HTTP協(xié)議的結(jié)構(gòu)6</p><p>  2.3 HTTP協(xié)議的運(yùn)作方式8</p><p>  3. 開(kāi)發(fā)工具與環(huán)境介紹

17、11</p><p>  3.1 Java語(yǔ)言介紹11</p><p>  3.1.1 Java語(yǔ)言簡(jiǎn)介11</p><p>  3.1.2 Java語(yǔ)言的特點(diǎn)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)絡(luò)協(xié)議分析系統(tǒng)的設(shè)計(jì)14</p><p>  4.1 WinPcap的相關(guān)介紹14</p><p>  4.2 體系結(jié)構(gòu)設(shè)計(jì)15</p><p>  4.3 數(shù)據(jù)包的存儲(chǔ)16</p><p>  4.4 網(wǎng)絡(luò)數(shù)據(jù)包的捕獲和存儲(chǔ)流程圖18<

19、/p><p>  4.5 網(wǎng)絡(luò)數(shù)據(jù)包的還原原理20</p><p>  5.網(wǎng)絡(luò)數(shù)據(jù)捕獲與還原系統(tǒng)的實(shí)現(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)設(shè)計(jì)模塊要求23</p><p>  5.3 網(wǎng)卡設(shè)置模塊24</

21、p><p>  5.3.1 網(wǎng)卡設(shè)置模塊實(shí)現(xiàn)代碼24</p><p>  5.3.2 問(wèn)題總結(jié)25</p><p>  5.4 捕獲數(shù)據(jù)包控制模塊26</p><p>  5.4.1捕獲數(shù)據(jù)包模塊實(shí)現(xiàn)代碼及運(yùn)行結(jié)果26</p><p>  5.4.2 捕獲數(shù)據(jù)包的信息分析28</p><p&g

22、t;  5.4.3 問(wèn)題總結(jié)31</p><p>  5.5 數(shù)據(jù)包重組模塊32</p><p>  5.5.1數(shù)據(jù)包還原算法32</p><p>  5.5.2數(shù)據(jù)包還原模塊實(shí)現(xiàn)代碼及運(yùn)行結(jié)果33</p><p>  5.5.3 問(wèn)題總結(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>  參考文獻(xiàn)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)絡(luò)技術(shù)在日常生活中起到的作用越來(lái)越重要,信息安全問(wèn)題更為重要。網(wǎng)絡(luò)上的信息安全問(wèn)題出現(xiàn)的問(wèn)題越來(lái)越多,同時(shí)也受到越來(lái)越多的人關(guān)注。而作為萬(wàn)維網(wǎng)的網(wǎng)絡(luò)協(xié)議中,作為最高層的應(yīng)用層中的核心協(xié)議http協(xié)議

25、是基礎(chǔ)。當(dāng)網(wǎng)絡(luò)出現(xiàn)故障,異常時(shí),對(duì)網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)進(jìn)行監(jiān)控和分析,是網(wǎng)絡(luò)管理人員對(duì)于網(wǎng)絡(luò)故障解決的一種方法。網(wǎng)絡(luò)信息還原的重要性和緊迫性已經(jīng)刻不容緩。為了維護(hù)我國(guó)的信息安全,遏制不良信息的傳播,必須加大對(duì)網(wǎng)絡(luò)信息監(jiān)控與管理的力度,對(duì)互聯(lián)網(wǎng)上的信息內(nèi)容進(jìn)行自動(dòng)審查、過(guò)濾,防止不良信息的傳播,規(guī)范網(wǎng)絡(luò),推進(jìn)網(wǎng)絡(luò)健康文明發(fā)展。</p><p>  HTTP是一種詳細(xì)規(guī)定了瀏覽器和萬(wàn)維網(wǎng)服務(wù)器之間互相通信的規(guī)則,通過(guò)因特

26、網(wǎng)傳送萬(wàn)維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議。通過(guò)分析其協(xié)議內(nèi)容,更好的方便人們的學(xué)習(xí)與理解,更好的管理網(wǎng)絡(luò)中的數(shù)據(jù)傳輸。通過(guò)解析與還原HTTP數(shù)據(jù)包可以方便的知道網(wǎng)絡(luò)中的數(shù)據(jù)傳輸,對(duì)于網(wǎng)絡(luò)中的不安全或者不良信息及時(shí)的管理,使萬(wàn)維網(wǎng)中的傳輸更加安全,網(wǎng)絡(luò)環(huán)境更加優(yōu)良和安全。對(duì)因特網(wǎng)中一些重要數(shù)據(jù)信息進(jìn)行還原和提取,是保證網(wǎng)絡(luò)應(yīng)用的健康發(fā)展和打擊網(wǎng)絡(luò)犯罪的一個(gè)重要手段。實(shí)時(shí)監(jiān)控所在網(wǎng)絡(luò)的HTTP通訊,當(dāng)網(wǎng)絡(luò)上出現(xiàn)非法內(nèi)容的HTTP通訊時(shí),將捕獲的非法內(nèi)

27、容保存到數(shù)據(jù)庫(kù),向網(wǎng)絡(luò)安全管理部門報(bào)告,以便及時(shí)保護(hù)事業(yè)單位及國(guó)家的利益。</p><p>  1.2 研究方法與環(huán)境配置</p><p>  基于對(duì)TCP/IP協(xié)議的理論分析,了解其網(wǎng)絡(luò)數(shù)據(jù)包的傳輸過(guò)程和原理,進(jìn)而設(shè)計(jì)出相關(guān)的對(duì)于數(shù)據(jù)包的解析和還原軟件。本軟件運(yùn)行的平臺(tái)主要是windows下運(yùn)行,用到Java語(yǔ)言編寫,需要配置jdk,關(guān)于相關(guān)的配置問(wèn)題,在后文中有相關(guān)的介紹。</p

28、><p>  1.3 研究?jī)?nèi)容和目標(biāo)</p><p>  本論文主要是從網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)膮f(xié)議分析入手,介紹相關(guān)的TCP/IP協(xié)議。然后通過(guò)對(duì)于win cap環(huán)境的相關(guān)配置,JAVA開(kāi)發(fā)平臺(tái)的相關(guān)配置,最后設(shè)計(jì)并完成對(duì)于HTTP數(shù)據(jù)包的捕獲解析與還原軟件的設(shè)計(jì)與實(shí)現(xiàn)。</p><p>  本論文的主要研究?jī)?nèi)容主要有幾下幾點(diǎn):</p><p> ?。?

29、),對(duì)網(wǎng)絡(luò)數(shù)據(jù)傳輸協(xié)議做系統(tǒng)的介紹,對(duì)于網(wǎng)絡(luò)數(shù)據(jù)包捕獲技術(shù),win cap開(kāi)發(fā)包,JAVA開(kāi)發(fā)平臺(tái),環(huán)境配置做簡(jiǎn)單的介紹。</p><p>  (2),網(wǎng)絡(luò)協(xié)議原理的簡(jiǎn)單介紹、TCP/IP協(xié)議分層及其協(xié)議分布,網(wǎng)絡(luò)數(shù)據(jù)包解析過(guò)程及各層數(shù)據(jù)包組成部分,數(shù)據(jù)包還原原理。</p><p> ?。?),基于HTTP協(xié)議數(shù)據(jù)包解析與還原軟件的實(shí)現(xiàn)。</p><p>  本文所

30、介紹基于HTTP協(xié)議的解析與還原信息主要是Internet信息,這些信息主要包括圖像,聲音,文本等。最后實(shí)現(xiàn)數(shù)據(jù)包的解析,數(shù)數(shù)據(jù)包的還原。幫助網(wǎng)管人員監(jiān)聽(tīng)感興趣的HTTP數(shù)據(jù)包,分析其遵守的協(xié)議以及其應(yīng)用層數(shù)據(jù),同時(shí)將應(yīng)用層數(shù)據(jù)進(jìn)行重組,恢復(fù)到原始的數(shù)據(jù)格式。</p><p>  2.網(wǎng)絡(luò)協(xié)議基本概念</p><p>  2.1 網(wǎng)絡(luò)體系結(jié)構(gòu)</p><p>  網(wǎng)

31、絡(luò)體系結(jié)構(gòu)是指網(wǎng)絡(luò)通信系統(tǒng)的整體設(shè)計(jì),它為網(wǎng)絡(luò)硬件、軟件、協(xié)議、存取控制和拓?fù)涮峁?biāo)準(zhǔn)。它廣泛采用的是國(guó)際標(biāo)準(zhǔn)化組織(ISO)在1979年提出的開(kāi)放系統(tǒng)互連(OSI-Open System Interconnection)的參考模型。OSI參考模型主要有七層,分別是:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、運(yùn)輸層、會(huì)話層、表示層和應(yīng)用層。TCP/IP是一個(gè)四層的體系結(jié)構(gòu),它包含應(yīng)用層、傳輸層、網(wǎng)際層、和網(wǎng)絡(luò)接口層。但是,從本質(zhì)上來(lái)說(shuō),TCP/IP只

32、有三層,即應(yīng)用層、運(yùn)輸層和網(wǎng)際層,因?yàn)樽钕旅娴木W(wǎng)絡(luò)接口層實(shí)際上并沒(méi)有什么詳細(xì)的內(nèi)容。</p><p>  下面的圖1-1是兩臺(tái)計(jì)算機(jī)進(jìn)行網(wǎng)絡(luò)通信時(shí)的各層數(shù)據(jù)流結(jié)構(gòu)示意圖。</p><p><b>  圖1-1 </b></p><p>  應(yīng)用層 應(yīng)用層是體系結(jié)構(gòu)中的最高層。應(yīng)用層直接為用戶的應(yīng)用進(jìn)程提供服務(wù)。這是的進(jìn)程是指的下在運(yùn)行的

33、程序。在因特網(wǎng)中應(yīng)用層協(xié)議很多,如支持萬(wàn)維網(wǎng)應(yīng)用的HTTP協(xié)議,支持電子郵件的SMTP協(xié)議,支持文件傳送的FTP協(xié)等等。</p><p>  運(yùn)輸層 運(yùn)輸層的任務(wù)就是負(fù)責(zé)向兩個(gè)主機(jī)中的進(jìn)程之間的通信提供服務(wù)。由于一個(gè)主機(jī)可同時(shí)運(yùn)行多個(gè)吉利,因此運(yùn)輸層有腥用和分用的功能。復(fù)用就是多個(gè)應(yīng)用層進(jìn)程可以使用下面運(yùn)輸層的,分用則是運(yùn)輸層把收的信息分別交付給上面應(yīng)用層中的相應(yīng)的進(jìn)程。運(yùn)輸層主要使用傳輸控制協(xié)議TCP和用戶數(shù)據(jù)

34、協(xié)議UDP。</p><p>  網(wǎng)絡(luò)層 網(wǎng)絡(luò)層負(fù)責(zé)為分組網(wǎng)上的不同的主機(jī)提供通信服務(wù)。在發(fā)送數(shù)據(jù)時(shí),網(wǎng)絡(luò)層把層產(chǎn)生的報(bào)文段或用戶數(shù)據(jù)報(bào)封裝成組或包進(jìn)行傳送。在TCP/IP體系中,由于網(wǎng)絡(luò)層使用IP協(xié)議,因此分組也叫做IP數(shù)據(jù)報(bào),或簡(jiǎn)稱為數(shù)據(jù)報(bào)。</p><p>  數(shù)據(jù)鏈路層 常簡(jiǎn)稱為鏈路層。我們知道,兩個(gè)主機(jī)之間的數(shù)據(jù)的傳輸,總是在一段一段的鏈路上傳送的,也就是說(shuō),在兩個(gè)相鄰點(diǎn)之間(主

35、機(jī)和路由器之間或現(xiàn)個(gè)路由器之間)傳送數(shù)據(jù)是直接傳送的。這時(shí)就需要使用專門的鏈路層的協(xié)議。在兩個(gè)相鄰結(jié)點(diǎn)之間傳送數(shù)據(jù)時(shí),數(shù)據(jù)鏈路層將網(wǎng)絡(luò)層交下來(lái)的IP數(shù)據(jù)報(bào)組裝成幀,在兩個(gè)相鄰結(jié)點(diǎn)間的鏈路上“透明”地傳送幀中的數(shù)據(jù)。每一幀包括數(shù)據(jù)和必要的控制信息(如同步信息、地址信息、差錯(cuò)控制等)。典型的幀長(zhǎng)中有幾百字節(jié)到一千多字節(jié)。</p><p>  物理層 在物理層上所傳數(shù)據(jù)的單位是比特。物理層的任務(wù)就是透明地傳送比特流。也

36、就是說(shuō),發(fā)送方發(fā)送1(或0)時(shí),接收方應(yīng)當(dāng)收到1(或0)而不是0(或1)。因此物理層要考慮用多大的電壓代表“1”或“0”,以及接收方如何識(shí)別出發(fā)送方所發(fā)送的比特。物理層還要確定連接電纜的插頭應(yīng)當(dāng)有多少根引線以及各條應(yīng)如何連接。當(dāng)然,哪幾個(gè)比特代表什么意思 ,則不是物理層所要管的。傳遞信息所利用的一些物理媒體,如雙絞線,同軸電纜,光纜,無(wú)線信道等,并不在物理層協(xié)議之內(nèi),而是在物理協(xié)議的下面。</p><p>  2

37、.2 網(wǎng)絡(luò)協(xié)議分析</p><p>  2.2.1 TCP/IP協(xié)議族</p><p>  TCP/IP協(xié)議族,它的特點(diǎn)是上下兩頭大而中間小:應(yīng)用層和網(wǎng)絡(luò)接口都有多種協(xié)議,而中間的IP層很小,上層的各種協(xié)議都向下匯聚到一個(gè)IP協(xié)議中。這種像沙漏計(jì)時(shí)器形狀的TCP/IP協(xié)議族表明:TCP/IP可以為各式各樣的應(yīng)用提供服務(wù),同時(shí)TCP/IP協(xié)議在各式各樣的網(wǎng)絡(luò)構(gòu)成的互聯(lián)網(wǎng)上運(yùn)行。正因?yàn)槿绱?,?/p>

38、特網(wǎng)才會(huì)發(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)應(yīng)用之間的通信協(xié)議。是萬(wàn)維網(wǎng)(

39、world wide web)交換信息的基礎(chǔ)。HTTP是IETF(Internet Engineering Task Force)制定的國(guó)際化標(biāo)準(zhǔn)。在HTTP標(biāo)準(zhǔn)制定和實(shí)現(xiàn)的過(guò)程中,W3C積極參與了其中的工作,并發(fā)揮了重要作用。 它允許將超文本標(biāo)記語(yǔ)言 (HTML) 文檔從 Web 服務(wù)器傳送到 Web 瀏覽器。HTML 是一種用于創(chuàng)建文檔的標(biāo)記語(yǔ)言,這些文檔包含到相關(guān)信息的鏈接。您可以單擊一個(gè)鏈接來(lái)訪問(wèn)其它文檔、圖像或多媒體對(duì)象,并獲

40、得關(guān)于鏈接項(xiàng)的附加信息。 HTTP工作在TCP/IP協(xié)議體系中的TCP協(xié)議上??蛻魴C(jī)和服務(wù)器必須都支持 HTTP,才能在萬(wàn)維網(wǎng)上發(fā)送和接收 HTML 文檔并進(jìn)行交互。</p><p>  2.2.3 THHP協(xié)議的特點(diǎn)</p><p>  HTTP協(xié)議的主要特點(diǎn)主要有以下幾點(diǎn):</p><p> ?。?)、支持客戶/服務(wù)器模式.http 協(xié)議。</p>

41、<p> ?。?)、 簡(jiǎn)單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。請(qǐng)求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于HTTP協(xié)議簡(jiǎn)單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。 </p><p> ?。?)、靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。 </p><p>

42、;  (4)、無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,即斷開(kāi)連接。采用這種方式可以節(jié)省傳輸時(shí)間。 </p><p>  (5)、無(wú)狀態(tài):HTTP協(xié)議是無(wú)狀態(tài)協(xié)議。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。</p><p>  另一方面,在服務(wù)器不

43、需要先前信息時(shí)它的應(yīng)答就較快。</p><p>  2.2.4 HTTP協(xié)議的結(jié)構(gòu)</p><p>  HTTP報(bào)文由從客戶機(jī)到服務(wù)器的請(qǐng)求的從服務(wù)器到客戶機(jī)的響應(yīng)組成,因此HTTP報(bào)文有兩類:(1)、請(qǐng)求報(bào)文——從客戶向服務(wù)器發(fā)送的請(qǐng)求報(bào)文,見(jiàn)圖2-5-1。(2)、響應(yīng)報(bào)文——從服務(wù)器到客戶的回答。見(jiàn)圖2-5-2。由于HTTP是面向文本的(text-oriented),因此報(bào)文中的每個(gè)字

44、段都是一些ASCII碼串,因而各個(gè)字段的長(zhǎng)度都是不確定的。</p><p><b>  圖2-5-1</b></p><p><b>  圖2-5-2</b></p><p>  HTTP請(qǐng)求報(bào)文的響應(yīng)報(bào)文都是由三個(gè)部分組成。由此可知,這兩種報(bào)文的格式的區(qū)別就是開(kāi)始行不同。開(kāi)始行,用于區(qū)分是請(qǐng)求報(bào)文還是響應(yīng)報(bào)文。在請(qǐng)求報(bào)文

45、中的開(kāi)始行叫做請(qǐng)求行(Request-Line),而在響應(yīng)報(bào)文的開(kāi)始行叫做狀態(tài)行(Status-line)。在開(kāi)始行的三個(gè)字段之間都以空格分隔開(kāi),最后的“CR”和“LF”分別表示回車和換行。首部行,用來(lái)說(shuō)明瀏覽器或報(bào)文主體的一些信息。首部可以有好幾行,但也可以不使用。在每一個(gè)首部中都有首部字段名和它的值,每一行在結(jié)束的地方都要有“回車”和“換行”。整個(gè)首部行結(jié)束時(shí),還有一些空行將首部行的后面的實(shí)體主體分開(kāi)。實(shí)體主體(entity bod

46、y),在請(qǐng)求報(bào)文中一般都不用這個(gè)字段,而是在響應(yīng)報(bào)文中也可能沒(méi)有這個(gè)字段。</p><p>  請(qǐng)求報(bào)文的結(jié)構(gòu)特點(diǎn) http請(qǐng)求由三部分組成,分別是:請(qǐng)求行、消息報(bào)頭、請(qǐng)求正文。請(qǐng)求行以一個(gè)方法符號(hào)開(kāi)頭,以空格分開(kāi),后面跟著請(qǐng)求的URI和協(xié)議的版本,格式如下:Method Request-URI HTTP-Version CRLF  其中 Method表示請(qǐng)求方法;Request-URI是

47、一個(gè)統(tǒng)一資源標(biāo)識(shí)符;HTTP-Version表示請(qǐng)求的HTTP協(xié)議版本;CRLF表示回車和換行(除了作為結(jié)尾的CRLF外,不允許出現(xiàn)單獨(dú)的CR或LF字符)。請(qǐng)求方法(所有方法全為大寫)有多種,各個(gè)方法的解釋如下表3.5.1:</p><p><b>  表3.5.1</b></p><p>  關(guān)于一些方法的就用舉例:GET方法:在瀏覽器的地址欄中輸入網(wǎng)址的方式訪問(wèn)網(wǎng)

48、頁(yè)時(shí),瀏覽器采用GET方法向服務(wù)器獲取資源,eg:GET /form.html HTTP/1.1 (CRLF)。POST方法要求被請(qǐng)求服務(wù)器接受附在請(qǐng)求后面的數(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表示消息報(bào)頭已經(jīng)結(jié)束,在此之前為消息報(bào)頭user=jeffrey&pwd=1234  //此行以下為提交的數(shù)據(jù)</p><p>  HEAD方法與GET方法幾乎

50、是一樣的,對(duì)于HEAD請(qǐng)求的回應(yīng)部分來(lái)說(shuō),它的HTTP頭部中包含的信息與通過(guò)GET請(qǐng)求所得到的信息是相同的。用這個(gè)方法,不必傳輸整個(gè)資源內(nèi)容,就可以得到Request-URI所標(biāo)識(shí)的資源的信息。這種方法常用于測(cè)試超鏈接的有效性,是否可以訪問(wèn),以及最近是否更新。</p><p>  響應(yīng)報(bào)文的結(jié)構(gòu)特點(diǎn) 在接收和解釋請(qǐng)求消息后,服務(wù)器返回一個(gè)HTTP響應(yīng)消息。一個(gè)響應(yīng)由四個(gè)部分組成;狀態(tài)行、響應(yīng)頭標(biāo)、空行、響應(yīng)數(shù)據(jù)

51、。</p><p> ?。?)、狀態(tài)行:狀態(tài)行由三個(gè)標(biāo)記組成:HTTP版本、狀態(tài)碼和解釋狀態(tài)碼的簡(jiǎn)單短語(yǔ)。</p><p>  HTTP版本:向客戶端指明其可理解的最高版本。</p><p>  狀態(tài)碼:3位的數(shù)字代碼,指出請(qǐng)求的成功或失敗,如果失敗則指出原因。</p><p>  解釋狀態(tài)碼的簡(jiǎn)單短語(yǔ):為狀態(tài)碼的可讀性解釋。</p&g

52、t;<p>  例如:HTTP/1.1 200 OK</p><p>  HTTP狀態(tài)碼:1xx:表示通知信息的,如請(qǐng)求收到了或必須采取進(jìn)一步的行動(dòng)。</p><p>  2xx:成功,行為被成功地接受、理解和采納</p><p>  3xx:重定向,為了完成請(qǐng)求,必須進(jìn)一步執(zhí)行的動(dòng)作4xx:客戶端錯(cuò)誤,如請(qǐng)求中有錯(cuò)誤的語(yǔ)法或不

53、能完成</p><p>  5xx:表示服務(wù)器的差錯(cuò),如請(qǐng)求中有錯(cuò)誤的語(yǔ)法或不能完成。</p><p>  常見(jiàn)狀態(tài)代碼、狀態(tài)描述、舉例:</p><p>  200 OK      //客戶端請(qǐng)求成功</p><p>  400 Bad Request  //客戶端請(qǐng)求有語(yǔ)法錯(cuò)誤,

54、不能被服務(wù)器所理解</p><p>  401 Unauthorized //請(qǐng)求未經(jīng)授權(quán),這個(gè)狀態(tài)代碼必須和WWW-Authenticate報(bào)頭域一起使用 </p><p>  403 Forbidden  //服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)</p><p>  404 Not Found  //請(qǐng)求資源不存在,eg:輸入了錯(cuò)誤的U

55、RL</p><p>  500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤</p><p>  503 Server Unavailable  //服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求,一段時(shí)間后可能恢復(fù)正常</p><p>  (2)、響應(yīng)頭標(biāo):像請(qǐng)求頭標(biāo)一樣,它們指出服務(wù)器的功能,標(biāo)識(shí)出響應(yīng)數(shù)據(jù)的細(xì)節(jié)。</p>

56、<p> ?。?)、空行:最后一個(gè)響應(yīng)頭標(biāo)之后是一個(gè)空行,發(fā)送回車符和退行,表明服務(wù)器以下不再有頭標(biāo)。</p><p> ?。?)、響應(yīng)數(shù)據(jù):HTML文檔和圖像等,也就是HTML本身。</p><p>  2.3 HTTP協(xié)議的運(yùn)作方式</p><p>  HTTP協(xié)議的運(yùn)作方式是一個(gè)客戶機(jī)與服務(wù)器建立連接后,客戶機(jī)發(fā)送一個(gè)請(qǐng)求給服務(wù)器。其請(qǐng)求方式的格式為

57、,統(tǒng)一資源標(biāo)識(shí)符、協(xié)議版本號(hào),后邊是MIME信息包括請(qǐng)求修飾符、客戶機(jī)信息和可能的內(nèi)容。服務(wù)器在接到請(qǐng)求后,給予相應(yīng)的響應(yīng)信息,其格式為一個(gè)狀態(tài)行包括信息的協(xié)議版本號(hào)、一個(gè)成功或錯(cuò)誤的代碼,后邊是MIME信息包括服務(wù)器信息、實(shí)體信息和可能的內(nèi)容。</p><p>  HTTP通訊是由一個(gè)用戶代理初始化的并且包括一個(gè)申請(qǐng)?jiān)谠捶?wù)器上資源的請(qǐng)求。最簡(jiǎn)單的情況可能是在用戶代理和源服務(wù)器之間通過(guò)一個(gè)單獨(dú)的連接來(lái)完成。其工

58、作原理如下圖2-6-1所示。</p><p><b>  圖2-6-1</b></p><p>  如果當(dāng)一個(gè)或多個(gè)中介出現(xiàn)在請(qǐng)求/響應(yīng)鏈中的時(shí)候,情況就會(huì)變得復(fù)雜一點(diǎn)。中介分為三種:代理(Proxy)、網(wǎng)關(guān)(Gateway)和通道(Tunnel)。一個(gè)代理根據(jù)URI的絕對(duì)格式來(lái)接受請(qǐng)求,重寫全部或部分消息,通過(guò)URI的標(biāo)識(shí)把已格式化過(guò)的請(qǐng)求發(fā)送到服務(wù)器上。網(wǎng)關(guān)是一個(gè)

59、接收代理,作為一些其它服務(wù)器的上層,可以把請(qǐng)求翻譯給下層的服務(wù)器協(xié)議。一個(gè)通道作為不改變消息的兩個(gè)連接之間的中繼點(diǎn)。當(dāng)通訊需要通過(guò)一個(gè)中介(如:防火墻)或者是中介不能識(shí)別消息的內(nèi)容時(shí),通道經(jīng)常被使用。其工作原理如下圖2-6-2所示。</p><p><b>  圖2-6-2</b></p><p>  表明了在用戶代理和源服務(wù)器之間有三個(gè)中介。一個(gè)通過(guò)整個(gè)鏈的請(qǐng)求或響

60、應(yīng)消息必須經(jīng)過(guò)四個(gè)連接段。因?yàn)橐恍〩TTP通訊選擇可能應(yīng)用于最近的連接、沒(méi)有通道的鄰居,應(yīng)用于鏈的終點(diǎn)或應(yīng)用于沿鏈的所有連接。</p><p>  在Internet上,HTTP通訊通常發(fā)生在TCP/IP連接之上。缺省端口是TCP80,但其它的端口也是可用的。但這并不預(yù)示著HTTP協(xié)議在Internet或其它網(wǎng)絡(luò)的其它協(xié)議之上才能完成。HTTP只預(yù)示著一個(gè)可靠的傳輸。上面只是介紹了HTTP協(xié)議的宏觀運(yùn)作方式,下面

61、介紹一下HTTP協(xié)議的內(nèi)部操作過(guò)程。</p><p>  基于HTTP協(xié)議的客戶/服務(wù)器模式的信息交換過(guò)程,如圖2-6-3所示,它分四個(gè)過(guò)程,建立連接、發(fā)送請(qǐng)求信息、發(fā)送響應(yīng)信息、關(guān)閉連接。在WWW中,“客戶”與“服務(wù)器”是一個(gè)相對(duì)的概念,只存在于一個(gè)特定的連接期間,即在某個(gè)連接中的客戶在另一個(gè)連接中可能作為服務(wù)器。WWW服務(wù)器運(yùn)行時(shí),一直在TCP80端口(WWW的缺省端口)監(jiān)聽(tīng),等待連接的出現(xiàn)。</p&g

62、t;<p><b>  圖2-6-3</b></p><p>  3. 開(kāi)發(fā)工具與環(huán)境介紹</p><p>  3.1 Java語(yǔ)言介紹</p><p>  3.1.1 Java語(yǔ)言簡(jiǎn)介</p><p>  Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,是由Sun Microsystems公

63、司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)(即JavaSE, JavaEE, JavaME)的總稱。Java 技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開(kāi)發(fā)者專業(yè)社群。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢(shì)和廣闊前景。</p><p>  Java是定位于網(wǎng)絡(luò)計(jì)算的計(jì)算機(jī)語(yǔ)

64、言,它幾乎所有的特點(diǎn)也是圍繞著這一中心展開(kāi)的并為之服務(wù)的,這些特點(diǎn)使得Java語(yǔ)言特別適合于用來(lái)開(kāi)發(fā)網(wǎng)絡(luò)上的應(yīng)用程序;另外,作為一種面世較晚的語(yǔ)言,Java也集中體現(xiàn)和充分利用了若干當(dāng)代軟件技術(shù)新成果,如面向?qū)ο蟆⒍嗑€程等,這些也都在它的特點(diǎn)中有所反映。</p><p>  3.1.2 Java語(yǔ)言的特點(diǎn)</p><p>  Java編程語(yǔ)言的風(fēng)格十分接近C、C++語(yǔ)言。Java是一個(gè)純粹

65、的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它繼承了 C++語(yǔ)言面向?qū)ο蠹夹g(shù)的核心。Java舍棄了C語(yǔ)言中容易引起錯(cuò)誤的指針(以引用取代)、運(yùn)算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對(duì)象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔(dān)憂。在 Java 1.5 版本中,Java 又引入了泛型編程(Generic Programming)、類型安全的枚舉、不定長(zhǎng)參數(shù)和自動(dòng)裝/

66、拆箱等語(yǔ)言特性。</p><p>  Java不同于一般的編譯執(zhí)行計(jì)算機(jī)語(yǔ)言和解釋執(zhí)行計(jì)算機(jī)語(yǔ)言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺(tái)上的虛擬機(jī)來(lái)解釋執(zhí)行字節(jié)碼。從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。不過(guò),每次的執(zhí)行編譯后的字節(jié)碼需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了 Java 程序的運(yùn)行效率。</p><p>  Java語(yǔ)言的特點(diǎn)與

67、其歷史發(fā)展是相關(guān)的。它之所以能夠受到如此眾多的好評(píng)以及擁有如此迅猛的發(fā)展與其語(yǔ)言本身的特點(diǎn)是分不開(kāi)的。其主要特點(diǎn)如下所述:</p><p> ?。?)、簡(jiǎn)單性:從Java語(yǔ)言的發(fā)展史可以了解到Java語(yǔ)言是在C和C++計(jì)算機(jī)語(yǔ)言的基礎(chǔ)上進(jìn)行簡(jiǎn)化和改進(jìn)的一種新型計(jì)算機(jī)語(yǔ)言,它去掉了C和C++中最難正確應(yīng)用的指針的最難理解的多重繼承技術(shù)等內(nèi)容,通過(guò)垃圾自動(dòng)回收機(jī)制簡(jiǎn)化了程序內(nèi)存管理,統(tǒng)一了各種數(shù)據(jù)類型在不同操作系統(tǒng)平

68、臺(tái)上所占用的內(nèi)存大小。Java程序的簡(jiǎn)單性是其得以迅速普及的最重要的原因之一。</p><p> ?。?)、網(wǎng)絡(luò)特性:Java語(yǔ)言正是因?yàn)槠鋵?duì)互聯(lián)網(wǎng)的良好支持而受到推崇并得以迅速推廣的。Java語(yǔ)言是目前對(duì)網(wǎng)絡(luò)支持最全面,與網(wǎng)絡(luò)關(guān)系最密切的計(jì)算機(jī)語(yǔ)言之一。</p><p> ?。?)、面向?qū)ο螅河捎贘ava語(yǔ)言是一種新型計(jì)算機(jī)語(yǔ)言,沒(méi)有兼容過(guò)程式計(jì)算機(jī)語(yǔ)言的負(fù)擔(dān),所以Java語(yǔ)言在面向?qū)ο?/p>

69、的特性比C++語(yǔ)言更為徹底。面向?qū)ο竽P褪且环N模擬人類社會(huì)和人解決實(shí)際問(wèn)題的模型,因此更為符合人們的思維習(xí)慣,而且容易擴(kuò)充的維護(hù)。它的缺點(diǎn)是程序在開(kāi)發(fā)的過(guò)程中常常變得越來(lái)越龐大。</p><p> ?。?)、平臺(tái)無(wú)關(guān)性/可移植性:Java語(yǔ)言的設(shè)計(jì)目標(biāo)是讓其程序不用修改就可以在任何一種計(jì)算機(jī)平臺(tái)上運(yùn)行。解決異構(gòu)操作系統(tǒng)兼容性問(wèn)題是一個(gè)很艱巨的任務(wù)。Sun公司提供的Java語(yǔ)言也沒(méi)有完全做到這一點(diǎn)。在Java語(yǔ)言的

70、說(shuō)明書中,Sun公司用權(quán)重(weight)的輕重為表示其提供的類或成員方法與計(jì)算機(jī)平臺(tái)的相關(guān)性大小。不過(guò)總的來(lái)說(shuō),Java語(yǔ)言在這一方面是做的最好的計(jì)算機(jī)語(yǔ)言。</p><p> ?。?)、健壯性:健壯性指的程序執(zhí)行的穩(wěn)定性。Java語(yǔ)言設(shè)計(jì)者在設(shè)計(jì)Java語(yǔ)言的過(guò)程中一直考慮如何減少編寫程序的過(guò)程中可能產(chǎn)生的錯(cuò)誤。Java在編譯和執(zhí)行的過(guò)程中都會(huì)進(jìn)行比較嚴(yán)格的檢查,以減少錯(cuò)誤的發(fā)生。Java語(yǔ)言的垃圾自動(dòng)回收機(jī)

71、制和異常處理機(jī)制在很大程度上提高了程序的健壯性。另外,Java語(yǔ)言的簡(jiǎn)單性同時(shí)也在一定的程序上保證程序的健壯性。</p><p> ?。?)、安全性:在網(wǎng)絡(luò)上運(yùn)行的Java程序是符合網(wǎng)絡(luò)安全協(xié)議的。在執(zhí)行Java程序的過(guò)程中,Java虛擬機(jī)對(duì)程序的安全性進(jìn)行檢測(cè)。一般來(lái)說(shuō),Java程序是安全的,它不會(huì)訪問(wèn)不允許問(wèn)的內(nèi)在或文件。</p><p> ?。?)、多線程性:這主要用來(lái)處理復(fù)雜或需要

72、并行的事務(wù)。組成Java虛擬機(jī)的各個(gè)程序本身一般也采用多線程機(jī)制。采用多線程是提高程序運(yùn)行效率的一種方法;不過(guò),增加了程序的設(shè)計(jì)難度。</p><p> ?。?)、解釋性:Java語(yǔ)言是一種解釋執(zhí)行的語(yǔ)言。這是Java語(yǔ)言的一個(gè)缺點(diǎn),因?yàn)榻忉寛?zhí)行的語(yǔ)言相比編譯執(zhí)行的語(yǔ)言需要額外的語(yǔ)句解釋步驟及其運(yùn)行時(shí)間。</p><p>  總之,Java語(yǔ)言是一種易學(xué)好用,健壯性好,但采用解釋執(zhí)行的計(jì)算

73、機(jī)語(yǔ)言。用Java語(yǔ)言編寫程序一般會(huì)比用其它計(jì)算機(jī)語(yǔ)言編寫程序花費(fèi)更少的時(shí)間,而且調(diào)試所需的時(shí)間一般也比較短。</p><p><b>  3.2 JDK概述</b></p><p>  JDK(Java Development Kit)是Sun Microsystems針對(duì)Java開(kāi)發(fā)員的產(chǎn)品。自從Java推出以來(lái),JDK已經(jīng)成為使用最廣泛的Java SDK。JDK

74、 是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境、Java工具和Java基礎(chǔ)類庫(kù)。JDK是學(xué)好Java的第一步。而專門運(yùn)行在x86平臺(tái)的Jrocket在服務(wù)端運(yùn)行效率也要比Sun JDK好很多。從SUN的JDK5.0開(kāi)始,提供了泛型等非常實(shí)用的功能,其版本也不斷更新,運(yùn)行效率得到了非常大的提高。</p><p>  JDK包含的基本組件包括:javac:編譯器,將源程序轉(zhuǎn)成字節(jié)碼。jar – 打包工具,將相關(guān)的類文

75、件打包成一個(gè)文件。Javadoc: 文檔生成器,從源碼注釋中提取文檔。jdb debugger,查錯(cuò)工具。java運(yùn)行編譯后的java程序(.class后綴的)。appletviewer:小程序?yàn)g覽器,一種執(zhí)行HTML文件上的Java小程序的Java瀏覽器。Javah:產(chǎn)生可以調(diào)用Java過(guò)程的C過(guò)程,或建立能被Java程序調(diào)用的C過(guò)程的頭文件。Javap:Java反匯編器,顯示編譯類文件中的可訪問(wèn)功能和數(shù)據(jù),同時(shí)顯示字節(jié)代碼含義。J

76、console: Java進(jìn)行系統(tǒng)調(diào)試和監(jiān)控的工具。</p><p>  3.4 JDK安裝與配置</p><p>  1.下載jdk 1.6或更高版本 (http://java.sun .com,同時(shí)還要下載其Java Documentation,這是Java幫助文檔)。</p><p>  2.運(yùn)行剛剛下載的安裝程序進(jìn)行正式安裝(以下假設(shè)安裝于c:\jdk1.6

77、.0_21\,建議安裝路徑不要有空格,不宜安裝在\Program Files目錄下!)。</p><p>  3.設(shè)置運(yùn)行環(huán)境參數(shù):</p><p>  在Windows2000、XP或Win7系統(tǒng),使用鼠標(biāo)右擊“我的電腦”->屬性->高級(jí)->環(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中有一英文句號(hào)“.”后跟一個(gè)分號(hào),表示當(dāng)前路徑的意思

79、)。</p><p>  3.5 MyEclipse相關(guān)介紹</p><p>  MyEclipse企業(yè)級(jí)工作平臺(tái)(MyEclipse Enterprise Workbench ,簡(jiǎn)稱MyEclipse)是對(duì)EclipseIDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫(kù)和JavaEE的開(kāi)發(fā)、發(fā)布以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的JavaEE集成開(kāi)發(fā)環(huán)境,包括了完備的編碼、調(diào)

80、試、測(cè)試和發(fā)布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。</p><p>  MyEclipse 是一個(gè)十分優(yōu)秀的用于開(kāi)發(fā)Java, J2EE的 Eclipse 插件集合,MyEclipse的功能非常強(qiáng)大,支持也十分廣泛,尤其是對(duì)各種開(kāi)源產(chǎn)品的支持十分不錯(cuò)。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF,

81、 Struts,Spring, Hibernate,EJB3,JDBC數(shù)據(jù)庫(kù)鏈接工具等多項(xiàng)功能??梢哉f(shuō)MyEclipse幾乎囊括了目前所有主流開(kāi)源產(chǎn)品的專屬eclipse開(kāi)發(fā)工具。MyEclipse6.0以前版本需先安裝Eclipse。MyEclipse6.0以后版本安裝時(shí)不需安裝Eclipse。</p><p>  4. 網(wǎng)絡(luò)協(xié)議分析系統(tǒng)的設(shè)計(jì)</p><p>  4.1 WinPcap

82、的相關(guān)介紹</p><p>  WinPcap(windows packet capture)是windows平臺(tái)下一個(gè)免費(fèi),公共的網(wǎng)絡(luò)訪問(wèn)系統(tǒng)。開(kāi)發(fā)WinPcap這個(gè)項(xiàng)目的目的在于為win32應(yīng)用程序提供訪問(wèn)網(wǎng)絡(luò)底層的能力。 </p><p>  WinPcap是用于網(wǎng)絡(luò)封包抓取的一套工具,可適用于32位的操作平臺(tái)上解析網(wǎng)絡(luò)封包,包含了核心的封包過(guò)濾,一個(gè)底層動(dòng)態(tài)鏈接庫(kù),和一個(gè)高層系統(tǒng)函

83、數(shù)庫(kù),及可用來(lái)直接存取封包的應(yīng)用程序界面。</p><p>  WinPcap是一個(gè)免費(fèi)公開(kāi)的軟件系統(tǒng)。它用于windows系統(tǒng)下的直接的網(wǎng)絡(luò)編程。</p><p>  大多數(shù)網(wǎng)絡(luò)應(yīng)用程序訪問(wèn)網(wǎng)絡(luò)是通過(guò)廣泛使用的套接字。這種方法很容易實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)傳輸,因?yàn)椴僮飨到y(tǒng)負(fù)責(zé)底層的細(xì)節(jié)(比如協(xié)議棧,數(shù)據(jù)流組裝等)以及提供了類似于文件讀寫的函數(shù)接口。</p><p>  但是

84、有時(shí),簡(jiǎn)單的方法是不夠的。因?yàn)橐恍?yīng)用程序需要一個(gè)底層環(huán)境去直接操縱網(wǎng)絡(luò)通信。因此需要一個(gè)不需要協(xié)議棧支持的原始的訪問(wèn)網(wǎng)絡(luò)的方法。開(kāi)發(fā)WinPcap這個(gè)項(xiàng)目的目的在于為win32應(yīng)用程序提供訪問(wèn)網(wǎng)絡(luò)底層的能力。它提供了以下的各項(xiàng)功能:</p><p>  (1)、捕獲原始數(shù)據(jù)報(bào),包括在共享網(wǎng)絡(luò)上各主機(jī)發(fā)送/接收的以及相互之間交換的數(shù)據(jù)報(bào);</p><p> ?。?)、在數(shù)據(jù)報(bào)發(fā)往應(yīng)用程序之

85、前,按照自定義的規(guī)則將某些特殊的數(shù)據(jù)報(bào)過(guò)濾掉;</p><p>  (3)、在網(wǎng)絡(luò)上發(fā)送原始的數(shù)據(jù)報(bào);</p><p> ?。?)、收集網(wǎng)絡(luò)通信過(guò)程中的統(tǒng)計(jì)信息。</p><p>  WinPcap的主要功能在于獨(dú)立于主機(jī)協(xié)議(如TCP-IP)而發(fā)送和接收原始數(shù)據(jù)報(bào)。也就是說(shuō),WinPcap不能阻塞,過(guò)濾或控制其他應(yīng)用程序數(shù)據(jù)報(bào)的發(fā)收,它僅僅只是監(jiān)聽(tīng)共享網(wǎng)絡(luò)上傳送的

86、數(shù)據(jù)報(bào)。因此,它不能用于QoS調(diào)度程序或者</p><p><b>  是個(gè)人防火墻。</b></p><p>  4.2 體系結(jié)構(gòu)設(shè)計(jì)</p><p>  本方案采用的是利用Jpcap.dll在數(shù)據(jù)鏈路層下進(jìn)行數(shù)據(jù)包的捕獲。Jpcap提供了在Windows系統(tǒng)上進(jìn)行這種訪問(wèn)的Java API,它可以訪問(wèn)底層的網(wǎng)絡(luò)數(shù)據(jù)。但Jpcap不是一種純粹

87、的Java解決方案;它需要依賴本地庫(kù)的使用。因此,在Windows 平臺(tái)上要使用必要的第三方庫(kù),分別是WinPcap或libpcap。</p><p>  利用專門用于網(wǎng)絡(luò)監(jiān)聽(tīng)的一個(gè)函數(shù)庫(kù)Jpcap.lib提供的函數(shù)完成抓包工作,由于該庫(kù)提供的函數(shù)抓到的包是數(shù)據(jù)鏈路層下的幀,因此,它可以被用來(lái)基于數(shù)據(jù)鏈路層下的流量捕獲。其體系結(jié)構(gòu)如下圖4-2所示。</p><p><b>  圖

88、4-2</b></p><p>  底層的網(wǎng)絡(luò)接口卡(網(wǎng)卡),為了監(jiān)聽(tīng)所有的包,它被設(shè)置為混雜模式(promiscuous mode)工作。這可調(diào)用庫(kù)函數(shù)實(shí)現(xiàn)。</p><p>  Packet Capture driver是較低層的捕獲堆棧的軟件模塊。它和網(wǎng)絡(luò)接口卡相互作用抓包,它提供了應(yīng)用程序一系列函數(shù)可以讀寫數(shù)據(jù)鏈路層上的數(shù)據(jù)。</p><p> 

89、 Packet.dll從捕獲程序里分離出來(lái),工作在用戶層,它是一個(gè)動(dòng)態(tài)鏈路庫(kù),使捕獲程序從提供系統(tǒng)獨(dú)立的捕獲界面的驅(qū)動(dòng)程序中獨(dú)立出來(lái),它提供了一系列具有捕獲能力的函數(shù)供上層調(diào)用,從而避免了對(duì)驅(qū)動(dòng)器的直接操作,并允許應(yīng)用程序可以不經(jīng)過(guò)重新編譯就可以執(zhí)行在不同操作系統(tǒng)的環(huán)境中。</p><p>  WinPcap 是一個(gè)第三方類庫(kù),為Jpcap提供基礎(chǔ)類。</p><p>  Jpcap是一個(gè)

90、靜態(tài)庫(kù),可以被包捕獲程序直接調(diào)用,它應(yīng)用Packet.dll導(dǎo)出的服務(wù)向上層應(yīng)用程序提供強(qiáng)有力的捕獲界面。它是應(yīng)用程序的一部分。</p><p>  4.3 數(shù)據(jù)包的存儲(chǔ)</p><p>  對(duì)于一個(gè)網(wǎng)絡(luò)數(shù)據(jù)包的存儲(chǔ),主要包括TCP包頭信息和TCP包的數(shù)據(jù)信息。TCP包頭信息含有很多相關(guān)的控制信息,如源端口、目的端口、順序號(hào)、確認(rèn)號(hào)、校驗(yàn)和、窗口大小等。這些信息都能夠體現(xiàn)數(shù)據(jù)包所含的內(nèi)容。

91、</p><p>  TCP包的頭部格式如下圖4-3所示: </p><p><b>  圖4-3</b></p><p>  其首部的前20B是固定的。TCP報(bào)文段的首部最短為20B,后面有4N字節(jié)是根據(jù)需要而增加的選項(xiàng)。通常長(zhǎng)度是4的整數(shù)倍字節(jié)。報(bào)文段即可以來(lái)運(yùn)載數(shù)據(jù),也可以用來(lái)建立連接、釋放連接和應(yīng)答。</p><p&

92、gt;  就上面的數(shù)據(jù)包格式,各字段的意義如下:</p><p> ?。?)、源端口和目的端口字段:各占2B。端口是運(yùn)輸層與應(yīng)用層的服務(wù)接口。運(yùn)輸層的復(fù)用和分用要通過(guò)端口才能實(shí)現(xiàn)。</p><p> ?。?)、序號(hào)字段:占4B。TCP連接中傳送的數(shù)據(jù)流中的每一個(gè)字節(jié)都編上一個(gè)序號(hào)。序號(hào)字段的值則指的是報(bào)文字段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。</p><p>  (3

93、)、確認(rèn)號(hào)字段:占4B,是期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。若確認(rèn)號(hào)=N,則表明到序號(hào)N-1為止的所有數(shù)據(jù)都已正確收到。</p><p>  (4)、數(shù)據(jù)偏移(首部長(zhǎng)度):占4位,它指出TCP報(bào)文段的數(shù)據(jù)起始距離TCP報(bào)文段的起始位置有多遠(yuǎn)。</p><p> ?。?)、保留字段:占6位,保留為今后使用,但目前應(yīng)置為0。</p><p> ?。?)

94、、緊急位URG:當(dāng)URG=1時(shí),表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送。</p><p> ?。?)、確認(rèn)位ACK:只有當(dāng)ACK=1時(shí)確認(rèn)號(hào)字段才有效,當(dāng)ACK=0時(shí),確認(rèn)號(hào)無(wú)效。</p><p>  (8)、推送位PSH:接收TCP收到PSH=1的的報(bào)文段,就盡快地音樂(lè)會(huì)接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付。</p><p&g

95、t; ?。?)、復(fù)位位RST:當(dāng)RST=1時(shí),表明TCP連接中出現(xiàn)了嚴(yán)重的差錯(cuò),必須釋放連接,然后再重新建立運(yùn)輸連接。</p><p> ?。?0)、同步位SYN:同步SYN=1表示這是一個(gè)連接請(qǐng)求或連接接收?qǐng)?bào)文。</p><p>  (11)、終止位FIN:用來(lái)釋放一個(gè)連接。FIN=1表示此報(bào)文的發(fā)送方的數(shù)據(jù)已發(fā)送完畢,并要求釋放傳輸連接。</p><p>  (

96、12)、窗口字段:占2B。接收方的數(shù)據(jù)緩存空間是有限的,故用窗口值作為接收方讓發(fā)送方設(shè)置其發(fā)送窗口的依據(jù),單位為字節(jié)。</p><p> ?。?3)、檢驗(yàn)和:占2B。檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩個(gè)部分,在計(jì)算檢驗(yàn)和時(shí),要在TCP字段的前面加強(qiáng)上12B的偽首部。</p><p> ?。?4)、緊急指針安段:占16位,指出在本報(bào)文段中緊急數(shù)共有多少個(gè)字節(jié)。</p>&l

97、t;p> ?。?5)、選項(xiàng)字段:長(zhǎng)度可變。TCP最初只規(guī)定了一種選項(xiàng),即最大報(bào)文段長(zhǎng)度(MSS),MSS是TCP報(bào)文段中的數(shù)據(jù)字段的最大長(zhǎng)度。</p><p> ?。?6)、填充字段:這是為了使整個(gè)首部長(zhǎng)度是4B的整數(shù)倍。</p><p>  4.4 網(wǎng)絡(luò)數(shù)據(jù)包的捕獲和存儲(chǔ)流程圖 </p><p>  在以太網(wǎng)上通訊的每張網(wǎng)卡上都擁有一個(gè)全球唯一的物理地址即M

98、AC地址。該地址是一個(gè)48比特的二進(jìn)制數(shù)。在以太網(wǎng)卡中內(nèi)建有一個(gè)數(shù)據(jù)包過(guò)濾器。該數(shù)據(jù)包過(guò)濾器的作用是保留以太網(wǎng)本身網(wǎng)卡的MAC地址為通訊目的的數(shù)據(jù)包和廣播數(shù)據(jù)包,丟棄所有其它無(wú)關(guān)的數(shù)據(jù)包,以免CPU對(duì)無(wú)關(guān)的數(shù)據(jù)報(bào)作無(wú)謂的處理。這是以太網(wǎng)卡在一般情況下的工作方式。因此在正常情況下,一個(gè)合法的網(wǎng)絡(luò)接口應(yīng)該只響應(yīng)這樣的兩種數(shù)據(jù)包(幀): </p><p>  (1)幀的目標(biāo)地址具有和本地網(wǎng)絡(luò)接口相匹配的硬件地址。 &l

99、t;/p><p>  (2)幀的目標(biāo)地址是“廣播地址”。</p><p>  在接收到上面兩種情況的數(shù)據(jù)幀時(shí),網(wǎng)卡通過(guò)CPU產(chǎn)生中斷,操作系統(tǒng)進(jìn)行中斷處理后將幀中包含的數(shù)據(jù)傳送給上層系統(tǒng)進(jìn)行進(jìn)一步處理。在其他情況下數(shù)據(jù)幀將被丟棄而不作處理。 </p><p>  要想捕獲到流經(jīng)網(wǎng)卡的不屬于本主機(jī)的數(shù)據(jù),必須繞過(guò)系統(tǒng)正常工作的處理機(jī)制,直接訪問(wèn)網(wǎng)絡(luò)底層。我們可以把網(wǎng)卡的狀

100、態(tài)設(shè)為“混雜”模式,當(dāng)網(wǎng)卡工作在這種“混雜”模式時(shí),該網(wǎng)卡就具備了“廣播地址”,它對(duì)所接收到的每一個(gè)幀都產(chǎn)生一個(gè)硬件中斷以提醒操作系統(tǒng)處理流經(jīng)該網(wǎng)卡上的每一個(gè)報(bào)文包。操作系統(tǒng)通過(guò)直接訪問(wèn)鏈路層,截獲相關(guān)數(shù)據(jù),由應(yīng)用程序而非上層協(xié)議(如IP層、TCP層)對(duì)數(shù)據(jù)過(guò)濾處理,這樣就可以捕獲到流經(jīng)網(wǎng)卡的所有數(shù)據(jù)。</p><p>  不同的操作系統(tǒng)實(shí)現(xiàn)的底層包捕獲機(jī)制可能是不一樣的,但從形式上看大同小異。數(shù)據(jù)包常規(guī)的傳輸路

101、徑依次為網(wǎng)卡、設(shè)備驅(qū)動(dòng)層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、最后到達(dá)應(yīng)用程序。而包捕獲機(jī)制是在數(shù)據(jù)鏈路層增加一個(gè)旁路處理,對(duì)發(fā)送和接收到的數(shù)據(jù)包做過(guò)濾、緩沖等相關(guān)處理,最后直接傳遞到應(yīng)用程序。對(duì)用戶程序而言,包捕獲機(jī)制提供了一個(gè)統(tǒng)一的接口,使用戶程序只需要簡(jiǎn)單的調(diào)用若干函數(shù)就能獲得所期望的數(shù)據(jù)包。這樣一來(lái),針對(duì)特定操作系統(tǒng)的捕獲機(jī)制對(duì)用戶透明,使用戶程序有比較好的可移植性。</p><p>  數(shù)據(jù)包的捕獲是通過(guò)Jpc

102、ap對(duì)網(wǎng)卡的監(jiān)聽(tīng)實(shí)現(xiàn)的,這需要用到WinPcap第三方庫(kù),Jpcap所使用的是一個(gè)事件模型來(lái)處理包的。Jpcap.dll在數(shù)據(jù)鏈路層進(jìn)行數(shù)據(jù)包的捕獲,Jpcap提供了能夠在Windows系統(tǒng)上數(shù)據(jù)鏈路層下進(jìn)行數(shù)據(jù)包捕獲的Java API,其流程圖如下圖4-4:</p><p><b>  圖4-4</b></p><p>  4.5 網(wǎng)絡(luò)數(shù)據(jù)包的還原原理</p&

103、gt;<p>  對(duì)所捕獲到的數(shù)據(jù)包進(jìn)行還原,其主要原理是,首長(zhǎng)要把捕獲到的數(shù)據(jù)包進(jìn)行初始化,通過(guò)采用ASCALL判碼方式對(duì)十六進(jìn)制數(shù)據(jù)信息進(jìn)行還原,通過(guò)觀察“Content-Type”,“charset”等特殊字符,可以判斷該數(shù)據(jù)包是否傳送的是文本信息,采用的是什么編碼方式。如:“Content-Type:text/html; charset=gb2312”,這樣可以確認(rèn)為文本信息,采用的是gb2312編碼方式,然后,就

104、可以采用gb2312編碼的解碼方式進(jìn)行信息的還原。但是,如果是其它信息的編碼,則采用其它編碼方式進(jìn)行解碼還原。還原的流程圖如下圖4-5所示:</p><p><b>  圖4-5</b></p><p>  5.網(wǎng)絡(luò)數(shù)據(jù)捕獲與還原系統(tǒng)的實(shí)現(xiàn)</p><p>  5.1 字符編碼介紹</p><p>  5.1.1 ASC

105、ALL字符編碼</p><p>  ASCALL碼是美國(guó)信息交換標(biāo)準(zhǔn)碼,一種使用7個(gè)或8個(gè)二進(jìn)制位進(jìn)行編碼的方案,最多可以給256個(gè)字符,ASCALL碼包括字母、數(shù)字、標(biāo)點(diǎn)符號(hào)、控制字符及其他符號(hào)。ASCALL碼于1968年提出,用于在不同計(jì)算機(jī)硬件和軟件系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)傳輸標(biāo)準(zhǔn)化,在大多數(shù)的小型機(jī)和全部的個(gè)人計(jì)算機(jī)都使用此碼。ASCALL碼劃分為兩個(gè)集合:128個(gè)字符的標(biāo)準(zhǔn)ASCII碼和附加的128個(gè)字符的擴(kuò)充和

106、ASCALL碼。比較EBCDIC。其中95個(gè)字符可以顯示。另外33個(gè)不可以顯示。 標(biāo)準(zhǔn)ASCII碼為7位,擴(kuò)充為8位。</p><p>  5.1.2 GBK字符編碼</p><p>  GBK即漢字內(nèi)碼擴(kuò)展規(guī)范,K為擴(kuò)展的漢語(yǔ)拼音中“擴(kuò)”字的聲母。英文全稱Chinese Internal Code Specification。GBK編碼標(biāo)準(zhǔn)兼容GB2312,共收錄漢字21003個(gè)、符號(hào)8

107、83個(gè),并提供1894個(gè)造字碼位,簡(jiǎn)、繁體字融于一體。</p><p>  GB 2312的出現(xiàn),基本滿足了漢字的計(jì)算機(jī)處理需要,但對(duì)于人名、古漢語(yǔ)等方面出現(xiàn)的罕用字,GB 2312不能處理,這導(dǎo)致了后來(lái)GBK及GB 18030漢字字符集的出現(xiàn)。</p><p>  5.1.3 GB2312字符編碼</p><p>  GB2312是ANSI編碼里的一種,對(duì)ANSI

108、編碼最初始的ASCII編碼進(jìn)行擴(kuò)充,為了滿足國(guó)內(nèi)在計(jì)算機(jī)中使用漢字的需要,中國(guó)國(guó)家標(biāo)準(zhǔn)總局發(fā)布了一系列的漢字字符集國(guó)家標(biāo)準(zhǔn)編碼,統(tǒng)稱為GB碼,或國(guó)標(biāo)碼。</p><p>  GB2312是一個(gè)簡(jiǎn)體中文字符集,由6763個(gè)常用漢字和682個(gè)全角的非漢字字符組成。其中漢字根據(jù)使用的頻率分為兩級(jí)。一級(jí)漢字3755個(gè),二級(jí)漢字3008個(gè)。由于字符數(shù)量比較大,GB2312采用了二維矩陣編碼法對(duì)所有字符進(jìn)行編碼。首先構(gòu)造一個(gè)

109、94行94列的方陣,對(duì)每一行稱為一個(gè)“區(qū)”,每一列稱為一個(gè)“位”,然后將所有字符依照下表的規(guī)律填寫到方陣中。這樣所有的字符在方陣中都有一個(gè)唯一的位置,這個(gè)位置可以用區(qū)號(hào)、位號(hào)合成表示,稱為字符的區(qū)位碼。如第一個(gè)漢字“啊”出現(xiàn)在第16區(qū)的第1位上,其區(qū)位碼為1601。因?yàn)閰^(qū)位碼同字符的位置是完全對(duì)應(yīng)的,因此區(qū)位碼同字符之間也是一一對(duì)應(yīng)的。這樣所有的字符都可通過(guò)其區(qū)位碼轉(zhuǎn)換為數(shù)字編碼信息。</p><p>  5.1

溫馨提示

  • 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論