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

正文內(nèi)容

網(wǎng)絡(luò)數(shù)據(jù)包的協(xié)議分析程序的設(shè)計開發(fā)畢業(yè)設(shè)計-畢業(yè)設(shè)計(編輯修改稿)

2025-02-24 02:48 本頁面
 

【文章內(nèi)容簡介】 戶選擇用于捕獲數(shù)據(jù)包的網(wǎng)卡。 用戶輸入用于捕獲數(shù)據(jù)包的網(wǎng)卡和過濾規(guī)則。只過濾用戶所關(guān)心的信息 。 程序判斷該網(wǎng)卡所在的網(wǎng)絡(luò)是否為以太網(wǎng), 不是 則中止,是則繼續(xù)。因為本程序只能在共享以太網(wǎng)中進行數(shù)據(jù)捕獲。 編譯用戶設(shè)置的過濾規(guī)則。 開始進行捕獲,并分析數(shù)據(jù),將數(shù)據(jù)顯示給用戶。當(dāng)用戶停止時就結(jié)束程序,否則繼續(xù)捕獲。 第 6 頁 共 23 頁 圖 23 網(wǎng)絡(luò)數(shù)據(jù)包的協(xié)議分析程序 的流程圖 系統(tǒng)實現(xiàn)的關(guān)鍵技術(shù)分析 前面給出了網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序的總體結(jié)構(gòu)、功能模塊和工作流程。要實現(xiàn)程序預(yù)定的功能,就必須解決實現(xiàn)程序的關(guān)鍵技術(shù)。網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析程序要實現(xiàn)的關(guān)鍵技 術(shù)包括:數(shù)據(jù)包捕獲技術(shù)、對 TCP/IP各層基本協(xié)議進行分析的技術(shù)、協(xié)議識別技術(shù)。 數(shù)據(jù)包捕獲技術(shù):本程序要對網(wǎng)絡(luò)中的數(shù)據(jù)進行分析,首先就要將網(wǎng)絡(luò)中的數(shù)據(jù)包捕獲下來。因此實現(xiàn)數(shù)據(jù)包捕獲是本程序設(shè)計的基礎(chǔ)也是首先要解決的技術(shù)問題。要實現(xiàn)共享以太網(wǎng)中的數(shù)據(jù)捕獲,各個平臺有不同的技術(shù)。在 Linux有一個專門為程序員編寫數(shù)據(jù)包捕獲程序而開發(fā)的庫: Libpcap。 Libpcap是用戶態(tài)的數(shù)據(jù)包截獲 API, 具有 獨立 性 和可移植 性 ,支持 BPF過濾機制等。通過調(diào)用Libpcap庫函數(shù) 可以輕易的實現(xiàn)共享以太網(wǎng)中數(shù)據(jù)包的截獲, 而且實時性相當(dāng)?shù)膹?,因?Libpcap是處于用戶態(tài)所以減少了系統(tǒng)的開銷。 Libpcap是一個基于 BPF查找所有可用的網(wǎng)卡 是否是以 太網(wǎng) 編譯并且設(shè)置過濾規(guī)則 開始捕獲數(shù)據(jù) 并分析顯示結(jié)果 結(jié)束程序 用戶中止嗎? 選擇用于捕獲的網(wǎng)卡和過濾規(guī)則 開始 N Y N Y 第 7 頁 共 23 頁 的開放源碼的捕包函數(shù)庫?,F(xiàn)有的大部分 Linux捕包系統(tǒng)都是基于這套函數(shù)庫或者是在它基礎(chǔ)上做一些針對性的改進。 對 TCP/IP各層基本協(xié)議分析的技術(shù):要對 TCP/IP各層的基本協(xié)議進行分析,主要是要對所要分析的協(xié)議有充分的了解,特別是對各種協(xié)議的報頭格式要有深入的了解。對各種協(xié)議進行分析時主要是將報頭中的重要信息顯示給用戶,還有可能對數(shù)據(jù)包的正文信息解碼。 協(xié)議識別技術(shù) : 由于 OSI 的 7 層協(xié)議模型,協(xié)議 數(shù)據(jù)是從上到下封裝后發(fā)送的。對于協(xié)議的識別需要從下至上進行。例如,首先對網(wǎng)絡(luò)層的協(xié)議識別后進行脫去網(wǎng)絡(luò)層協(xié)議頭。將里面的數(shù)據(jù)交給傳輸層分析,這樣一直進行下去直到應(yīng)用層。 應(yīng)用層以下的各種協(xié)議一般都可以通過下一層的協(xié)議中的關(guān)鍵信息來識別。但是應(yīng)用層的協(xié)議種類相當(dāng)多,無法從下層協(xié)議中識別。對于應(yīng)用層協(xié)議識別的方法目前有幾種技術(shù): 基于特征串的應(yīng)用層協(xié)議識別 、 Venus Fast Protocol Recognition、以及端口識別。在本程序中我們采用的是端口識別技術(shù)。端口 識別 的原理是常用協(xié)議使用固定端口來進行通信 。端口識別的優(yōu)點是:簡單、容易實現(xiàn)。缺點是:一些不常用協(xié)議不能被識別,常用協(xié)議修改端口后也無法識別。 3 網(wǎng)絡(luò)數(shù)據(jù)包捕獲模塊的實現(xiàn) 網(wǎng)絡(luò)數(shù)據(jù)包捕獲簡介 網(wǎng)絡(luò)數(shù)據(jù)包截獲一般指通過截獲整個網(wǎng)絡(luò)的所有信息流量,根據(jù)信息源主機,目標(biāo)主機,服務(wù)協(xié)議端口等信息簡單過濾掉不關(guān)心的數(shù)據(jù),再將用戶感興趣的數(shù)據(jù)發(fā)送給更高層的應(yīng)用程序進行分析。一方面要,網(wǎng)絡(luò)截取模塊要能保證截取到所有網(wǎng)絡(luò)上的數(shù)據(jù)包,尤其是檢測到被分片的數(shù)據(jù)包(這可能蘊涵著攻擊)。另方面,數(shù)據(jù)截取模塊截取數(shù)據(jù)包的效率也是很重要的。它直接影響整個入侵檢測系統(tǒng)的運行速度。 從廣義的角度上看,一個包捕獲機制包含三個主要部分:最底層是針對特定操作系統(tǒng)的包捕獲機制,最高層是針對用戶程序的接口,第三部分是包過濾機制。不同的操作系統(tǒng)實現(xiàn)的底層包捕獲機制可能是不一樣的,但從形式上看大同小異。數(shù)據(jù)包常規(guī)的傳輸路徑依次為網(wǎng)卡、設(shè)備驅(qū)動層、數(shù)據(jù)鏈路層、 IP層、傳輸層、最后到達應(yīng)用程序。而數(shù)據(jù)包捕獲機制是在數(shù)據(jù)鏈路層增加一個旁路處理,對發(fā)送和接收到的數(shù)據(jù)包做過濾 /緩沖等相關(guān)處理,最后直接傳遞到應(yīng)用程序。值得注意的是,包捕獲機制并不影響操作系統(tǒng)對數(shù)據(jù)包的網(wǎng)絡(luò)棧處理。對用戶程序而言,包捕獲機制提供 了一個統(tǒng)一的接口,使用戶程序只需要簡單的調(diào)用若干函數(shù)就能獲得所期望的數(shù)據(jù)包。這樣一來,針對特定操作系統(tǒng)的捕獲機制對用戶透明,使用戶程序有比較好的可移植性。包過濾機制是對所捕獲到的數(shù)據(jù)包根據(jù)用戶的要求進行篩選,最終只把滿足過濾條件的數(shù)據(jù)包傳遞給用戶程序。 第 8 頁 共 23 頁 基于 Libpcap 的網(wǎng)絡(luò)數(shù)據(jù)包捕獲的實現(xiàn) Libpcap 安裝 Libpcap提供了系統(tǒng)獨立的用戶級別網(wǎng)絡(luò)數(shù)據(jù)包捕獲接口,并充分考慮到應(yīng)用程序的可移植性。 Libpcap可以在絕大多數(shù)類 unix平臺下工作。在 windows平臺下,一個與 Libpcap很類似的函 數(shù)包 winpcap提供捕獲功能,其官方網(wǎng)站是 Libpcap軟件包可從 載,解壓后依此執(zhí)行下列三條命令即可安裝。 ./configure make make install 但如果希望 Libpcap能在 linux上正常工作,則必須使內(nèi)核支持 “packet” 協(xié)議,也即在編譯內(nèi)核時打開配置選項 CONFIG_PACKET(選項缺省為打 開 )。 Libpcap 中基本的數(shù)據(jù)結(jié)構(gòu)和函數(shù) 主要函數(shù) : int pcap_findalldevs(pcap_if_t *alldevsp, char *errbuf) 功能:枚舉系統(tǒng)所有網(wǎng)絡(luò)設(shè)備的信息 參數(shù): alldevsp : 是 一 個 pcap_if_t 結(jié) 構(gòu) 體 的 指 針 , 如 果 函 數(shù)pcap_findalldevs 函數(shù)執(zhí)行成功,將獲得一個可用網(wǎng)卡的列表,而里面存儲的就是第一個元素的指針。 Errbuf:存儲錯誤信息的字符串。返回值: int,如果返回 0則執(zhí)行成功,錯誤返回 1。 pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf) 功能:設(shè)置一個抓包描述符 參數(shù):其第一個參數(shù)是我們在上一節(jié)中指定的設(shè)備, snaplen 是整形的,它定義了將被 pcap 捕獲的最大字節(jié)數(shù)。當(dāng) promisc 設(shè)為 true 時將置指定接口為混雜模式(然而,當(dāng)它置為 false 時接口仍處于混雜模式的特殊情況也是有可能的)。 to_ms 是讀取時的超時值,單位是毫秒 (如果為 0則一直嗅探直到錯誤發(fā)生,為 1 則不確定 )。最后, ebuf 是一個我們可以存入 任何錯誤信息的字符串(就像上面的 errbuf)。 int pcap_pile(pcap_t *p, struct bpf_program *fp, char *str, int optimize, bpf_u_int32 mask) 功能:編譯過濾規(guī)則 參數(shù):第一個參數(shù)是會話句柄( pcap_t *handle 在前一節(jié)的示例中)。接下 第 9 頁 共 23 頁 來的是我們存儲被編譯的過濾器版本的地址的引用。再接下來的則是表達式本身,存儲在規(guī)定的字符串格式里。再下邊是一個定義表達式是否被優(yōu)化的整形量( 0 為 false, 1為 true,標(biāo)準(zhǔn)規(guī)定)。最后,我們必須指定應(yīng)用此過濾器的網(wǎng)絡(luò)掩碼。函數(shù)返回 1 為失敗,其他的任何值都表明是成功的。 int pcap_setfilter(pcap_t *p, struct bpf_program *fp) 功能:設(shè)置過濾規(guī)則。 參數(shù):這非常直觀,第一個參數(shù)是會話句柄,第二個參數(shù)是被編譯表達式版本的引用(可推測出它與 pcap_pile()的第二個參數(shù)相同)。 int pcap_loop(pcap_t *p, int t, pcap_handler callback, u_char *user) 功能:循環(huán)抓包直到用戶中止。 參數(shù):第一個參數(shù)是會話句柄,接下來是一個整型,它告訴 pcap_loop()在返回前應(yīng)捕獲多少個數(shù)據(jù)包(若為負(fù)值則表示應(yīng)該一直工作直至錯誤發(fā)生)。第三個參數(shù)是回調(diào)函數(shù)的名稱(正像其標(biāo)識符所指,無括號)。最后一個參數(shù)在有些應(yīng)用里有用,但更多時候則置為 NULL。 數(shù)據(jù)結(jié)構(gòu): struct pcap_if{ struct pcap_if *next。 char *name。 char *description。 struct pcap_addr *addresses。 u_int flags。 }。 pcap_if *next。 如果非空,指向鏈的下一個元素。如果為空是鏈的最后一個元素。 char *name。 指向一個字符串,該字符串是傳給 pcap_open_live()函數(shù)的設(shè)備名; char *description。 如果非空,指向一個對設(shè)備的人性化的描述字符串。 pcap_addr *addresses。 指向網(wǎng)卡地址鏈中的第一個元素。 u_int flags。 PCAP_IF_ 網(wǎng) 卡 的 標(biāo) 志 。 現(xiàn) 在 唯 一 可 用 的 標(biāo) 識 是PCAP_IF_LOOKBACK,它被用來標(biāo)識網(wǎng)卡是不是 lookback 網(wǎng)卡。 struct pcap_pkthdr { struct timeval ts。/*time stamp*/ 第 10 頁 共 23 頁 bpf_u_int32 caplen。 /*length of portion present*/ bpf_u_int32 len。 /*length this packet(off wire)*/ }。 timeval ts。 數(shù)據(jù)報時間戳; bpf_u_int32 caplen。 當(dāng)前分片的長度; dpf_u_int32 len。 這個數(shù)據(jù)報的長度; 細節(jié)描述:在 dump 文件 中的每個數(shù)據(jù)報都有這樣一個報頭。它用來處理不同數(shù)據(jù)報網(wǎng)卡的不同報頭問題。 struct pcap_stat { u_int ps_recv。 /* number of packets received */ u_int ps_drop。 /* number of packets dropped */ u_int ps_ifdrop。 /* drops by interface XXX not yet supported */ }。 u_int ps_recv。 接受數(shù)據(jù)報的數(shù)目; u_int ps_drop。 被驅(qū)動程序丟棄的數(shù)據(jù)報的數(shù)目; u_int ps_ifdrop。 被網(wǎng)卡丟棄的數(shù)據(jù)報的數(shù)目; struct pcap_addr{ pcap_addr * next。 sockaddr * addr。 sockaddr * mask。 sockaddr *broadaddr。 sockaddr *dstaddr。 }。 pcap_addr * next。 如果非空,指向鏈表中一個元素的指針;空表示鏈表中的最后一個元素。 sockad
點擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1