資源描述:
《端口監(jiān)測及ip數(shù)據(jù)包的捕獲實驗報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、CENTRALSOUTHUNIVERSITY計算機網(wǎng)絡(luò)課程設(shè)計報告題目端口監(jiān)控及IP數(shù)據(jù)包的捕獲與分析學(xué)生姓名班級學(xué)號指導(dǎo)教師劉麗敏設(shè)計時間2015年9月18目錄第一章設(shè)計目的、任務(wù)與要求31.1設(shè)計目的31.2設(shè)計任務(wù)與要求3第二章系統(tǒng)分析設(shè)計42.1需求分析42.2總體設(shè)計42.3設(shè)計流程5第三章系統(tǒng)實現(xiàn)63.1采用技術(shù)63.2詳細設(shè)計63.3運行結(jié)果9第四章心得體會10參考文獻11附錄1118第一章設(shè)計目的、任務(wù)與要求1.1設(shè)計目的當(dāng)今世界網(wǎng)絡(luò)技術(shù)飛速發(fā)展,網(wǎng)絡(luò)已經(jīng)在我們的生活中扮演著重要的角色,無論是人與人之間的通信或者數(shù)據(jù)傳輸共享都離不開網(wǎng)絡(luò)。數(shù)據(jù)在網(wǎng)絡(luò)中主要是以ip
2、數(shù)據(jù)包的形式傳輸,由此看出IP數(shù)據(jù)包的捕獲與分析是信息安全技術(shù)中十分重要的一方面。如果能夠監(jiān)控計算機端口,就可以知道這臺計算機的工作狀態(tài),在進行什么活動,相當(dāng)于監(jiān)控了計算機的活動,也是安全監(jiān)控中重要的一個技術(shù)。此設(shè)計的目的主要是設(shè)計可以進行端口監(jiān)測和ip數(shù)據(jù)包捕獲與解析的小程序,以此鍛煉編程能力,動手能力和實踐能力,將理論知識與實踐相結(jié)合,熟悉ip數(shù)據(jù)包結(jié)構(gòu),熟悉在Windows上網(wǎng)絡(luò)socket編程,熟悉其中的各種函數(shù)的運用。并對網(wǎng)絡(luò)安全技術(shù)有更加深入的了解。1.2設(shè)計任務(wù)與要求本次實驗的要求在網(wǎng)絡(luò)環(huán)境,實現(xiàn)端口檢測以及捕獲網(wǎng)絡(luò)中的IP數(shù)據(jù)包,解析數(shù)據(jù)包的內(nèi)容,將結(jié)果顯示在標
3、準輸出上,并同時寫入日志文件。程序的具體要求如下:l)實現(xiàn)本機以及局域網(wǎng)內(nèi)計算機的端口監(jiān)控。2)在標準輸出和日志文件中寫入捕獲的IP包的版本、頭長度、服務(wù)18類型、數(shù)據(jù)包總長度、數(shù)據(jù)包標識、分段標志、分段偏移值、生存時間、上層協(xié)議類型、頭校驗和、源IP地址和目的IP地址等內(nèi)容。3)形成記錄結(jié)果的日志文件。第二章系統(tǒng)分析設(shè)計2.1需求分析1、實現(xiàn)端口監(jiān)控。2、實現(xiàn)網(wǎng)絡(luò)中ip數(shù)據(jù)包的捕獲與解析2.2總體設(shè)計1、端口監(jiān)控1)、初始化winsock的動態(tài)鏈接庫2)、創(chuàng)建套接字,建立socket連接,與目的ip地址相連。3)、運用connect()函數(shù),根據(jù)能否連接請求是否通過判斷端口是
4、否開啟,并輸出結(jié)果。2、ip數(shù)據(jù)包的捕獲與分析1)、初始化winsock的動態(tài)鏈接庫2)、建立原始套接字3)、voidset_socket(SOCKETs):對套接字進行設(shè)置,使用bind()函數(shù)將創(chuàng)建的套接口與服務(wù)器地址綁定,并用WSAIoctl()設(shè)置接收所有ip數(shù)據(jù)包。4)、數(shù)據(jù)包的解析輸出函數(shù)output_ip(IPHead*lp_iphead,18ostream&out)2.3設(shè)計流程1、端口監(jiān)控2、ip數(shù)據(jù)包的捕獲與解析18第三章系統(tǒng)實現(xiàn)3.1采用技術(shù)本實驗整體運用windows上的socket編程技術(shù),包括套接字的創(chuàng)建和初始化以及其中的寬口檢測函數(shù)connect(
5、),接收數(shù)據(jù)包函數(shù)recv()函數(shù)等,實現(xiàn)網(wǎng)絡(luò)操作。編程工具為vs2010,使用語言為c++。3.2詳細設(shè)計(一)、ip數(shù)據(jù)包的捕獲與分析1、初始化ip包的結(jié)構(gòu)體,用于解析ip數(shù)據(jù)包,structIPHead初始化協(xié)議名與協(xié)議號的映射。182、獲取本機名和ip地址:u_longgethostip()在這個函數(shù)中主要運用socket編程中的兩個函數(shù),gethostname()和gethostbyname()兩個函數(shù)。charhost_name[255];//獲取本地主機名稱if(gethostname(host_name,sizeof(host_name))==SOCKET_ER
6、ROR){printf("Error%dwhengettinglocalhostname.n",WSAGetLastError());}printf("Hostnameis:%s",host_name);//從主機名數(shù)據(jù)庫中得到對應(yīng)的“主機”structhostent*phe=gethostbyname(host_name);3、建立套接字:SOCKETs=socket(AF_INET,SOCK_RAW,IPPROTO_IP);4、套接字設(shè)置函數(shù):voidset_socket(SOCKETs)其中使用bind()函數(shù)將創(chuàng)建的套接口與服務(wù)器地址綁定,若綁定不成功,則顯示失敗i
7、f(bind(s,(sockaddr*)&hostaddr,sizeof(sockaddr))!=0){closesocket(s);18WSACleanup();cerr<<"bind()error!"<0時則表示有數(shù)據(jù)包的獲取,此時要進行解析的輸出6、數(shù)據(jù)包解析信息的輸出函數(shù):voidoutput_ip(IPHead*lp