




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、TCP數(shù)據(jù)包的封裝與發(fā)送一、實驗?zāi)康恼莆誘CP的工作特點;熟悉TCP數(shù)據(jù)包的結(jié)構(gòu);深刻理解網(wǎng)絡(luò)體系結(jié)構(gòu)中傳輸層與上下層之間的關(guān)系;二、實驗壞境PC機一臺Windows操作系統(tǒng)三、實驗準備復(fù)習(xí)TCP協(xié)議的相關(guān)內(nèi)容:熟練掌握TCP數(shù)據(jù)包中各自段的作用;四、實驗內(nèi)容(二選一)編寫程序構(gòu)造TCP包結(jié)構(gòu),并填寫各字段,將封裝后的TCP包的內(nèi)容在屏幕上輸出并寫入指定的文件中;TCP包的數(shù)據(jù)字段內(nèi)容額長度自定;五、實驗報告要求報告內(nèi)容要有主程序的流程圖和程序代碼;報告內(nèi)容要有運行結(jié)果的截圖;對實驗過程進行分析,對存在的問題分析。實驗相關(guān)代碼iiiclude#include#include#includemc
2、lude#piagniaconmient(lib,ws2_32.libH)數(shù)據(jù)結(jié)構(gòu)及宏定義:#defineIPVER4/IP協(xié)議預(yù)定defineMAX_EUFF_LEN65500發(fā)送緩沖區(qū)最人值#defineDEST_PORT5050目的端II號#defineSOUR.PORT8080源端II號tvpedefstmctipJidr定義IP首部UCHARh_veilen;UCHARtos;USHORTtotalJen;USHORTident;USHORTfiag_aiid_flags;UCHARttl;UCHARproto;USHORTchecksum;ULONGsouicelP;ULONGde
3、stIP;4位首部長度,4位IP版本號/8位服務(wù)類型TOS16位總長度(字節(jié))/16位標識3位標志位8位生存時間TTL8位協(xié)議(TCP,UDP或其他)/16位IP首部校驗和/32位源IP地址/32位目的IP地址IP_HEADER;ULONGsaddr;ULONGdaddr;UCHARmbz;UCHARptcl;USHORTtcpl;PSD_HEADER;源地址目的地址沒用協(xié)議類型/TCP長度tvpedefstmcttcp_hdr定義TCP首部USHORTth.sport;USHORTth_dport;ULONGth_seq;ULONGthwack;UCHARthjeiires;UCHARth_
4、flag;USHORTth_win;USHORTth.sum;USHORTth_uip;TCP_HEADER;usingnamespacestd;主要函數(shù):/Checksum:計算校驗和的子函數(shù)/16位源端II16位目的端II/32位序列號/32位確認號4位首部長度/6位保留字6位標志位16位窗口大小/16位校驗和16位緊急數(shù)據(jù)偏移量USHORTchecksum(USHORTbuffer,mtsize)unsignedlongcksum=0;whil亡(size1)cksum+=*buffer+;size=sizeof(USHORT);tvpedefstmcttsd_hdr定義TCP偽首部if
5、(size)cksum+=*(UCHAR*)buffer;cksum=(cksum16)+(cksum&Oxffiff);cksum+=(cksum16);return(USHORT)(cksum);主函數(shù)mtmaiii(void)IP.HEADERipHeader;TCP.HEADERtcpHeader;PSD_HEADERpsdHeader;chai-TCP.BuffMAX_BUFF.LEN;發(fā)送緩沖區(qū)unsignedshortcheck.BuffIMAX_BUFF.LEN;檢驗和緩沖區(qū)constchartcp_send_data=HThisistest?*;填充IP首部ipHeader.
6、h-veilen=(IPzER4|sizeof(ipHeader)/sizeof(unsignedlong);ipHeader.tos=(UCHAR)0;ipHeader.totaLlen=htons(unsignedshort)sizeof(ipHeadei)+sizeof(tcpHeader)+sizeof(tcp_send_data);ipHeader.ident=O;/16位標識lpHeader.fiag_and_flags=O;/3位標志位ipHeader.ttl=128;/8位生存時間ipHto=IPPROTO_UDP;協(xié)議類型lpHeader.checksum=
7、O;/檢驗和暫時為0ipHeader.sourceIP=inet_addr(H,f);/32位源IP地址ipHeader.destIP=ineCaddi(nn);/32位目的IP地址計算IP頭部檢驗和meniset(check_Buff,O,NIAX_BUFF_LEN);memcpy(check_Buff.&ipH亡adei;siz亡oIP_HEADER);ipHeader.checksum=checksum(check_Buff.sizeof(IP_HEADER);構(gòu)造TCP偽首部psdHeader.saddi-ipHeader.sourcelP;psdH
8、eader.daddi-ipHeadei.destIP;psdHeader.mbz=O;psdHeader.ptcl=ipHto;psdHeader.tcpl=htons(sizeof(TCP_HEADER)+sizeof(tcp_send_data);填充TCP首部tcpHeader.th.dport=htons(DEST_PORT);/16位目的端I丨號tcpHeader.th_spoit=htons(SOUR_PORT);/16位源端I丨號tcpHeader.th_seq=O:/SYN序列號tcpHeader.th_ack=O;/ACK序列號置為0/TCP長度和保留位t
9、cpHeader.th_lemes=(sizeof(tcpHeader)/sizeof(unsigiiedlong)4|0);tcpHeader.th_flag=2;/i|改這里來實現(xiàn)不同的標志位探測,2是SYN,1是/TIN,16是ACK探測等等tcpHeader.th_wm=htoiis(unsignedshort)16384);窗丨I人小tcpHeader.th_urp=O:/偏移大小tcpHeader.th_sum=0;檢驗和暫時填為0計算TCP校驗和meniset(check_Buff,O,MAX_BUFF_LEN);memcpy(check_Buff.&psdHeacki;size
10、of(psdHeack);memcpy(check_Buffrsizeof(psdHeadei),&tcpHdei;sizeof(tcpH亡adeQ);memcpy(check_Buffrsizeof(PSD_HEADER)+sizeof(TCP_HEADER),tcp-send_data5sizeof(tcp-send_data);tcpHeader.th_sum=checksum(check_Buff,sizeof(PSD_HEADER)+siz亡of(TCP_HEADER)+sizeof(tcp_send_data);填充TCP報文meniset(TCP_Buff.0,MAX.BUFF.
11、LEN);memcpy(TCP_Buff,&tcpHeader,sizeof(TCP_HEADER);memcpy(TCP_Buff+sizeof(TCP_HEADER),tcp_send_data,sizeof(tcp_send_data);mtdatasize=sizeof(TCP_HEADER)+sizeof(tcp_send_data);printfC封裝的TCP包如下:nH);char*decodeptr=TCP_Buff;printf(M源端I丨號:%d,nH,ntohs(*(unsignedshort*)decodepti-);decodepti+=sizeof(uiisigne
12、dshort);printff1目的端II號:%dnH,ntohs(*(unsignedshort*)decodeptr);decodepti+=sizeof(uiisignedshort);printf(M序列號:dn”,ntolil(*(unsignedmt*)decodeptr);decodepti+=sizeof(uiisignediiit);printf(M確認號:%dn”,ntolil(*(unsignedmt*)decodeptr);decodepti+=sizeof(uiisignediiit);clwheadlen=(*decodeptr)4)*4;piintf(”首部長度:
13、headlen);decodepti+=sizeof(uiisignedchai);pmitf(標志:”);switch(*decodepti)case32:pnntf(HURGnn);break;case16:printf(HACKn,);break;case8:prmtfnPSHjiM);break;case4:printf(nRSTnH);break;case2:pnntfSYNS”);bdk;case1:pimtf(nFIIsr,ar,);bieak;default:未知n”);decodepti+=sizeoffunsignedchai);printf(M窗I丨人?。篸iT;ntoh
14、s(*(unsignedshort*)decodeptr);decodepti+=sizeoffunsignedshort);printf(”校驗和:%dn”,ntohs(*(unsignedshort*)decodeptr);decodepti+=sizeoffunsignedshort);printf(”緊急指針:diT;ntohs(*(unsignedshort*)decodeptr);decodepti+=sizeoffunsignedshort);printf(M數(shù)據(jù)區(qū):%sndecodeptr);將TCP包寫入二進制文件FILE*fp=NULL;if(fp=fopenCTCP.daf;nwbM)=NULL)priiitf(ncan,topenf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 技校合作辦學(xué)協(xié)議書
- 施工安全包干協(xié)議書
- 租賃傭金協(xié)議書范本
- 意外免責(zé)協(xié)議書范文
- 收貨免責(zé)協(xié)議書模板
- 勞務(wù)協(xié)議書勞動仲裁
- 拍攝商用協(xié)議書范本
- 蘇州廠房拆遷協(xié)議書
- 裝修公司退款協(xié)議書
- 摩托租賃免責(zé)協(xié)議書
- 大健康特色產(chǎn)業(yè)園項目商業(yè)計劃書
- 水泥混凝土路面翻修施工方案詳解
- 護理感動案例
- 2024年10月自考04851產(chǎn)品設(shè)計程序與方法試題及答案含評分參考
- 養(yǎng)老項目案例研究-泰康之家北京燕園市場調(diào)研報告
- 美國租房合同中文
- 科室一級護理質(zhì)控匯報
- 五年(2020-2024)高考地理真題分類匯編專題13資源、環(huán)境和國家安全原卷版
- 科技公司研發(fā)團隊建設(shè)方案
- 農(nóng)業(yè)昆蟲學(xué)-形考測試一-國開(ZJ)-參考資料
- 小狗錢錢理財童話
評論
0/150
提交評論