【正文】
陜西理工學(xué)院畢業(yè)設(shè)計(jì)第 17 頁 共 65 頁CString GetDataLen()。//數(shù)據(jù)長度CString GetData()。//數(shù)據(jù)值private:CString GetStr(unsigned int nNum,unsigned char * pData = NULL,bool nFlag = true)。CString GetBool(bool nFlag)。}。 UDP協(xié)議分析類的設(shè)計(jì)UDP 協(xié)議是一個(gè)無連接協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,也不使用擁塞控制、不保證可靠交付。依據(jù) UDP 報(bào)文格式在程序中聲明 UDP 報(bào)頭以及進(jìn)行類的設(shè)計(jì),程序如下:class CUDPPacket //UDP 層數(shù)據(jù)包類{private:unsigned int m_uSrcPort。//源端口unsigned int m_uDestPort。//目的端口int m_nTotalLen。//總長int m_nCheckSum。//校驗(yàn)和unsigned int m_uDataLen。char *m_pData。public:CUDPPacket()。virtual ~CUDPPacket()。CUDPPacket(unsigned char *buf,int buflen)。public:CString GetSrcPort()。CString GetDestPort()。CString GetTotalLen()。//總長CString GetCheckSum()。//校驗(yàn)和CString GetDataLen()。CString GetData()。private:CString GetInt(int nNumm,char *pData = NULL,bool nFlag =true)。}。 系統(tǒng)中變量函數(shù)的設(shè)計(jì)private:pcap_if_t *m_pDevice。//所選中的網(wǎng)卡地址bool m_bFlag。//查看是否開始CArrayconst struct pcap_pkthdr *,const struct pcap_pkthdr * m_pktHeaders。CArrayconst u_char *,const u_char * m_pktDatas。 long m_lArpCount。 //arp 的總數(shù)long m_lOtherCount。 //其他數(shù)據(jù)包的數(shù)量long m_lTcpCount。 // tcp 的總數(shù)long m_lTotalCount。 //數(shù)據(jù)包的總數(shù)long m_lUdpCount。 //udp 的總數(shù)private:bool LoadFilterString( )。 陜西理工學(xué)院畢業(yè)設(shè)計(jì)第 18 頁 共 65 頁bool createXML(CString strFileName)。 //創(chuàng)建 xml 文件void insertNode(FILE *pFile,const struct如圖 所示,通過 MFC 框架,構(gòu)建的 CapturePacketDlg 類,實(shí)現(xiàn)該軟件的主界面對話框。整個(gè)界面主要為 5 個(gè)部分:(1)頂部的菜單欄:主要有四個(gè)項(xiàng)目:操作項(xiàng)目的功能是啟動(dòng)和停止抓包以及退出;設(shè)置項(xiàng)目的功能是對網(wǎng)卡進(jìn)行配置;數(shù)據(jù)管理項(xiàng)目的功能是對數(shù)據(jù)導(dǎo)出保存,幫助這是該介紹該軟件的作用。(2)中部的列表信息欄:主要功能是將從開始抓包到結(jié)束抓包期間內(nèi),所有捕獲到的數(shù)據(jù)包各類信息解析后用表的形式顯示出來,方便查看。(3)左下角數(shù)據(jù)包樹形欄,主要功能是將所選中的數(shù)據(jù)包的數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層這三層的各類信息,同個(gè)樹形表的形式顯示出來,方便具體查看。(4)右中部的提示欄,主要功能是將選中數(shù)據(jù)包的源 MAC 地址、目的 MAC 地址信息和協(xié)議號顯示出來。(5)右下角的統(tǒng)計(jì)欄,主要功能是將從該軟件抓包開始到抓包結(jié)束期間內(nèi),所有捕獲的數(shù)據(jù)包按著所設(shè)定的不同協(xié)議類型的數(shù)據(jù)包進(jìn)行分別統(tǒng)計(jì),計(jì)算數(shù)據(jù)包的總數(shù)量和各種協(xié)議數(shù)據(jù)包的數(shù)量,并顯示出來。圖 主界面圖 陜西理工學(xué)院畢業(yè)設(shè)計(jì)第 19 頁 共 65 頁5 軟件測試通過連接網(wǎng)絡(luò),產(chǎn)生數(shù)據(jù)包,啟動(dòng)系統(tǒng)進(jìn)行捕獲數(shù)據(jù)包,觀察系統(tǒng)是否能夠順利的捕獲到上網(wǎng)時(shí)產(chǎn)生的數(shù)據(jù)包,并解析出所需要的數(shù)據(jù)信息。如圖 所示,為該軟件進(jìn)行網(wǎng)卡調(diào)試選擇,點(diǎn)擊菜單欄上的設(shè)置,在下拉列表中選擇網(wǎng)卡配置通過選定網(wǎng)卡,以便抓包的進(jìn)行。圖 設(shè)置網(wǎng)卡圖如圖 所示,為軟件進(jìn)行抓包的過程,中部列表項(xiàng)顯示的是在這一時(shí)段捕獲的所有數(shù)據(jù)包,而右下角的統(tǒng)計(jì)量顯示的是這些數(shù)據(jù)包的類型和數(shù)量。圖 開始抓包圖如圖 所示,為抓包后選中其中一個(gè)數(shù)據(jù)包,顯示選中包傳輸層、網(wǎng)絡(luò)層、傳輸層的數(shù)據(jù)信息。 陜西理工學(xué)院畢業(yè)設(shè)計(jì)第 20 頁 共 65 頁圖 選中查看數(shù)據(jù)包圖如圖 所示,為軟件導(dǎo)出數(shù)據(jù)信息的過程。圖 數(shù)據(jù)包信息的導(dǎo)出圖根據(jù)以上展示,該軟件成功的對所傳輸?shù)臄?shù)據(jù)包進(jìn)行了及時(shí)的捕獲和解析,測試通過。 陜西理工學(xué)院畢業(yè)設(shè)計(jì)第 21 頁 共 65 頁總 結(jié)(1)體會通過本次課題的研究,對于網(wǎng)絡(luò)知識有了更深更進(jìn)一步的認(rèn)識。以往的項(xiàng)目經(jīng)驗(yàn)比較少,對于在編程上還存在著很大的不足之處,這也是以后應(yīng)該予以重視的地方,理論還需要聯(lián)系了實(shí)際。并且認(rèn)識到實(shí)際當(dāng)中的設(shè)計(jì)和思想上與的課程設(shè)計(jì)是有很大的差別的。實(shí)際涉及到生產(chǎn)的設(shè)計(jì)是嚴(yán)謹(jǐn)?shù)?、科學(xué)的、有根據(jù)的、完整的。但我們所做的課程設(shè)計(jì)是不完整的、不嚴(yán)謹(jǐn)?shù)?、是沒有考慮經(jīng)濟(jì)和使用價(jià)值為基礎(chǔ)的。而這一點(diǎn)恰恰是實(shí)際生活設(shè)計(jì)之中必須考慮的,也是很重要的。設(shè)計(jì)的目的就是經(jīng)濟(jì)又適用,達(dá)到實(shí)際生產(chǎn)的要求和目的,能更大更快的為使用廠家創(chuàng)造經(jīng)濟(jì)效益。(2)成果和不足在設(shè)計(jì)中我主要是完成了對于網(wǎng)卡信息的獲取和網(wǎng)絡(luò)數(shù)據(jù)包捕獲與分析等功能的實(shí)現(xiàn),其中參考了一些網(wǎng)絡(luò)上的教程和書籍,通過閱讀和實(shí)踐來修改和學(xué)習(xí),最終通過掃描可用網(wǎng)絡(luò)接口并打開網(wǎng)卡接口來獲取到網(wǎng)卡的信息,然后再通過更改設(shè)置網(wǎng)卡的混雜模式后調(diào)用 Winpcap 中的函數(shù)來實(shí)現(xiàn)對于網(wǎng)絡(luò)數(shù)據(jù)包的捕獲并且分析顯示出來。從目前的完成情況來看這些功能已經(jīng)實(shí)現(xiàn),不過還是感覺程序稍微顯得功能少了些。系統(tǒng)還存在一些不足之處,比如說,沒能實(shí)現(xiàn)對于數(shù)據(jù)包的阻塞拋棄這個(gè)功能感覺比較遺憾。關(guān)于這幾個(gè)問題我會再繼續(xù)爭取做的更好更具有使用意義。最后,這是第一次單獨(dú)完成如此大量代碼的編程,由于經(jīng)驗(yàn)欠缺或者是其他方面的一些原因,這次的項(xiàng)目開發(fā)也存在一些不足,如程序邏輯比較混亂,一些簡單的問題要通過一堆無用代碼才能實(shí)現(xiàn),不能以簡潔有效的方式解決,在以后的項(xiàng)目開發(fā)過程中我會逐漸解決這些不足之處。 陜西理工學(xué)院畢業(yè)設(shè)計(jì)第 22 頁 共 65 頁參考文獻(xiàn)[1](美)Andrew 著,嚴(yán)偉,(第 5 版).清華大學(xué)出版.[2] Stevens, 環(huán)境高級編程( 第 2 版)..[3] Stevens, 網(wǎng)絡(luò)編程( 卷 1:套接字聯(lián)網(wǎng) API(第 3 版)). 人民郵電出.[4] Stevens,( 卷 1:協(xié)議). .[5] Stevens,( 卷 2:實(shí)現(xiàn)). .[6]諸葛建偉,陳霖, 數(shù)據(jù)包分析實(shí)戰(zhàn)(第 2 版).人民郵電出版社.2022.[7][J]. 商品與質(zhì)量 .2022,S7:135136.[8]高凱,[J].,18:144.[9][D]..[10]Gary , professional puting series.[11]The WinPcap 中文技術(shù)文檔. July 23, 2022.[12]Fulvio Risso, Loris Degioanni, An Architecture for High Performance Network Analysis, Proceedings of the 6th IEEE Symposium on Computers and Communications (ISCC 2022), Hammamet, Tunisia, July 2022.[13]Loris Degioanni, Mario Baldi, Fulvio Risso and Gianluca Varenni, Profiling and Optimization of SoftwareBased NetworkAnalysis Applications, Proceedings of the 15th IEEE Symposium on Computer Architecture and High Performance Computing (SBACPAD 2022), Sao Paulo, Brasil, November 2022.[14]Loris Degioanni, Development of An Architecture for Packet Capture and Network Traffic Analysis, Graduation Thesis, Politeico Di Torino (Turin, Italy, Mar. 2022). 陜西理工學(xué)院畢業(yè)設(shè)計(jì)第 23 頁 共 65 頁致 謝通過幾個(gè)月來的努力,以及在導(dǎo)師的指導(dǎo)和同學(xué)幫助之下,終于順利地完成了本次畢業(yè)設(shè)計(jì)。在畢業(yè)設(shè)計(jì)這段時(shí)間里,遇到的困難和挫折讓我認(rèn)識到了自己的不足并努力的完善自己,因此,最終不僅完成了畢業(yè)設(shè)計(jì),還學(xué)到了以前很多沒有學(xué)到的知識,同時(shí)也鞏固了所學(xué)過的知識,是一次很好的鍛煉,使自己受益匪淺。首先,感謝賈老師。作為我的導(dǎo)師,無論是在理論還是實(shí)踐方面都給我提了很多寶貴的意見,使我的畢業(yè)設(shè)計(jì)在有條不紊的環(huán)境下進(jìn)行,逐步趨于完善,得以順利完成。其次,我也很感謝在中期檢查時(shí)老師們給我提出寶貴意見,還有在此期間的關(guān)懷和幫助,以及學(xué)院為我提供良好的畢業(yè)設(shè)計(jì)環(huán)境。最后,還要感謝所有在畢業(yè)設(shè)計(jì)中為我提供幫助的學(xué)院的老師和同學(xué),以及在畢業(yè)設(shè)計(jì)中被我引用或參考的論著的作者,沒有你們在畢業(yè)設(shè)計(jì)期間給予我?guī)椭椭С?,也不會有今天這份成果,再次感謝大家。 陜西理工學(xué)院畢業(yè)設(shè)計(jì)第 24 頁 共 65 頁科技外文文獻(xiàn)An Architecture for High Performance Network AnalysisFulvio Risso and Loris DegioanniDipartimento di Automatica e Informatica – Politeico di TorinoCorso Duca degli Abruzzi, 24 – 10129 Torino, Italy{risso,Abstract Most Unix systems provide a set of system calls that allow applications to interact with the work directly. These primitives are useful for example in packet capture applications, which need to grab the data flowing through the work without any further processing from the kernel. WinPcap is a newly proposed architecture that adds these functionalities to Win32 operating systems. WinPcap includes a set of innovative features (such as packet monitoring and packet injection) that are not available in previous syst