版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 計算機網(wǎng)絡(luò)課程設(shè)計報告</p><p> 題 目 端口檢測及IP包的捕獲解析 </p><p> 學(xué)生姓名 </p><p> 班級學(xué)號 </p><p> 指導(dǎo)教師
2、 </p><p> 設(shè)計時間 </p><p> 第一節(jié) 實驗平臺和器材準(zhǔn)備1</p><p> 1.2 實驗平臺1</p><p> 第二節(jié) 需求分析1</p><p> 2.1 實驗要求1</p><p> 2.1.1 基本要求
3、1</p><p> 2.1.3 詳細(xì)功能要求1</p><p> 第三節(jié)、概要設(shè)計1</p><p> 3.1 端口監(jiān)聽1</p><p> 3.2 IP包的捕獲與解析2</p><p> 第四節(jié) 詳細(xì)設(shè)計3</p><p> 4.1端口監(jiān)聽程序框圖3</p>
4、;<p> 4.2端口監(jiān)聽關(guān)鍵代碼3</p><p> 4.2 IP包捕獲與解析程序框圖4</p><p> 4.2.1 寫日志函數(shù)4</p><p> 4.2.1 IP包捕獲與分析5</p><p> 第五節(jié) 實驗結(jié)果分析9</p><p> 5.1 實驗結(jié)果展示9</p&
5、gt;<p> 5.1.1 端口監(jiān)聽9</p><p> 5.1.2 IP包的捕獲與解析析11</p><p> 5.1 實驗結(jié)果分析12</p><p> 5.1.1 端口監(jiān)聽12</p><p> 5.1.2 IP包的捕獲與解析13</p><p> 第六節(jié) 錯誤調(diào)試14<
6、;/p><p> 6.1 數(shù)據(jù)庫連接錯誤14</p><p> 6.1.1 解決方案14</p><p> 6.2 POST亂碼解決方式15</p><p> 6.2.1 錯誤表現(xiàn)15</p><p> 6.2.2解決方案15</p><p> 6.3 Socket連接錯誤1
7、6</p><p> 6.3.1 錯誤表現(xiàn)16</p><p> 6.3.2產(chǎn)生錯誤的原因16</p><p> 6.3.3 解決方式16</p><p> 第八節(jié) 實驗總結(jié)0</p><p> 第九節(jié) 參考資料1</p><p><b> 附件:2</b
8、></p><p> 第一節(jié) 實驗平臺和器材準(zhǔn)備</p><p><b> 1.2 實驗平臺</b></p><p><b> 第二節(jié) 需求分析</b></p><p><b> 2.1 實驗要求</b></p><p> 2.1.1 基
9、本要求</p><p> 本次實驗的要求在網(wǎng)絡(luò)環(huán)境,實現(xiàn)端口檢測以及捕獲網(wǎng)絡(luò)中的IP數(shù)據(jù)包,解析數(shù)據(jù)包的內(nèi)容,將結(jié)果顯示在標(biāo)準(zhǔn)輸出上,并同時寫入日志文件。</p><p> 2.1.3 詳細(xì)功能要求</p><p> l)實現(xiàn)本機以及局域網(wǎng)內(nèi)計算機的端口監(jiān)控。</p><p> 2)在標(biāo)準(zhǔn)輸出和日志文件中寫入捕獲的IP包的版本、頭長度
10、、服務(wù)類型、數(shù)據(jù)包總長度、數(shù)據(jù)包標(biāo)識、分段標(biāo)志、分段偏移值、生存時間、上層協(xié)議類型、頭校驗和、源IP地址和目的IP地址等內(nèi)容。</p><p> 3)形成記錄結(jié)果的日志文件。</p><p><b> 第三節(jié)、概要設(shè)計</b></p><p><b> 3.1 端口監(jiān)聽</b></p><p>
11、; 創(chuàng)建一個服務(wù)器s,依次開放0—65535間所有的端口,當(dāng)開放過程拋出IO流異常e,并且e是java.net.BindException的一個實例時,輸出該端口被占用。</p><p> 3.2 IP包的捕獲與解析</p><p> 在Java平臺下通過第三方包來進行底層網(wǎng)絡(luò)嗅探。使用JnetPCAP對接WinPCAP來截獲網(wǎng)卡數(shù)據(jù)包,分為四步走。</p><p
12、> 第一步:獲取網(wǎng)卡列表。</p><p> 通過Pcap.findAllDevs(alldevs, errbuf) 這個靜態(tài)方法將所有本機網(wǎng)卡加入到alldevs的List<PcapIf >中。然后選擇一個網(wǎng)卡進行監(jiān)聽。</p><p><b> 第二步:打開連接</b></p><p> 調(diào)用Pcap
13、.openLive(device.getName(), snaplen, flags, timeout, errbuf)靜態(tài)方法,返回一個Pcap對象。其中5個參數(shù)分別表示設(shè)備的系統(tǒng)名稱(不是設(shè)備別名)、每次捕捉的數(shù)據(jù)量、捕捉方式、超時和錯誤信息緩沖區(qū)。</p><p><b> 第三步:監(jiān)聽抓包</b></p><p> 調(diào)用pcap.loop(int cnt,
14、 JPacketHandler<T> handler, T user) 方法即可進行監(jiān)聽,在loop方法的參數(shù)中有兩點需要關(guān)注,第一點是用戶指定的數(shù)據(jù)包分析器,在之后的文章中將詳細(xì)介紹;第二點是一個泛型參數(shù),表示傳輸給分析器的用戶指定類型的消息。</p><p><b> 第四步:數(shù)據(jù)包分析</b></p><p> 使用繼承JPack
15、etHandler來實現(xiàn)自己的處理方法。<br>在JPacketHandler有一個nextPacket(JPacket packet, T user) 方法,這是典型的通過事件機制來實現(xiàn)處理數(shù)據(jù)包的方法。每當(dāng)Pcap嗅探到一個數(shù)據(jù)包后,調(diào)用用戶之前綁定的分析器中的nextPacket方法進行處理。注意這個方法是阻塞的,也就避免了潛在的同步問題。傳進的JPacket參數(shù)包含了這個數(shù)據(jù)包中的所有信息,通過不同的內(nèi)置Header
16、分析器可以分析不同的協(xié)議。</p><p> 寫入日志函數(shù)使用Java寫入文件相關(guān)語句,將輸出流中的字節(jié)截取并寫入到TXT文件中。</p><p><b> 第四節(jié) 詳細(xì)設(shè)計</b></p><p> 4.1端口監(jiān)聽程序框圖</p><p> 4.2端口監(jiān)聽關(guān)鍵代碼</p><p> 4
17、.2 IP包捕獲與解析程序框圖</p><p> 4.2.1 寫日志函數(shù)</p><p> 1.寫日志函數(shù)程序框圖</p><p> 2.寫日志函數(shù)關(guān)鍵代碼</p><p> 4.2.1 IP包捕獲與分析</p><p> 1.IP包捕獲與分析程序框圖</p><p> 2.IP捕獲
18、與分析關(guān)鍵代碼</p><p> 第五節(jié) 實驗結(jié)果分析</p><p> 5.1 實驗結(jié)果展示</p><p> 5.1.1 端口監(jiān)聽</p><p><b> 1.關(guān)閉局域網(wǎng)</b></p><p><b> 2.打開局域網(wǎng)</b></p><
19、p> 5.1.2 IP包的捕獲與解析析</p><p><b> 1、捕獲網(wǎng)卡信息 </b></p><p><b> 2.IP包解析結(jié)果</b></p><p> 3.日志文件生成</p><p><b> 4.日志內(nèi)容</b></p>&l
20、t;p> 5.1 實驗結(jié)果分析</p><p> 5.1.1 端口監(jiān)聽</p><p> 結(jié)果展示界面中顯示有較多接口被占用,其中53號端口為DNS服務(wù),所以在打開局域網(wǎng)的時候可以發(fā)現(xiàn)53號端口被占用,而關(guān)閉局域網(wǎng)后發(fā)現(xiàn)該端口未被占用;135號端口主要用于使用RPC(Remote Procedure Call,遠(yuǎn)程過程調(diào)用)協(xié)議并提供DCOM(分布式組件對象模型)服務(wù)。8086
21、屬于TCP端口號,是一種分布式SCADA網(wǎng)絡(luò)對接端口。</p><p> 5.1.2 IP包的捕獲與解析</p><p> 在運行的結(jié)果中,各個信息分別表示:</p><p> ******* Ip4 - "ip version 4" - offset=14 (0xE) length=20 protocol suite=NETWORK<
22、;/p><p> Length表示報頭長度20字節(jié),suite表示協(xié)議棧是network</p><p> version = 4</p><p> Version表示IP版本號為4</p><p> hlen = 5 [5 * 4 = 20 bytes, No Ip Options] </p><p> hle
23、n表示報頭長度20字節(jié),沒有選擇項字段,而之所以要定義頭長度變量,是因為不同包的選擇項字段不同</p><p> diffserv = 0x0 (0)</p><p> Diffserv表示區(qū)分服務(wù)體系結(jié)構(gòu),它基于類的QoS技術(shù),保證IP的服務(wù)質(zhì)量 </p><p> 0000 00.. = [0] code point: not set</p>
24、<p> .... ..0. = [0] ECN bit: not set</p><p> .... ...0 = [0] ECE bit: not set</p><p> length = 52 </p><p> length報文總長度</p><p> id = 0x353E (13630)</p>
25、;<p> ID表示該數(shù)據(jù)包的標(biāo)識符</p><p> flags = 0x2 (2) </p><p> Flags表示該數(shù)據(jù)包是否分片,第二位是不分片位(DF),當(dāng)DF被設(shè)置被設(shè)置為1時,表示路由器不能對報文進行分片處理。第三位表示還有后繼分片(MF),當(dāng)路由器對報文進行分片時,除了最后一個分片的MF位設(shè)置為0外,其他所有分片的MF位均設(shè)置1,以便接收者直到收到MF
26、位為0的分片為止。</p><p> 0.. = [0] reserved 預(yù)留</p><p> .1. = [1] DF: do not fragment: set</p><p> ..0 = [0] MF: more fragments: not set </p><p> offset = 0 </p><
27、;p> Offset表示分片偏移,由于該數(shù)據(jù)包未分片,所以分片偏移為0</p><p> ttl = 64 [time to live] </p><p> type = 6 [next: Transmission Control] </p><p> Type表示優(yōu)先權(quán)和服務(wù)類型TOS,其中優(yōu)先權(quán)分別為:000:路由0
28、01:優(yōu)先級</p><p> 010:立即011:火速100:火速覆蓋101:緊急110:互聯(lián)網(wǎng)絡(luò)控制</p><p> 111:網(wǎng)絡(luò)控制,該數(shù)據(jù)包的優(yōu)先權(quán)值為110,表示互聯(lián)網(wǎng)控制優(yōu)先;其服務(wù)類型是傳輸控制</p><p> checksum = 0x6D7C (28028) [correct]</p><p> Ch
29、ecksum表示頭校驗和,以及給出的判斷</p><p> source = 10.96.122.137</p><p> destination = 106.120.168.168</p><p><b> 第六節(jié) 錯誤調(diào)試</b></p><p> 6.1 數(shù)據(jù)庫連接錯誤</p><p&g
30、t; 6.1.1 解決方案</p><p> 發(fā)現(xiàn)數(shù)據(jù)庫TCPIP沒開</p><p><b> 打開啟用后正常</b></p><p> 6.2 POST亂碼解決方式</p><p> 6.2.1 錯誤表現(xiàn)</p><p><b> 6.2.2解決方案</b>&
31、lt;/p><p> 加上上面的代碼后正常</p><p> 6.3 Socket連接錯誤</p><p> 6.3.1 錯誤表現(xiàn)</p><p> 6.3.2產(chǎn)生錯誤的原因</p><p> 6.3.3 解決方式</p><p> 優(yōu)化Socket連接,并且在數(shù)據(jù)發(fā)送接收完畢后關(guān)閉流。
32、</p><p><b> 第八節(jié) 實驗總結(jié)</b></p><p> 這次的計算機網(wǎng)絡(luò)課程設(shè)計共做了兩個方面的實驗,一個是端口監(jiān)聽,一個是IP包的捕獲與解析。這兩個實驗跟平常電腦的實驗都有關(guān)系,其中端口檢測在以前參加學(xué)校專業(yè)的創(chuàng)意作品賽時作為了該作品的切入點,那時是宏觀的設(shè)計,在這次的課程設(shè)計中進行了實踐,比較有收獲。IP包的捕獲實驗以前在計算機網(wǎng)絡(luò)的課堂上看到
33、了用Wireshark抓包工具進行捕獲,這次的課程設(shè)計相當(dāng)于用Java語言自己寫出一個抓包工具,雖然有很多瑕疵,但還是比較有成就感的。并且這兩部分的實驗,基本上都使用了新的工具,在實踐過程中,學(xué)到了很多相關(guān)工具的知識,現(xiàn)在總結(jié)一下。</p><p> 在端口檢測部分,學(xué)到了幾個異常類對象的使用:</p><p> IOException異常簡介:</p><p>
34、; IOException指發(fā)生 I/O 錯誤時引發(fā)的異常。</p><p> IOException 是使用流、文件和目錄訪問信息時引發(fā)的異常的基類。</p><p> BindException異常類簡介:</p><p> BindException是.net包中的一個類,當(dāng)一個端口是因為被占用而拋出異常,該異常將是BindException的一個實例
35、。</p><p> printStackTrace:</p><p> 在命令行打印異常信息在程序中出錯的位置及原因。</p><p> 在IP包捕獲與解析部分學(xué)會了使用兩個工具,分別為WinPCAP和JnetPcap。winpcap(windows packet capture)是windows平臺下一個免費,公共的網(wǎng)絡(luò)訪問系統(tǒng)。可以為win32應(yīng)用程序提
36、供訪問網(wǎng)絡(luò)底層的能力。它用于windows系統(tǒng)下的直接的網(wǎng)絡(luò)編程。Winpcap提供了一個強大的編程接口,它很容易地在各個操作系統(tǒng)之間進行移植。</p><p> jNetPcap是libpcap的一個Java完整封裝,它通過對接了WinPcap來截獲網(wǎng)卡數(shù)據(jù)包。jNetPcap使用與libpcap相同風(fēng)格的API。libpcap是unix/linux平臺下的網(wǎng)絡(luò)數(shù)據(jù)包捕獲函數(shù)庫,大多數(shù)網(wǎng)絡(luò)監(jiān)控軟件都以它為基礎(chǔ)
37、。</p><p> 使用JNetPcap之前必須在目標(biāo)系統(tǒng)中安裝WinPcap(Windows系統(tǒng)),以提供JNetPcap所需要的鏈接庫。另外要把JNetPcap包和所屬的dll文件都加入到開發(fā)目錄的環(huán)境變量中。</p><p> Pcap類是JNetPcap中最為核心的類,是一個對LibPcap中方法的Java直接映射,提供了取得網(wǎng)卡設(shè)備列表、打開嗅探、設(shè)置過濾器等等必須的工作。
38、</p><p> 有關(guān)于Jnetpcap中PcapIf、packet、protocol包中相關(guān)類方法的詳解參照代碼注釋。</p><p><b> 第九節(jié) 參考資料</b></p><p> [1]Andrew S.Tanenbaum著 潘愛民,徐明偉譯.計算機網(wǎng)絡(luò)(第四版).清華大學(xué)出版社.2006.03.</p>&
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機網(wǎng)絡(luò)課程設(shè)計-- 解析ip數(shù)據(jù)包
- 計算機網(wǎng)絡(luò)課程設(shè)計---ip數(shù)據(jù)包解析報告
- 計算機網(wǎng)絡(luò)課程設(shè)計-監(jiān)控ip包流量
- 計算機網(wǎng)絡(luò)課程設(shè)計報告--監(jiān)控ip包流量
- 計算機網(wǎng)絡(luò)課程設(shè)計---監(jiān)控ip數(shù)據(jù)包流量
- 解析arp數(shù)據(jù)包-計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計---端口掃描工具設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計---端口掃描工具設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 《計算機網(wǎng)絡(luò)課程設(shè)計》
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計
- 計算機網(wǎng)絡(luò)課程設(shè)計---網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包
- 計算機網(wǎng)絡(luò)課程設(shè)計tcp數(shù)據(jù)包
- 計算機網(wǎng)絡(luò)課程設(shè)計--小規(guī)模ip網(wǎng)絡(luò)的建立
- 計算機網(wǎng)絡(luò)課程設(shè)計-掃描正在服務(wù)的tcp端口
評論
0/150
提交評論