解析ARP數(shù)據(jù)包課程設(shè)計(jì)_第1頁(yè)
解析ARP數(shù)據(jù)包課程設(shè)計(jì)_第2頁(yè)
解析ARP數(shù)據(jù)包課程設(shè)計(jì)_第3頁(yè)
解析ARP數(shù)據(jù)包課程設(shè)計(jì)_第4頁(yè)
解析ARP數(shù)據(jù)包課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

--本頁(yè)僅作為文檔封面,使用時(shí)請(qǐng)直接刪除即可--

--內(nèi)頁(yè)可以根據(jù)需求調(diào)整合適字體及大小----本頁(yè)僅作為文檔封面,使用時(shí)請(qǐng)直接刪除即可--

--內(nèi)頁(yè)可以根據(jù)需求調(diào)整合適字體及大小--解析ARP數(shù)據(jù)包課程設(shè)計(jì)(總18頁(yè))南京工程學(xué)院(課程設(shè)計(jì))院系:通信工程學(xué)院課程名稱(chēng):計(jì)算機(jī)網(wǎng)絡(luò)與通信設(shè)計(jì)名稱(chēng):解析ARP數(shù)據(jù)包班級(jí):算通081班 姓名:周潔學(xué)號(hào):1設(shè)計(jì)時(shí)間:2011年06月13日——2011年06月16日目錄課程設(shè)計(jì)目的………2課程設(shè)計(jì)要求………2相關(guān)知識(shí)………………3ARP數(shù)據(jù)報(bào)的消息格式……3ARP協(xié)議的工作流程………..4課程設(shè)計(jì)分析……….6課程設(shè)計(jì)中的重點(diǎn)及難點(diǎn)………………..6參考算法………….………………7核心代碼…………..8相關(guān)擴(kuò)展………………15心得體會(huì)………………16參考文獻(xiàn)………………17課程設(shè)計(jì)目的:本課程設(shè)計(jì)的目的是對(duì)網(wǎng)絡(luò)上的ARP數(shù)據(jù)包進(jìn)行解析,從而熟悉ARP數(shù)據(jù)包的結(jié)構(gòu),對(duì)ARP協(xié)議有更好的理解和認(rèn)識(shí)。課程設(shè)計(jì)要求:通過(guò)編制程序,獲取網(wǎng)絡(luò)中的ARP數(shù)據(jù)包,解析數(shù)據(jù)包的內(nèi)容,將結(jié)果顯示在標(biāo)準(zhǔn)輸出上,并同時(shí)寫(xiě)入日志文件。程序的具體要求如下所示:1,以命令行的形式運(yùn)行,如下所示:11ARP其中,11ARP為程序名;11為日志文件名。2,程序輸出內(nèi)容如下所示:源IP地址源MAC地址目的IP地址操作時(shí)間各部分的說(shuō)明如下所示:源IP地址:輸出ARP消息格式中的源IP地址字段;源MAC地址:輸出ARP消息格式中的源物理地址字段;目的IP地址:輸出ARP消息格式中的目的IP地址字段;目的MAC地址:輸出ARP消息格式中的目的物理地址字段;操作:輸出ARP消息格式中的操作字段,若為ARP請(qǐng)求,則為1,若為ARP應(yīng)答,則為2;時(shí)間:該ARP包產(chǎn)生的時(shí)間。3,當(dāng)程序接收到鍵盤(pán)輸入Ctrl+C時(shí)字段相關(guān)知識(shí)ARP數(shù)據(jù)報(bào)的消息格式網(wǎng)絡(luò)上的每臺(tái)主機(jī)或設(shè)備都有一個(gè)或多個(gè)IP地址。IP地址是網(wǎng)絡(luò)層的地址,在網(wǎng)絡(luò)層,數(shù)據(jù)被組裝成IP包。但是發(fā)送IP包需要物理設(shè)備的支持(通常是Ethernet設(shè)備,在本課程設(shè)計(jì)中我們指定為Ethernet設(shè)備),即發(fā)送端必須知道目的物理地址才能將IP包發(fā)送出去,所以需要一種將IP地址映射為物理地址的機(jī)制。ARP協(xié)議就是用來(lái)完成這個(gè)任務(wù)的。ARP協(xié)議能夠在同一個(gè)物理網(wǎng)絡(luò)中,在給定目的主機(jī)或設(shè)備的IP地址的條件下,得到目的主機(jī)或設(shè)備的物理地址。ARP協(xié)議的數(shù)據(jù)包格式如圖所示:08162431(位)硬件類(lèi)型協(xié)議類(lèi)型物理地址長(zhǎng)度協(xié)議地址長(zhǎng)度操作源物理地址(八位組0~3)源物理地址(八位組4~5)源IP地址(八位組0~1)源IP地址(八位組2~3)目的物理地址(八位組0~1)目的物理地址(八位組2~5)目的IP地址(八位組0~3)ARP數(shù)據(jù)包的消息格式下面對(duì)數(shù)據(jù)包的各個(gè)部分進(jìn)行說(shuō)明硬件類(lèi)型:指定硬件接口類(lèi)型。例如,值為1表示Ethernet協(xié)議類(lèi)型:指定發(fā)送方支持的上層協(xié)議的類(lèi)型物理地址長(zhǎng)度:指定物理(硬件)地址的長(zhǎng)度協(xié)議地址長(zhǎng)度:網(wǎng)絡(luò)層協(xié)議的地址長(zhǎng)度。若為IP協(xié)議,其值為4操作:指定ARP的操作類(lèi)型,例如,1表示ARP請(qǐng)求,2表示ARP應(yīng)答源物理地址:指定發(fā)送方的IP地址目的物理地址:指定目的物理地址。目的IP地址:指定目的IP地址ARP分組必須在數(shù)據(jù)鏈路層中被封裝成偵,才能發(fā)送出去封裝形式如圖所示ARP消息ARP消息幀頭部幀數(shù)據(jù)幀頭部幀數(shù)據(jù)將ARP數(shù)據(jù)包封裝成一個(gè)幀b)ARP協(xié)議的工作流程。在發(fā)送一個(gè)ARP分組之前,源主機(jī)首先根據(jù)目的IP地址,在本地ARP高速緩存表中查找與之對(duì)應(yīng)的目的物理地址。如果找到對(duì)應(yīng)的物理地址,就不用進(jìn)行地址解析,否則需要進(jìn)行地址解析。實(shí)現(xiàn)地址解析的第一步是產(chǎn)生ARP請(qǐng)求分組。在相應(yīng)的字段寫(xiě)入本地主機(jī)的源物理地址、源IP地址,在目的物理地址字段寫(xiě)入0,并在操作字段寫(xiě)入1。將ARP分組發(fā)送到本地的數(shù)據(jù)鏈路層,并封裝成幀。以源物理地址作為源地址,以物理廣播地址(FF-FF-FF-FF-FF-FF)作為目的地址,通過(guò)物理層發(fā)送出去。由于采用了廣播地址,因此網(wǎng)段內(nèi)所有的主機(jī)或設(shè)備都能接受到該幀。除了目的主機(jī)外,所有接受到該分組的主機(jī)和設(shè)備都會(huì)丟棄該分組,因?yàn)槟康闹鳈C(jī)能夠識(shí)別ARP消息中的目的IP地址。目的主機(jī)發(fā)送ARP應(yīng)答分組。在ARP應(yīng)答分組中,以請(qǐng)求分組中源物理地址、源IP地址作為其目的物理地址、目的IP地址,并將目的主機(jī)自身的物理地址、IP地址填入應(yīng)答分組的源物理地址、源IP地址字段,并在操作字段中寫(xiě)入2。該分組通過(guò)數(shù)據(jù)鏈路層以點(diǎn)對(duì)點(diǎn)的方式發(fā)送出去(因?yàn)楝F(xiàn)在目的方已經(jīng)知道雙方的物理地址)。源結(jié)點(diǎn)接收到ARP應(yīng)答分組,知道對(duì)應(yīng)于目的IP地址的目的物理地址,將它作為一條新記錄加入到ARP高速緩存表。源結(jié)點(diǎn)將有完整源IP地址、源物理地址、目的IP地址、目的物理地址的信息和數(shù)據(jù)作為一個(gè)發(fā)送分組,傳送給它的數(shù)據(jù)鏈路層并封裝成楨,然后以點(diǎn)對(duì)點(diǎn)的方式發(fā)送到目的主機(jī)。四、課程設(shè)計(jì)分析課程設(shè)計(jì)中的重點(diǎn)及難點(diǎn)程序中會(huì)用到Winpcap,Winpcap是Win32環(huán)境下數(shù)據(jù)包捕獲的開(kāi)放代碼函數(shù)庫(kù)?;赪inpcap的應(yīng)用程序一般按照下面幾個(gè)步驟進(jìn)行設(shè)計(jì):輸出網(wǎng)卡設(shè)備列表。選擇網(wǎng)卡并打開(kāi)。捕獲數(shù)據(jù)包時(shí),可能需要設(shè)置過(guò)濾器。捕獲數(shù)據(jù)包或者發(fā)送數(shù)據(jù)包。在程序設(shè)計(jì)過(guò)程中需要注意網(wǎng)絡(luò)—主機(jī)字節(jié)順序的轉(zhuǎn)化。由于不同的計(jì)算機(jī)系統(tǒng)所采用的數(shù)據(jù)表示方式不同,對(duì)于2B或4B的數(shù)據(jù),有的采用低字節(jié)地址存放數(shù)據(jù)的高權(quán)值位,而有的卻以低地址字節(jié)存放數(shù)據(jù)低權(quán)位值,在網(wǎng)絡(luò)的數(shù)據(jù)傳輸中,我們應(yīng)該統(tǒng)一表示,所以我們?cè)诓东@數(shù)據(jù)包后,應(yīng)將數(shù)據(jù)包頭部的表示長(zhǎng)度或類(lèi)型的數(shù)據(jù)轉(zhuǎn)換成本地機(jī)的表達(dá)形式??梢岳煤瘮?shù)ntohs()將網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換為主機(jī)字節(jié)序。選擇網(wǎng)卡并打開(kāi)時(shí),注意選擇可用的網(wǎng)卡。參考算法取得當(dāng)前網(wǎng)卡設(shè)備列表。選擇Ethernet網(wǎng)卡并打開(kāi),注意判斷所選網(wǎng)卡是否為實(shí)際存在的可用網(wǎng)卡。設(shè)置過(guò)濾器,此處的過(guò)濾器正則表達(dá)式為“arp”或者“etherproto\\arp”。捕獲數(shù)據(jù)包并進(jìn)行處理(包括輸出各IP地址,物理地址,操作類(lèi)型以及時(shí)間)。由于要記錄日志文件,為了便于輸出流參數(shù),建議采用pcap_next_ex()函數(shù)。流程圖如圖所示:開(kāi)始開(kāi)始獲取網(wǎng)卡列表獲取網(wǎng)卡列表選取Ethernet網(wǎng)卡選取Ethernet網(wǎng)卡打開(kāi)網(wǎng)卡(混雜模式)打開(kāi)網(wǎng)卡(混雜模式)編譯設(shè)置過(guò)濾器編譯設(shè)置過(guò)濾器捕獲ARP包并將其相應(yīng)內(nèi)容輸出捕獲ARP包并將其相應(yīng)內(nèi)容輸出核心代碼ARP數(shù)據(jù)包結(jié)構(gòu)structarppkt{ unsignedshorthdtyp;; pcap_freealldevs(alldevs);n";pcap_freealldevs(alldevs);return;}n";pcap_freealldevs(alldevs);return;}循環(huán)捕獲ARP包,并進(jìn)行解析while((result=pcap_next_ex(adhandle,&header,&pkt_data))>=0){輸出ARP數(shù)據(jù)包的各個(gè)域的內(nèi)容到文件和屏幕上}源程序#include<>#pragmacomment(lib,"")0001 unsignedshortprotyp; unsignedcharhdsize; unsignedcharprosize; unsignedshortop; u_charsmac[6]; u_charsip[4]; u_chardmac[6]; u_chardip[4];};voidpacket_handler(constpcap_pkthdr*header,constu_char*pkt_data,ostream&out);voidmain(intargc,char*argv[]){ if(argc!=2) { cout<<"Usage:arpparselogfilename"<<endl; cout<<"pressanykeytocontinue."<<endl; _getch(); return; } pcap_if_t*alldevs; pcap_if_t*d; pcap_t*adhandle; charerrbuf[PCAP_ERRBUF_SIZE]; u_intnetmask; charpacket_filter[]="etherproto\\arp"; structbpf_programfcode; structpcap_pkthdr*header; constu_char*pkt_data; if(pcap_findalldevs(&alldevs,errbuf)==-1) { cout<<"Errorinpcap_findalldevs:"<<errbuf; return; } for(d=alldevs;d;d=d->next) { if((adhandle=pcap_open_live(d->name,1000,1,300,errbuf))==NULL) { cout<<"\nUnabletoopentheadapter."; pcap_freealldevs(alldevs); return; } if(pcap_datalink(adhandle)==DLT_EN10MB&&d->addressess!=NULL) break; }if(d==NULL){cout<<"\nNointerfacesfound!MakesureWinpcapisinstalled.\n";return;}n";pcap_freealldevs(alldevs);return;}n";pcap_freealldevs(alldevs);return;}cout<<"\t\tlisteningon"<<d->description<<"..."<<endl<<endl;;(ios::left);out<<setw(3)<<int(arph->sip[3])<<"";(ios::uppercase);for(i=0;i<5;i++)out<<hex<<setw(2)<<int(arph->smac[i])<<'-';out<<hex<<setw(2)<<int(arph->

溫馨提示

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

評(píng)論

0/150

提交評(píng)論