




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上編寫C+程序輸出IP數(shù)據(jù)包并檢驗(yàn)IP數(shù)據(jù)包正確性郭照凱 南開大學(xué) 通信工程專業(yè)摘要:本文主要通過編寫C+程序來輸出網(wǎng)絡(luò)數(shù)據(jù)包中的MAC幀以及IP首部的各個(gè)字段信息。數(shù)據(jù)包本來是用input文件,但其驗(yàn)證有問題,所以就通過由Wireshark捕獲新的數(shù)據(jù)包。編寫程序運(yùn)行后,程序輸出的各個(gè)字段與Wireshark的分析對(duì)比,驗(yàn)證程序的正確性關(guān)鍵詞:C+;Wireshark;MAC幀;IP首部Abstract: This paper mainly by writing C + + program to output network packets in the MAC fr
2、ames and IP header information in various fields. Packet is input files have been, but the verification problem, so Wireshark capture by the new data packet. Write a program running, the program output analysis of the various fields in comparison with Wireshark to verify the correctness of the progr
3、am.Keywords: C + +; Wireshark; MAC frame; IP header0 引言協(xié)議是兩個(gè)實(shí)體之間用于交換數(shù)據(jù)的一組規(guī)則。協(xié)議通常是按照各個(gè)功能劃分的,而各個(gè)功能又對(duì)應(yīng)不同的層次,上層對(duì)應(yīng)用戶層,下層是服務(wù)提供層,國際標(biāo)準(zhǔn)化組織(International Standards Organization ,ISO)的SC16委員會(huì)在1978年3月提出開放式互聯(lián)系統(tǒng)(Open Systems Interconnection ,OSI)參考模型作為第一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)的體系的國際標(biāo)準(zhǔn),目前在互聯(lián)網(wǎng)上最為廣泛應(yīng)用的TCP/IP模型也是國際標(biāo)準(zhǔn)之一。TCP/IP協(xié)議是Inter
4、net最基本的協(xié)議、Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成。了解并且掌握協(xié)議的結(jié)構(gòu),以及各個(gè)字段的含義,有助于更好的理解各個(gè)協(xié)議的原理。本文則通過編寫C+程序來對(duì)IP數(shù)據(jù)包進(jìn)行解析,并與wireshark捕獲的內(nèi)容進(jìn)行對(duì)比驗(yàn)證其正確性。1 wireshark導(dǎo)出數(shù)據(jù)文件老師給的input文件打開之后如下圖所示,可以看得出,這是一個(gè)十六進(jìn)制文件。前七個(gè)字節(jié)的AA是前導(dǎo)碼,AB是幀前定界符,F(xiàn)FFFFFFFFFFF是目的MAC地址,00 27 E3 B4 FC DE是源MAC地址,之后的00 83不是標(biāo)志著幀的類型,那么應(yīng)該標(biāo)志著幀的長(zhǎng)度。數(shù)一下,到6E剛好
5、是83(10進(jìn)制是131),還剩4個(gè)字節(jié),剛好是幀校驗(yàn)序列長(zhǎng)(FCS)。之后又是7個(gè)字節(jié)AA,又開始一個(gè)新幀。從最右邊的該16進(jìn)制的文本表示中也可看出。因此input里沒有IP數(shù)據(jù)報(bào)。圖片1所以,我們用wireshark重新捕獲數(shù)據(jù)包并導(dǎo)出。Wireshark是目前世界上最受歡迎的一款免費(fèi)開放的協(xié)議分析軟件,可以用它來捕獲網(wǎng)絡(luò)上數(shù)據(jù)包并且將其翻譯為人們?nèi)菀鬃x懂的文字和圖標(biāo)形式,極大地方便了對(duì)網(wǎng)絡(luò)活動(dòng)的檢測(cè)分析和教學(xué)實(shí)驗(yàn)。我們通過登錄我校BT網(wǎng)站得到data數(shù)據(jù)文件為例,步驟如下:1) 打開Wireshark,選擇capture->interface->start開始捕包。圖片22)
6、 登錄 我們可以馬上得到如下的數(shù)據(jù)包:圖片3值得提到的是本來是出現(xiàn)很多的數(shù)據(jù)包的,其中有很多都不是我們所需要的,之所以由以上的結(jié)果是因?yàn)槲覀冊(cè)贔ilter(過濾)里面打上了ip.addr=14。14是bt的IP號(hào),是在命令行界面打ping 得到的。圖片4而如果在命令行打入ping ,經(jīng)驗(yàn)證得不到百度的IP號(hào),這也是我們選擇學(xué)校的內(nèi)網(wǎng)網(wǎng)址的原因。圖片53) 選擇數(shù)據(jù)包進(jìn)行導(dǎo)出。選中我們要導(dǎo)出的數(shù)據(jù)包,依次點(diǎn)選菜單目錄下的file->export->file.出現(xiàn)如下界面:圖片6在左下角點(diǎn)選Selected packet,保存類型選擇C
7、Arrays,以文件名data保存到D盤。4) 打開D盤的data文件,刪去頭尾不符合C+引用文件的內(nèi)容,并將“,”全部替換為“ ”,并保存文件。data文件截圖如下:圖片72 IP數(shù)據(jù)報(bào)包首部校驗(yàn)和原理說明雖然說IP協(xié)議提供的是不可靠無連接的傳輸方式,但是在IP首部中還有一個(gè)字段首部校驗(yàn)和,用來檢測(cè)IP數(shù)據(jù)報(bào)首部的正確性,對(duì)IP數(shù)據(jù)報(bào)首部進(jìn)行校驗(yàn)。校驗(yàn)和或稱檢驗(yàn)和,通常用于對(duì)數(shù)據(jù)塊的校驗(yàn),它把數(shù)據(jù)塊的每?jī)蓚€(gè)字節(jié)按二進(jìn)制加法進(jìn)行循環(huán)求和1韓毅剛.計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)M.北京:機(jī)械工業(yè)出版社,20102劉璟.高級(jí)語言C+程序設(shè)計(jì)(第二版)M.北京:高等教育出版社1。基本原理如下圖:圖片 83 編寫程序
8、并驗(yàn)證IP數(shù)據(jù)包的正確性編寫C+程序如下:#include<fstream> #include<iostream>#include<iomanip>#include<Winsock2.h>using namespace std;struct eth_header unsigned char eth_dst6; unsigned char eth_src6; unsigned short upper_pro; ; /mac頭共14字節(jié)struct ip_headerunion unsigned char version; / 4bitsunsign
9、ed char ihl; /4bits; unsigned char tos; /1字節(jié)unsigned short total_len; /2字節(jié)unsigned short identifer; /2字節(jié)unionunsigned short flags; /3bitsunsigned short offset; /13bits;unsigned char TTL; /1字節(jié)unsigned char protocol; /1字節(jié)unsigned short checksum; / 2字節(jié)unsigned char ip_src4; /4字節(jié)unsigned char ip_dst4; /
10、4字節(jié)unsigned int option; / option加填充共為32bits 在此處把這四個(gè)字節(jié)看成一個(gè)字段;void main() /程序主函數(shù),實(shí)現(xiàn)所有功能int temp38; ifstream infile("D:data"); /打開文件 for(int i=0;i<38;i+) infile>>hex>>tempi;infile.close();struct eth_header eth; /定義幀頭結(jié)構(gòu)變量 struct ip_header ip; /定義Ip頭部結(jié)構(gòu)變量/以下給mac幀頭變量賦值for(int i=0;
11、i<6;i+)eth.eth_dsti=(unsigned char)tempi;for(int i=6;i<12;i+)eth.eth_srci-6=(unsigned char)tempi; eth.upper_pro=(temp12<<8)|temp13;/以下給ip頭部變量賦值 ip.version=(unsigned char) temp14;ip.tos=(unsigned char)temp15;ip.total_len=(temp16<<8)|temp17;ip.identifer=(temp18<<8)|temp19;ip.fl
12、ags=(unsigned short) (temp20<<8)|(temp21);ip.TTL=(unsigned char)temp22;tocol=(unsigned char)temp23;ip.checksum=(temp24<<8)|temp25;for(int i=26;i<30;i+)ip.ip_srci-26=(unsigned char)tempi;for(int i=30;i<34;i+)ip.ip_dsti-30=(unsigned char)tempi;/以下輸出mac頭部信息cout<<"輸出ma
13、c幀頭部信息(十六進(jìn)制):"<<endl;cout<<"目的mac地址為:"for(int i=0;i<5;i+)cout<<setfill('0')<<setw(2)<<hex<<(int)eth.eth_dsti<<"-"cout<<setfill('0')<<setw(2)<<hex<<(int)eth.eth_dst5<<endl;cout<<&
14、quot;源mac地址為:"for(int i=0;i<5;i+)cout<<setfill('0')<<setw(2)<<hex<<(int)eth.eth_srci<<"-"cout<<setfill('0')<<setw(2)<<hex<<(int)eth.eth_src5<<endl;cout<<"上層協(xié)議類型為:"cout<<setfill('0&
15、#39;)<<setw(4)<<hex<<eth.upper_pro<<endl;cout<<"-"<<endl; /以下輸出ip頭部信息 cout<<"輸出ip頭部信息(十進(jìn)制):"<<endl;cout<<"版本:"<<dec<<(ip.version>>4)<<endl;ip.ihl=ip.version&0x0f;cout<<"ip頭部長(zhǎng)度(i
16、hl):"<<(ip.ihl*4)<<endl;cout<<"服務(wù)類型:"<<(int)ip.tos<<" ("<<"優(yōu)先權(quán)子字段:"<<(ip.tos>>5)<<" tos子字段:"<<(ip.tos>>1)&0x0f)<<")"<<endl;cout<<"總長(zhǎng)度:"<<(int
17、)ip.total_len<<endl;cout<<"標(biāo)識(shí)符:"<<(int)ip.identifer<<endl;cout<<"片偏移:"<<(ip.offset&0x1fff)<<endl;cout<<"生存期:"<<(int)ip.TTL<<endl;cout<<"協(xié)議:"<<(int)tocol<<endl;cout<<&
18、quot;首部檢校和:"<<(int)ip.checksum<<endl;cout<<"源ip地址:"for(int i=0;i<3;i+)cout<<(int)ip.ip_srci<<"."cout<<(int)ip.ip_src3<<endl;cout<<"目的ip地址:"for(int i=0;i<3;i+) cout<<(int)ip.ip_dsti<<"."cout
19、<<(int)ip.ip_src3<<endl;/以下驗(yàn)證有沒有選項(xiàng)字段if(ip.ihl=5) cout<<"沒有選項(xiàng)字段"<<endl; for(int i=34;i<38;i+) tempi=0; else ip.option=(unsigned int)(temp34<<24)|(temp35<<16)|(temp36<<8)|temp37; cout<<"選項(xiàng):"<<(int)ip.option<<endl; /如果有選項(xiàng)字段 將選項(xiàng)和填充一起輸出cout<<"-"<<endl; /以下驗(yàn)證ip數(shù)據(jù)包頭部的正確性 unsigned short m1,m2,sum;unsigned int sum1=0;for(int i=14;i<37;i=i+2
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)聯(lián)報(bào)價(jià)合同范例
- 音樂教學(xué)評(píng)價(jià)內(nèi)容
- 免利息借款合同范例
- 代報(bào)名合同范例
- 企業(yè)簽訂勞務(wù)合同范例
- wpc總包合同范例
- 鄉(xiāng)村公路合同范例
- 會(huì)議策劃合同范例
- 基于聯(lián)邦學(xué)習(xí)的公共安全突發(fā)事件追蹤和監(jiān)測(cè)
- 企業(yè)合同范例在
- 海底撈 餐廳管理手冊(cè)
- 2024年社會(huì)工作者之初級(jí)社會(huì)綜合能力題庫參考答案
- 建筑垃圾粉碎合同范例
- 信息檢索與利用課件 第2章 信息檢索
- ANCA相關(guān)性血管炎-3
- 2023年廣西公務(wù)員考試申論試題(C卷)
- 太陽系中的有趣科學(xué)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 流體壓強(qiáng)與流速的關(guān)系市公開課一等獎(jiǎng)?wù)f課公開課獲獎(jiǎng)?wù)n件百校聯(lián)賽一等獎(jiǎng)?wù)n件
- 第25課+中華人民共和國成立和向社會(huì)主義的過渡+課時(shí)作業(yè) 高一上學(xué)期統(tǒng)編版(2019)必修中外歷史綱要上
- 人教版思想政治必修二期末測(cè)試卷附參考答案
- 2024-2025學(xué)年初中信息技術(shù)(信息科技)七年級(jí)上冊(cè)粵教清華版教學(xué)設(shè)計(jì)合集
評(píng)論
0/150
提交評(píng)論