實(shí)驗(yàn)八協(xié)議分析器程序的設(shè)計(jì)和實(shí)現(xiàn)_第1頁
實(shí)驗(yàn)八協(xié)議分析器程序的設(shè)計(jì)和實(shí)現(xiàn)_第2頁
實(shí)驗(yàn)八協(xié)議分析器程序的設(shè)計(jì)和實(shí)現(xiàn)_第3頁
實(shí)驗(yàn)八協(xié)議分析器程序的設(shè)計(jì)和實(shí)現(xiàn)_第4頁
實(shí)驗(yàn)八協(xié)議分析器程序的設(shè)計(jì)和實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)八協(xié)議分析器程序的設(shè)計(jì)和實(shí)現(xiàn)1.實(shí)驗(yàn)?zāi)康模?1) 掌握對(duì)網(wǎng)絡(luò)上傳輸數(shù)據(jù)包的捕獲方法。(2) 解析Ethernet網(wǎng)數(shù)據(jù)幀頭部的全部信息。(3) 解析IP、ICMP數(shù)據(jù)包(4) 解析傳輸層和應(yīng)用層相關(guān)協(xié)議的頭部信息(5) 設(shè)置過濾規(guī)則,能過濾相應(yīng)協(xié)議的數(shù)據(jù)包。(6) 要求有良好的編程規(guī)范與注釋信息,要求有詳細(xì)的說明文檔,包括程序的設(shè)計(jì)思想、 活動(dòng)圖、關(guān)鍵問題以及解決方法。2實(shí)驗(yàn)環(huán)境:(1) VC6. 0(2) 局域網(wǎng)能連接In terneto3 程序設(shè)計(jì)的關(guān)鍵問題以及解決方法有哪些?當(dāng)應(yīng)用程序通過IP網(wǎng)絡(luò)傳送數(shù)據(jù)時(shí),數(shù)據(jù)被送入TCP/IP協(xié)議棧屮,然后從上至下逐一通過每一 層,直到最后被當(dāng)作

2、一串比特流送入網(wǎng)絡(luò)。其中每一層對(duì)收到的數(shù)據(jù)都要增加一些首部信息,這個(gè)過程被稱作封裝。通過以太網(wǎng)傳輸?shù)谋忍亓鞣Q作幀。在傳輸?shù)牧硪欢耍?dāng)目的主機(jī)收到一個(gè)以太網(wǎng)數(shù)據(jù)幀時(shí),數(shù)據(jù)就開始從協(xié)議棧由底向上逐層解析,去掉各層協(xié)議所加上的報(bào)文頭部。每層協(xié)議均要檢查報(bào)文頭部屮的協(xié)議標(biāo)識(shí)字段,以確定要接收數(shù)據(jù)的上層協(xié)議,最終從報(bào)文中解析出應(yīng)用層數(shù)據(jù)后交給應(yīng)用程序處理。本次要編寫的協(xié)議分析器,就是從網(wǎng)絡(luò)中捕獲數(shù)據(jù)包并對(duì)其進(jìn)行解析的過程。因此,我們需要了解每層協(xié)議所規(guī)定的報(bào)文格式,然后由底向上逐層對(duì)數(shù)據(jù)包進(jìn)行解碼,最后將分析的結(jié)果顯示出來。應(yīng)用層數(shù)據(jù)傳輸層首部應(yīng)用層數(shù)據(jù)封裝解析網(wǎng)絡(luò)層首部傳輸層首部應(yīng)用層數(shù)據(jù)以太網(wǎng)首部網(wǎng)

3、絡(luò)層首部傳輸層首部應(yīng)用層數(shù)據(jù)以太網(wǎng)尾部4 描述程序設(shè)計(jì)過程,并畫出程序活動(dòng)圖。協(xié)議分析器總體結(jié)構(gòu):協(xié)議分析器的整體結(jié)構(gòu)按功能應(yīng)分為三個(gè)部分,自底向上分別是數(shù)據(jù)捕獲模塊、協(xié)議解析模塊和用戶顯示模塊。用戶界面顯示協(xié)議解析模塊i數(shù)據(jù)包數(shù)據(jù)捕獲模塊ARPParseHTTPPacket0IPParseRARPPacketOParseIPPacketOParseARPPacketQ1)解析Ethernet幀2)解析ARP數(shù)據(jù)包3)解析IP數(shù)據(jù)包4)解析ICMP, TCP和UDP數(shù)據(jù)包5 給出關(guān)鍵代碼,并附注釋。1)角軍析 Ethernet 幀 typedef structBYTE DesMacAddr6;

