• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      TCP/IP協(xié)議分析器的設(shè)計與實現(xiàn)

      2016-05-30 13:43:23武焱袁焊忠席振元
      關(guān)鍵詞:數(shù)據(jù)分析

      武焱 袁焊忠 席振元

      摘 要:在當(dāng)今計算機網(wǎng)絡(luò)無處不在的時代,網(wǎng)絡(luò)攻擊時刻威協(xié)著我們所處局域網(wǎng)絡(luò)的安全。為了確保網(wǎng)絡(luò)的安全性,就要對網(wǎng)絡(luò)交互的數(shù)據(jù)包進行分析。本文提出了TCP/IP協(xié)議分析器的設(shè)計開發(fā)方案,并通過Qt Creator和C++編程實現(xiàn)。該分析器能夠捕獲網(wǎng)絡(luò)數(shù)據(jù)包,并根據(jù)網(wǎng)絡(luò)協(xié)議格式對數(shù)據(jù)進行解析,從而為進一步分析網(wǎng)絡(luò)系統(tǒng)的安全性提供依據(jù)。

      關(guān)鍵詞:網(wǎng)絡(luò)數(shù)據(jù)包;TCP/IP協(xié)議;數(shù)據(jù)分析

      1 系統(tǒng)需求分析

      本系統(tǒng)主要功能需求有以下幾項:

      ①具備網(wǎng)絡(luò)數(shù)據(jù)包捕獲的參數(shù)設(shè)置: 在進行數(shù)據(jù)捕獲之前要進行協(xié)議類型、MAC地址、IP地址等參數(shù)的設(shè)置,滿足用戶的一些常規(guī)需求,保證用戶使用系統(tǒng)的合理性。

      ②能夠捕獲到本機所有的網(wǎng)絡(luò)數(shù)據(jù)包:通過本系統(tǒng)可以對網(wǎng)絡(luò)上的數(shù)據(jù)包進行捕獲,包括ICMP、DNS、ARP、RARP等一些網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)包的捕獲,讓用戶通過本系統(tǒng)能夠捕獲到有用的數(shù)據(jù)包。

      ③能正確地對捕獲到的網(wǎng)絡(luò)數(shù)據(jù)包進行網(wǎng)絡(luò)協(xié)議分析:在捕獲到網(wǎng)絡(luò)數(shù)據(jù)包后能夠?qū)W(wǎng)絡(luò)數(shù)據(jù)包進行包結(jié)構(gòu)分析,對數(shù)據(jù)鏈路層數(shù)據(jù)按照幀格式進行分析,對網(wǎng)絡(luò)層的IP數(shù)據(jù)報的分析,對傳輸層TCP和UDP的頭格式進行分析,對應(yīng)用層協(xié)議進行分析。

      ④能夠把捕獲到的網(wǎng)絡(luò)數(shù)據(jù)包保存到當(dāng)?shù)匚募校涸谟脩舻氖褂眠^程中,可能需要對捕獲到的網(wǎng)絡(luò)數(shù)據(jù)包進行存儲,那么需要滿足用戶對網(wǎng)絡(luò)數(shù)據(jù)包的存儲功能,讓用戶能夠更靈活地使用本系統(tǒng)。

      ⑤能夠打開已經(jīng)捕獲到的網(wǎng)絡(luò)數(shù)據(jù)文件并進行網(wǎng)絡(luò)協(xié)議分析:能夠滿足用戶打開已經(jīng)保存的網(wǎng)絡(luò)數(shù)據(jù)文件,并進行網(wǎng)絡(luò)協(xié)議分析,這樣用戶就能隨時隨地對以前的網(wǎng)絡(luò)數(shù)據(jù)進行協(xié)議分析了。

      ⑥能統(tǒng)計當(dāng)前所有網(wǎng)絡(luò)接口的網(wǎng)絡(luò)數(shù)據(jù)包:通過這個功能,用戶可以查看當(dāng)前網(wǎng)絡(luò)接口的數(shù)據(jù)包數(shù)量和每秒通過的數(shù)據(jù)量,用戶可以清晰地掌握當(dāng)前網(wǎng)絡(luò)接口通過數(shù)據(jù)包的狀況,有助于用戶對網(wǎng)絡(luò)接口的檢測。

      2 總體設(shè)計

      2.1系統(tǒng)總體模塊設(shè)計

      通過系統(tǒng)需求分析可以將網(wǎng)絡(luò)協(xié)議分析器分為四大主要功能模塊,分別為文件存儲與讀取模塊、抓包參數(shù)設(shè)置模塊、數(shù)據(jù)包捕獲模塊和數(shù)據(jù)包分析模塊。這些模塊詳細功能如下:

      ①文件存儲與讀取模塊:通過捕獲網(wǎng)絡(luò)數(shù)據(jù)包,把其存儲到文件中,有利于以后對網(wǎng)絡(luò)數(shù)據(jù)包的分析;讀取已經(jīng)捕獲到并存儲到文件中的數(shù)據(jù)包,并進行協(xié)議分析。

      ②抓包參數(shù)設(shè)置模塊:通過配置抓包參數(shù),來確定捕獲數(shù)據(jù)包的類型,可以指定捕獲網(wǎng)絡(luò)數(shù)據(jù)包的MAC地址和網(wǎng)絡(luò)地址,并能夠?qū)W(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)數(shù)據(jù)包大小進行設(shè)置。

      ③數(shù)據(jù)包捕獲模塊:通過配置的抓包參數(shù)進行數(shù)據(jù)包的捕獲,在程序運行的過程中,會將捕獲到的數(shù)據(jù)包以鏈表的形式存儲起來,以供下一步的分析。

      ④數(shù)據(jù)包分析模塊:根據(jù)捕獲到的數(shù)據(jù)包進行各層協(xié)議分析,將分析的結(jié)果以可視化的界面形式展示給用戶,讓用戶能夠看清每層協(xié)議的格式和數(shù)據(jù)包數(shù)據(jù)部分內(nèi)容。

      系統(tǒng)功能模塊圖如圖1所示:

      2.2 軟件開發(fā)平臺

      本系統(tǒng)開發(fā)平臺是一般的PC機,使用Windows 8版本。因為本系統(tǒng)沒有涉及到數(shù)據(jù)庫所以就沒有使用數(shù)據(jù)庫。程序開發(fā)使用的編程環(huán)境是Qt 5.4.1中文版,并且opensource使用的版本是Qt Creator 3.3.1。用到的數(shù)據(jù)包捕獲函數(shù)庫為WinPcap,這個函數(shù)庫主要運行在操作系統(tǒng)的底層,所以使用這個函數(shù)庫會大大提升本系統(tǒng)的運行效率,尤其在大量循環(huán)捕獲網(wǎng)絡(luò)數(shù)據(jù)包的時候,優(yōu)勢就愈發(fā)明顯。編程工具Qt Creator具有很好的跨平臺性能,可以很輕松的把本系統(tǒng)移植到Linux環(huán)境的系統(tǒng)中去。

      3 詳細設(shè)計

      系統(tǒng)中各個功能模塊的界面是用Qt Designer來設(shè)計的,它提供可視化的界面操作,通過拖動控件來實現(xiàn)我們想要的界面效果,方便高效。Qt提供的信號與槽的機制對邏輯功能的編程更加方便。根據(jù)模塊所需要實現(xiàn)的功能,編寫代碼,最終實現(xiàn)系統(tǒng)的整體功能。

      3.1 協(xié)議頭結(jié)構(gòu)設(shè)計

      通過對協(xié)議頭結(jié)構(gòu)體的設(shè)計,幫助我們完成網(wǎng)絡(luò)數(shù)據(jù)包的解析,將定義的結(jié)構(gòu)體與捕獲到的網(wǎng)絡(luò)數(shù)據(jù)包進行匹配,把相應(yīng)的字段進行處理,從而分析出網(wǎng)絡(luò)協(xié)議頭格式,完成對網(wǎng)絡(luò)協(xié)議的分析。

      設(shè)計協(xié)議頭結(jié)構(gòu)體的時候需要注意以下一些事項:①明確網(wǎng)絡(luò)數(shù)據(jù)包的結(jié)構(gòu);②清楚網(wǎng)絡(luò)數(shù)據(jù)包捕獲的方法;③明確各層協(xié)議頭數(shù)據(jù)每個字節(jié)或每個字段的含義;④定義對應(yīng)的結(jié)構(gòu)體用來解析網(wǎng)絡(luò)協(xié)議;⑤把分析的結(jié)果以可視化的方式顯示在界面上。

      這個環(huán)節(jié)是整個系統(tǒng)中的一個重點,不管哪里出現(xiàn)任何差錯,都將導(dǎo)致最終對網(wǎng)絡(luò)協(xié)議的分析出現(xiàn)錯誤,所以在對網(wǎng)絡(luò)協(xié)議頭結(jié)構(gòu)體設(shè)計的時候要認真細致,確保結(jié)構(gòu)體里面的字段與網(wǎng)絡(luò)協(xié)議的字段能夠一一對應(yīng),保證對網(wǎng)絡(luò)協(xié)議分析的正確性。

      通過對TCP/IP網(wǎng)絡(luò)體系各層協(xié)議格式的分析,本系統(tǒng)定義了以下的結(jié)構(gòu)體表:數(shù)據(jù)鏈路層幀首部結(jié)構(gòu)體表(_ETHERNET_HEADER)、ARP首部結(jié)構(gòu)體表(_ARP_HEADER)、IP首部結(jié)構(gòu)體表(_IP_HEADER)、IPv6首部結(jié)構(gòu)體表(_IP6_HEADER)、TCP首部結(jié)構(gòu)體表(_TCP_HEADER)、UDP首部結(jié)構(gòu)體表(_UDP_HEADER)、ICMP首部結(jié)構(gòu)體表(_ICMP_HEADER)。

      3.2 算法概要

      抓包模塊的程序流程圖如圖2所示。在對抓包參數(shù)設(shè)置完點擊確定的時候,將選擇的每一項按照網(wǎng)絡(luò)數(shù)據(jù)包過濾器過濾規(guī)則進行處理,轉(zhuǎn)化為字符串模式并通過調(diào)用相應(yīng)的接口函數(shù),對過濾條件進行編譯和設(shè)置,完成對抓包參數(shù)的設(shè)計。

      當(dāng)捕獲到網(wǎng)絡(luò)數(shù)據(jù)包時,這時可以選擇一個想要分析的數(shù)據(jù)包并對數(shù)據(jù)包進行解析。這里用到數(shù)據(jù)包分析算法,算法中根據(jù)每層協(xié)議的協(xié)議類型對數(shù)據(jù)包進行解析,然后判斷下一層協(xié)議,依次解析,直到最后一層協(xié)議。

      在系統(tǒng)使用的過程中,可能需要保存數(shù)據(jù)包,那么這里就會有數(shù)據(jù)包保存的算法。代碼中做這樣的處理:每當(dāng)有數(shù)據(jù)包到來都會把數(shù)據(jù)包追加到指定的文件中,當(dāng)用戶需要保存數(shù)據(jù)包的時候,只需要將數(shù)據(jù)包臨時文件拷貝到指定的目錄即可。

      通常會對已經(jīng)保存的數(shù)據(jù)包進行讀操作,這樣我們就會有數(shù)據(jù)包文件的讀取功能。這個功能的算法使用標(biāo)準C語言的二進制讀取文件的方法,將文件一個字符一個字符地讀取出來,并分離每一個數(shù)據(jù)包,并對數(shù)據(jù)包進行相應(yīng)的處理。

      4 系統(tǒng)的編碼

      4.1 主要函數(shù)

      此處列出了主要函數(shù),具體程序代碼省略。

      ①捕獲網(wǎng)絡(luò)數(shù)據(jù)包函數(shù)

      int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)

      函數(shù)返回值:成功返回0,失敗返回負數(shù)。

      參數(shù)描述:p: Libpcap句柄,cnt: 指定捕獲的數(shù)據(jù)包個數(shù),-1代表無限個,callback: 回調(diào)函數(shù),可在此函數(shù)中對數(shù)據(jù)包進行處理,user: 表示往回調(diào)函數(shù)傳的參數(shù)。

      ②打開存儲文件函數(shù)

      pcap_dumper_t *pcap_dump_open(pcap_t *p, const char *filename)

      函數(shù)返回值:成功返回一個文件句柄,失敗返回NULL。

      參數(shù)描述:p: 表示一個Libpcap句柄,filename: 文件名。

      函數(shù)功能:打開一個文件,并準備向其寫入網(wǎng)絡(luò)數(shù)據(jù)包。

      ③IP協(xié)議分析函數(shù)

      void ethernet_protocol_IPpacket (LinkList p)

      函數(shù)返回值:無返回值。

      參數(shù)描述:p: LinkList類型的鏈表節(jié)點指針。

      ④TCP協(xié)議分析

      void ethernet_protocol_TCPpacket (LinkList p, bool isIP6)

      函數(shù)返回值:無返回值。

      參數(shù)描述:p: LinkList類型的鏈表節(jié)點指針,isIP6: 是否為IPv6數(shù)據(jù)包。

      4.2 數(shù)據(jù)包結(jié)構(gòu)分析結(jié)果顯示

      在數(shù)據(jù)包成功捕獲后,選擇要解析的數(shù)據(jù)包進行數(shù)據(jù)包的解析,數(shù)據(jù)包協(xié)議分析界面如圖3所示。在主窗口的右上方有一個表格,里面顯示捕獲到的每一個數(shù)據(jù)包的基本信息,如果要對其中的一個數(shù)據(jù)包進行協(xié)議分析,那么需要點擊要分析的那個數(shù)據(jù)包,協(xié)議分析的結(jié)果會在左側(cè)的樹形列表中顯示出來,下面窗口中則顯示數(shù)據(jù)包的原始數(shù)據(jù)和數(shù)據(jù)包數(shù)據(jù)。

      5 結(jié)束語

      本系統(tǒng)實現(xiàn)了對網(wǎng)絡(luò)數(shù)據(jù)抓包以及對數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層等各層協(xié)議分析。在對網(wǎng)絡(luò)數(shù)據(jù)捕獲中,主要用到了操作系統(tǒng)底層的WinPcap函數(shù)庫,在大量捕獲網(wǎng)絡(luò)數(shù)據(jù)包時系統(tǒng)運行效率高;使用的編程工具是能夠跨平臺的Qt Creator,具有良好的可移植性和跨平臺性。應(yīng)用該系統(tǒng)能夠捕獲到網(wǎng)絡(luò)上交互的全部數(shù)據(jù)包,并把數(shù)據(jù)包的內(nèi)容顯示給用戶,把每層協(xié)議的協(xié)議頭按照協(xié)議格式解析,讓用戶更清楚地知道當(dāng)前網(wǎng)絡(luò)的網(wǎng)絡(luò)數(shù)據(jù)交互狀態(tài),進一步分析網(wǎng)絡(luò)系統(tǒng)的安全性。

      參考文獻:

      [1]劉文濤編著.網(wǎng)絡(luò)安全開發(fā)包詳解[M].電子工業(yè)出版社,2005.10:20-30.

      [2]嚴蔚敏,吳偉民編著.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].清華大學(xué)出版社,1997.4:55-60.

      [3]殷人昆,鄭人杰,馬素霞等編著.實用軟件工程[M].第三版.清華大學(xué)出版社,2011年.

      [4]明日科技編著.Visual C++從入門到精通[M].第三版.清華大學(xué)出版社,2012年9月:3-31.

      [5]Bruce Eckel,Chuck Allison編著.C++編程思想[M].劉宗田,袁兆山等譯.機械工業(yè)出版社,2011年7月:52-70.

      [6]陸文周編著.QT5開發(fā)及實例[M].電子工業(yè)出版社,2014年1月:11-89.

      [7]布蘭切特,薩默菲爾德編著.C++GUI Qt4編程[M].第二版,閆鋒欣等譯.電子工業(yè)出版社,2013年5月:21-33.

      [8]Brian W.Kernighan,Dennis M.Ritchie編著.C程序設(shè)計語言[M].第二版.機械工業(yè)出版社,2004年1月:30-60.

      [9]W.Richard Stevens編著.TCP_IP協(xié)議詳解:卷一[M].機械工業(yè)出版社,2005年7月:37-45.

      [10]Gary R. Wright,W. Richard Stevens編著.TCP_IP協(xié)議詳解:卷二[M].機械工業(yè)出版社,2001年12月:28-67.

      基金項目:

      國家級大學(xué)生創(chuàng)新訓(xùn)練項目(201335)。

      猜你喜歡
      數(shù)據(jù)分析
      電子物證檢驗的數(shù)據(jù)分析與信息應(yīng)用研究
      基于matlab曲線擬合的數(shù)據(jù)預(yù)測分析
      商情(2016年40期)2016-11-28 11:28:07
      分眾媒體趨勢下場景營銷的商業(yè)前景
      商(2016年32期)2016-11-24 17:39:41
      佛山某給水管線控制測量探討
      科技資訊(2016年18期)2016-11-15 18:05:53
      SPSS在環(huán)境地球化學(xué)中的應(yīng)用
      考試周刊(2016年84期)2016-11-11 23:57:34
      大數(shù)據(jù)時代高校數(shù)據(jù)管理的思考
      科技視界(2016年18期)2016-11-03 22:51:40
      我校如何利用體育大課間活動解決男生引體向上這個薄弱環(huán)節(jié)
      體育時空(2016年8期)2016-10-25 18:02:39
      Excel電子表格在財務(wù)日常工作中的應(yīng)用
      淺析大數(shù)據(jù)時代背景下的市場營銷策略
      新常態(tài)下集團公司內(nèi)部審計工作研究
      中國市場(2016年36期)2016-10-19 04:31:23
      桃源县| 临西县| 基隆市| 达孜县| 崇信县| 永宁县| 金湖县| 广灵县| 道孚县| 博白县| 本溪| 灵丘县| 葫芦岛市| 喀喇沁旗| 于田县| 奉贤区| 根河市| 汉中市| 株洲县| 汕头市| 高要市| 丰县| 绥芬河市| 额济纳旗| 阿坝县| 凤阳县| 阳江市| 肥西县| 德令哈市| 利辛县| 乌兰察布市| 滕州市| 威海市| 九江市| 都兰县| 台安县| 久治县| 海盐县| 凤城市| 江油市| 定日县|