freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

局域網(wǎng)監(jiān)聽軟件的設(shè)計與開發(fā)—計算機(論文)-閱讀頁

2024-12-27 09:34本頁面
  

【正文】 一 個 協(xié) 議 程 序 所 填 寫 的NDIS_PROTOCOL_CHARACTERISTICS 表里的派發(fā)函數(shù)指向自己的函數(shù),就能成功的對數(shù)據(jù)包進行攔截。 Winpcap的使用非常方便,但是它 有一個致命的缺陷就是只適用于共享式以太網(wǎng)絡(luò),對于交換式網(wǎng)絡(luò)下的數(shù)據(jù)則無能為力 。 Jpcap 簡介 由于核心 Java API不能直接訪問網(wǎng)絡(luò)底層,因此需要借助一種工具來為 Java和網(wǎng)絡(luò)底層提供一個橋梁。 Jpcap不是一種 純粹的 Java解決方案 , 它依賴本地庫的使用。 Jpcap 的工作原理是 使 用 一個事件模型 讓你對數(shù)據(jù)包進行 處理。 } } 為了捕獲包, 用戶 需要告訴 Jpcap 想用哪個網(wǎng)絡(luò)設(shè)備來監(jiān)聽。這個方法返回一列字符串, 用戶可以 像 如下 的方法 使用它: String[] devices = ()。 選擇一個設(shè)備之后,通過 ()方法 打開它。 Jpcapjpcap = (deviceName, 1028, false, 10000)。既然有了 Jpcap實例,可以調(diào)用 processPacket()或 loopPacket()開始監(jiān)聽了。 如果調(diào)用 processPacket(),那么 Jpcap 將一直捕獲包,直到超過 openDevice中規(guī)定的時限或達到了規(guī)定的最大包數(shù) ; loopPacket()則將一直捕獲包,直到達到最大包數(shù),如果沒有最大數(shù)限制,它將永遠運行下去。 為了執(zhí)行 可用 類,必須確保虛擬機可以找到 Jpcap 的本地庫。. JpcapTip 運用 Jpcap將會使開發(fā)人員在利用 Java開發(fā)網(wǎng)絡(luò)程序的時候,不必過多關(guān)注與底層網(wǎng)絡(luò)的接口復(fù)雜的連接細節(jié),而注重在對 Jpcap簡單而強大接口的使用以及程序界面和功能。 P ac k ag e : J Sn i f f er P ac k ag e : an al y ze r P ac k ag e : s t at P ac k ag e : ui P ac k ag e : g rap h 整個程序都包含在此包中 此包中定義各個協(xié)議的解析類 在此包中定義三個層次數(shù)據(jù)包統(tǒng)計類 實現(xiàn)程序界面的類都包含在此包中 繪制圖形類,如餅狀圖等 圖 5 類結(jié)構(gòu) 設(shè)計步驟 整體規(guī)劃 現(xiàn)在對程序進行如下設(shè)計: ( 1)使用 Eclipse J2SE Swing的圖形用戶界面程序; ( 2)允許多個窗口同時運行,因此用向量來存儲已創(chuàng)建的窗口。 ( 3)將所有截獲的數(shù)據(jù)包用向量存儲,當然定義了數(shù)量上限。 程序運行流程 ( 1)程序的開始 程序主類為 JSniffer,整個程序由此類中的 main()函數(shù)進入,進 行初始化,出現(xiàn)主界面,即 JDFrame 類的實例,然后等待主界面中的事件響應(yīng)。 JDCaptor 類首先調(diào)用 JDCaptureDialog類,這是一個選擇設(shè)備 對 話 框 , 在 JDCaptureDialog 中使用 () 和()獲取設(shè)備,根據(jù)界面選擇設(shè)備,然后使用 openDevice函數(shù)打開設(shè)備,返回 Jpcap對象給調(diào)用它的 JDCaptor 實體。在此線程中使用剛才得到的 Jpcap對象的 processPacket()函數(shù)截獲數(shù)據(jù)包。然后將 packets 傳遞給 analyzer 包中的所有類,即每截獲一個數(shù)據(jù)包,就用所有已經(jīng)定義的 協(xié)議進行分析。當執(zhí)行選擇 table中某一行的事件時,用 tree控件來顯示此數(shù)據(jù)包對應(yīng)于各層的協(xié)議,并用 textarea控件將此數(shù)據(jù)包的內(nèi)容轉(zhuǎn)換為字符串完整的顯示。然后繪制每一層協(xié)議的餅狀圖,餅狀圖動態(tài)更新。 ( 8)指定對象監(jiān)聽 指定對象監(jiān)聽就是使用 JSourceDialog來得到指定監(jiān)聽的主機的 IP 地址,監(jiān)聽內(nèi)容是源 IP 為指定 IP 的數(shù)據(jù)包,如果符合條件則處理,不符合則丟棄。 5 具體實現(xiàn)步驟 使用 Eclipse 創(chuàng)建項目 創(chuàng)建項目 使用 Eclipse JSniffer 工程。 圖 6 創(chuàng)建項目對話框 創(chuàng)建包 在項目“ JSniffer”上單擊右鍵,選擇“新建 包”,在彈出的“新建 Java包 ”對話框中填寫包名為“ analyzer”,在以后的編寫過程中,還需創(chuàng)建“ stat”、“ ui”、“ graph”包,在這就不依依介紹了,創(chuàng)建過程類同“ analyzer”包的創(chuàng)建,如圖7所示。 圖 8 創(chuàng)建類對話框 analyzer 包的設(shè)計 analyzer包的作用 analyzer 包的作用是根據(jù)不同協(xié)議的結(jié)構(gòu)格式設(shè)計相應(yīng)的數(shù)據(jù)包解析類,然后對于傳送給解析類的數(shù)據(jù)包進行相應(yīng)協(xié)議結(jié)構(gòu)的解析,即分析出協(xié)議中各個字段的內(nèi)容。 協(xié)議與類的對應(yīng)關(guān)系如表 2所示。 ( 2) Ether Frame 是主機網(wǎng)絡(luò)層 ( 數(shù)據(jù)鏈路層 ) ,屬于數(shù)據(jù)鏈路層( DATALINK_LAYER) ,在這一層中,定義了主機網(wǎng)絡(luò)層類型( Frame Type)、源 MAC地址( Source MAC)、目的 MAC地址 (Destination MAC),用于最底層數(shù)據(jù)包的解析類。在類中定義一個字符串常量 valueNames 用來存儲 IPv4協(xié)議中所有的字段名;在解析之前首先要判斷所接收的數(shù)據(jù)包是否屬于 IPv4協(xié)議,因此定義函數(shù) isAnalyzable,運用“ instance of”語句判斷接收的數(shù)據(jù)包是否與 jpcap包中定義的 IPPacket類相符合;定義函數(shù) analyze 用于解析數(shù)據(jù)包,其原理也是用 jpcap 包中定義的 IPPacket 類對接收到的數(shù)據(jù)包進行強制轉(zhuǎn)換,然后將 IPPacket類中相應(yīng)的成員賦給相應(yīng)的字段,完成解析。 IPv6提出流( flow)的抽象慨念。 此類同 。 此類同 。 ICMP報文的代碼字段是為了進一步區(qū)分某種類型中的幾種不同的情況;檢驗和用來檢驗整個 ICMP報文 。 ( 7) TCP( Transmission Control Protocol)傳輸控制協(xié)議 和 UDP( User Datagram Protocol)用戶數(shù)據(jù)報協(xié)議 是屬于運輸層的, 運輸層的作用范圍是提供進程之間的邏輯通信,能夠向應(yīng)用層提供運輸服務(wù),而網(wǎng)絡(luò)層( IP 協(xié)議)提供主機之間的邏輯通信 。 TCP 報文段分為首部和數(shù)據(jù)兩部分,首部前 20 字節(jié)是固定的,后面有 4N字節(jié)是根據(jù)需要而增加的,因此 TCP首部的最小長度為 20字節(jié) 。 端口( 16bit)的作用:讓應(yīng)用層的各種應(yīng)用程序都能將其數(shù)據(jù)通過端口向下交付給運輸層,以及讓運輸層知道應(yīng)當將其報文段中的數(shù)據(jù)向上通過端 口交付給應(yīng)用層相應(yīng)的程序 。 ( 9) 此類用于 顯示數(shù)據(jù)包被截獲相關(guān)信息 ,比如捕獲時間和捕獲長度。 在數(shù)據(jù)包統(tǒng)計中,作者將所有截獲的數(shù)據(jù)包按照所屬協(xié)議的層次分別進行統(tǒng)計,則統(tǒng)計類的設(shè)計與層次的分類一致,如表 3所示。 stat 包中各個類的作用與實現(xiàn)方式 ( 1) 此類是一個抽象類,用于定義一些不同層次數(shù)據(jù)包統(tǒng)計類所具有的公共函數(shù),將所有截獲的數(shù)據(jù)包按照所屬協(xié)議的層次分別進行統(tǒng)計,則統(tǒng)計類的設(shè)計與層次的分類一致。 ( 3) 此類是傳輸層的數(shù)據(jù)包統(tǒng)計類,與網(wǎng)絡(luò)層的統(tǒng)計方法類似,在此不再重復(fù),可參考相應(yīng)源程序文件。 ui包的設(shè)計 ui 包的作用 圖 9 開始程序界 面 向 JSniffer 工程中添加 ui 包,步驟與添加 analyzer 包和 stat包一致。該包中將程序主界面分為四個部分,分別用不同的組件去實現(xiàn),它包括菜單欄,工具欄,以及顯示結(jié)果的 JPanel 控件,設(shè)計監(jiān)聽程序界面如圖 9所示。 表 4 組件以及類對照表 序號 組 件 類 ① JFrame JDFrame ② JPanel JDTablePane ③ JTable JDTable ④ JTree JDTableTree ⑤ JTextArea JDTableTextArea ui 包中各個類的作用與實現(xiàn)方式 ( 1) JDFrame 類是程序的主界面,它包括菜單欄,工具欄以及用于顯示監(jiān)聽結(jié)果的 JPanel 控件,在 JPanel 中又分為三個部分,分別用組件 JTable、 JTree、 JTextArea來實現(xiàn),該類中最主要的功能在于添加對菜單和工具欄的事件響應(yīng),進行動態(tài)更新操作,設(shè)置程序在不同的運行狀態(tài)時不同的組件狀態(tài),并用 Java 提供的 方法將相應(yīng)的圖片鑲嵌進程序,增強視覺效應(yīng)。在單擊“開始監(jiān)聽”菜單或者按鈕后會彈出一個選擇設(shè)備對話框,它是由 JDCaptureDialog 類來實現(xiàn)。在確定所選擇的設(shè)備后,還可以通過設(shè)定如何截取數(shù)據(jù)包,是只截取數(shù)據(jù)包頭還是截取整個數(shù)據(jù)包。 選擇設(shè)備對話框如圖 10所示。對于監(jiān)聽結(jié)果的顯示是由三 個部分組成的,即 JTable組件自動更新顯示截獲并解析后的每一條數(shù)據(jù)包,在選定某一條數(shù)據(jù)包后, JTree組件顯示這個數(shù)據(jù)包具備的全部協(xié)議的協(xié)議頭部, JTextArea組件顯示這個數(shù)據(jù)包的內(nèi)容。該類主要功能是設(shè)置表格中顯示的內(nèi)容,由 setTableView 函數(shù)來實現(xiàn); 當有新數(shù)據(jù)包解析完后進行插入,由 fireTableChanged 函數(shù)來實現(xiàn)。 Jtable 是 JavaSwing 中最復(fù)雜的組件之一,在本程序中作者還定義了JDTableRender、 TableMap 和 TableSorter 三個類用來輔助 JDTable 類的實現(xiàn),因為這三個都編寫成通用類,屬于 J2SESwing 的界面編程技巧與網(wǎng)絡(luò)監(jiān)聽沒有太大關(guān)系,因此這里不再介紹,可查看源程序文件“ 、 和 ”。 analyzePacket 函數(shù)實現(xiàn)了將一個數(shù)據(jù)包分解然后構(gòu)造樹的過程。 圖 12 JDTableTree顯示圖 ( 6) JDTableTextArea 類所實現(xiàn)的功能是在選擇某一條數(shù)據(jù)包后,在其中顯示此數(shù)據(jù)包的內(nèi)容。 TextArea 中顯示的結(jié)果如圖 13所示。 JDStatFrame 類就是其中一個實現(xiàn)統(tǒng)計結(jié)果顯示的類,它是一個抽象類。因此在JDStatFrame 類中定義了實現(xiàn)統(tǒng)計結(jié)果窗口所需要的公用函數(shù)。作者 將 PieGraph類編寫成一個通用類,與網(wǎng)絡(luò)監(jiān)聽沒有太大的關(guān)系,因此這里不介紹 PieGraph類的實現(xiàn),可查看源文件“ ”。 圖 14 統(tǒng)計顯示圖 ( 9) JSourceDialog 類的功能是在進行指定對象監(jiān)聽的時候,彈出對話框,接受用戶輸入要指定對象的 IP 地址,并對輸入的地址進行正確性檢驗。若正確則將此地址轉(zhuǎn)換為字符串,然后再調(diào)用 analyzer 包中的分析類進行指定 IP 地址的分析。 圖 15 指定對象監(jiān)聽顯示圖 ui 包中 graph包的作用 此包中包含兩個類( ),這兩個類都是通用類,屬于 J2SESwing的界面編程技巧,與網(wǎng)絡(luò)監(jiān)聽沒有太大關(guān)系,在這只是調(diào)用 JAVA中這個方法來顯示餅狀圖和曲線圖,因此這里不再介紹,可 查看源程序文件。整個程序是一個名為 JSniffer 的工程,所以所有的代碼都包含在“ JSniffer”包中。 外部各個類的作用與實現(xiàn)方式 ( 1) JDCaptor 類是整個程序的關(guān)鍵,它相當于一個數(shù)據(jù)包截獲器。 JDCaptor 類中的函數(shù)大部分都是對監(jiān)聽線程的操作,包括開啟線程、停止線程、暫時停止線程和繼續(xù)線程,并完成了對文件進行保存和打開的操作等等。 JDPacketAnalyzerLoader 類將所有“ analyzer”包中定義的所有的協(xié)議解析類存儲到一個向量中,在截獲一個數(shù)據(jù)包后,利用此向量對數(shù)據(jù)包進行解析。 ( 4) JSniffer 類是程序的主類,在此類中主函數(shù)通過調(diào)用函數(shù) openNewWindow啟動主界面。為了支持多個界面同時運行,在類中定義一個 frame向量,每創(chuàng)建一個主界面就將其加入到向量中。 6 測試與分析 測試的目的 軟件測試 是 軟件開發(fā) 過程的重要組成部分,是用來確認一個 程序 的品質(zhì) 和 性能是否符合開發(fā)之前所提出的一些要求 , 是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。 對 軟件 測試的結(jié)果 由 以下 幾個方面來衡量的: ( 1)該軟件是否能 在正確的時間用正確的方法把一個工作做正確 ; ( 2) 符合一些應(yīng)用標準的要求,比如 用戶的操作習(xí)慣、 界面的友好狀況等等; ( 3)軟件是否 達到了最開始所設(shè)定的要求 和代碼的規(guī)范程度。 ( 1)單元測試 單元測試是 緊接在編碼之后 的,是 集中對用源代碼實現(xiàn)的每一個程序單元進行測試,檢查各個程序模塊是否正確地實現(xiàn)了規(guī)定的功能。 對 analyzer 和 stat包進行測試時 ,作者首先進行一個總體的測試, 在完全不考慮程序內(nèi)部結(jié)構(gòu)和特性的情況下,在程序接口進行測試,它只檢查程序功能是否按照需求規(guī)格 來運行 ,程序是否能適當?shù)亟邮蛰斎?數(shù)據(jù) 而產(chǎn)生正確的輸出信息 。在測試程序的過程中設(shè)置不同斷點,并將程序處于運行狀態(tài),當運行到斷點時, Eclipse 等等,以次可以判斷程序是否是 按照作者預(yù)期的要求在運行,若發(fā)生錯誤或沒有按照要求運行,開發(fā)人員將對源代碼進行一定的修改后再進行調(diào)試,所以在編寫該軟件時,修改和調(diào)試操作是交替進行的
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1