4、址BYTE SrcMacAddr6;WORD Len gthOrType; MAC_HEADER;/MAC幀類型定義/目的地/源地址數(shù)據(jù)長度或類型-0x0800;=0x0806;con st u_short MAC_TYPE_IPcon st u_short IAC_TYPE_ARPcon st u short MAC TYPE RARP二 0x8035;MAC_HEADER* pMacHdr 二(MAC_HEADER*) pPkt;/ Mac目的地址stritem. Format (Desti nation address : %02X:%02X:%02X:%02X:%02X:%02X,z,

5、pMacHdr-DesMacAddr0,pMacHdr-DesMacAddr1,pMacHdr-DesMacAddr2,pMacHdr-DesMacAddr3J,pMacHdr-DesMacAddr4, pMacHdr-DesMacAddr5);/ Mac源地址 strltem. Format (Source address: %02X:%02X:%02X:%02X:%02X:%02X,z,pMacHdr-SrcMacAddr0J,pMacHdr-SrcMacAddr1J,pMacHdr-SrcMacAddr2,pMacHdr-SrcMacAddr3,pMacHdr-SrcMacAddr4,p

6、MacHdr-SrcMacAddr (5);類型/長度字段辻(ntohs (pMacHdrLengthOrType) 1500)/ 類型字段(Ethernet V2. 0)/根據(jù)類型字段調(diào)用相應(yīng)的上層協(xié)議處理函數(shù)辻(ntohs (pMacHdr-LengthOrType) = IAC_TYPE_IP)strltem = IP;ParselPPacket(BYTE*)pMacHdr+sizeof(MAC_HEADER),iLe n-sizeof(MAC_HEADER);else if (ntohs(pMacHdr-LengthOrType) = MAC_TYPE_ARP)strltem = AR

7、P;ParseARPPacket(BYTE*)pMacHdr+sizeof(MAC_HEADER), iLe n-sizeof(MAC_HEADER);else if (ntohs(pMacHdr-LengthOrType) = MAC_TYPE_RARP)strltem = RARP;ParseRARPPacket(BYTE*)pMacHdr+sizeof (MAC_HEADER), iLe n-sizeof(MAC_HEADER);else/IP協(xié)議/ARP協(xié)議/RARP協(xié)議/其他strltem 二UNKNOWN;else /長度字段(IEEE802格式)strltemFormat(Le

8、ngth: %d bytes, n tohs(pMacHdr-Le ngthOrType);/*解析IEEE802數(shù)據(jù)幀,省略*/ 2) 解析ARP數(shù)據(jù)包/ARP頭部結(jié)構(gòu) typedef structu_short hardware_type; u_short proto_type;u char hardware addr le n;u_char proto_addr_le n;u_short operati on _code;u char src mac addr6; u char scr_ip_addr4;u_char dest_mac_addr6.;u_char dest_ip_addr

9、4; 16位硬件類型 16位協(xié)議類型/8位硬件地址長度8位協(xié)議地址長度 16位操作碼/源Ethernet網(wǎng)地址/源IP地址/目的Ethernet網(wǎng)地址/目的IP地址 ARPJEADER;/ARP報(bào)文操作碼類型,1為請(qǐng)求, const u_short ARP_OP_REQUEST con st u short ARP OP REPLYARP_HEADER* pARPHdr 二(ARP_ n tohs (pARPHdr-hardware_type); ntohs(pARPHdr-proto_type); pARPHdr-hardware_addr_le n; pARPHdr-proto_addr_

10、le n;/操作類型2位應(yīng)答=1; /ARP 請(qǐng)求=2; /ARP 應(yīng)答 HEADER*) pPkt;/硬件類型/上層協(xié)議類型/硬件地址長度/協(xié)議地址長度if (n tohs(pARPHdr-operation_code)(Request);二二 ARP_OP_REQUEST) strItem 二else if (n tohs(pARPHdr-operation_code)二二 ARP_OP_REPLY) stritem 二(Reply);/源 Mac 地址 stritem. Format (/zSe nder,s hardware address: %02X:%02X: %02X:%02X:

11、%02X:%02X,z,pARPHdr-src_niac_addr 0,pARPHdr-src_mac_addr1,pARPHdr-src_mac_addr2,pARPHdr-src_mac_addr3,pARPHdr-src_mac_addr4, pARPHdr-src. _mac_addr5);/源IP地址in _addr ipAddr;memcpy 仗ipAddr, pARPHdr-scr_ip_addr, sizeof ( in _addr);inet_n toa(ipAddr) :/轉(zhuǎn)化為點(diǎn)分十進(jìn)制字符串/目的Mac地址stritem. Format (Targets hardwar

12、e address: %02X:%02X:%02X:%02X:%02X:%02Xz,, pARPHdr- de s t_mac_addr0, pARPHdr-dest_mac_addr1, pARPHdr-dest_mac_addr2,pARPHdr- de s t_mac_addr 3, pARPHdx-dest_mac_addr4, pARPHdr-dest. jnac_addr5);/目的IP地址memcpy (&ipAddr, pARPHdr-dest_ip_addr, sizeof ( in _addr);inet_n toa(ipAddr) :/轉(zhuǎn)化為點(diǎn)分十進(jìn)制字符串刀填充字段長度

13、strItem. Format(Frame paddi ng: %d bytes, iLe n-sizeof(ARP_HEADER);3)解析IP數(shù)據(jù)包/IIP頭部結(jié)構(gòu)typedef struct114位頭部長度114位版本號(hào)unsigned char hdr_len :4; un sig ned char vers ion :4; unsig ned char tos;118位服務(wù)類型un sig ned short un 誓?rW。n, idenshort un sig ned shorife37;frag_asig ned char ttl;nd_flags;n 16位總長度1116位標(biāo)

14、識(shí)符 只d丄=亠c d UL /宀切118位生存時(shí)間un sig ned shortchecksum;un sig ned longsource_ipun sig ned longdest_ip;unsigned char protocol;118位上層協(xié)議號(hào)1116位校驗(yàn)和1132位源IP地址TTR4?侍曰的TP M tl卜 IPJEADER;IP_HEADER* pIPHdr 二(IP_HEADER*)pPkt;I*解析IP頭部各字段并顯示輸出*1II根據(jù)不同上層協(xié)議調(diào)用相應(yīng)解析函數(shù)switch (pIPHdr-protocol) case IPPROTO_TCP:stritem = TC

15、P;ParseTCPPacket (BYTE*)plPHdr+訂PHdrLe n,讓e n-訂PHdrLe n) ; break; case IPPROTO_UDP:stritem = UDP;ParseUDPPacket(BYTE*)plPHdr+iIPHdrLe n, iLe n-ilPHdrLe n); break;case IPPROTO_ICMP:stritem =ParselCMPPacket(BYTE*)plPHdr+iIPHdrLe n, iLe niIPHdrLe n); break;default:stritem 二OTHERS;4) 解析ICMP, TCP和UDP數(shù)據(jù)包/ICMP基本頭部typedef structBYTE type;BYTE code;USHORT cksum; ICMP_BASE_HEADER; 8位類型 8位代碼 16位校驗(yàn)和/ICMP回顯頭部(回顯請(qǐng)求、回顯應(yīng)答)typedef structICMP_BASE_HEADER base_hdr; /基本頭部USHORTid; 16位標(biāo)識(shí)符USHORTseq; 16 位序列號(hào) ICMP_ECHO_HEADER;typedef/ /ICMP差錯(cuò)報(bào)文頭部(j駁時(shí)及目的不可達(dá))structICMP BASE HEADER b

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論