计算机网络课程报告--发送TCP数据报.docx

上传人:lao****ou 文档编号:1118513 上传时间:2024-11-20 格式:DOCX 页数:9 大小:91.16KB
下载 相关 举报
计算机网络课程报告--发送TCP数据报.docx_第1页
第1页 / 共9页
计算机网络课程报告--发送TCP数据报.docx_第2页
第2页 / 共9页
计算机网络课程报告--发送TCP数据报.docx_第3页
第3页 / 共9页
计算机网络课程报告--发送TCP数据报.docx_第4页
第4页 / 共9页
计算机网络课程报告--发送TCP数据报.docx_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《计算机网络课程报告--发送TCP数据报.docx》由会员分享,可在线阅读,更多相关《计算机网络课程报告--发送TCP数据报.docx(9页珍藏版)》请在第一文库网上搜索。

1、计算机网络课程设计报告题目:发送TCP数据报一、问题描述(把你所选的题目及要求说一下)TCP(传输控制协议)是一种面向连接的、可靠的传输层协议。TCP协议在网络层IP协议的基础上,向应用层用户进程提供可靠的、全双工的数据传输流。本课程设计的目的就是设计一个发送TCP数据包的程序,并根据本设计说明TCP数据包的结构以及TCP协议与IP协议的关系,使学生对TCP协议的工作原理有更深入的认识。运行环境:MicrosoftVisua1C+6.0二、概要设计(抽象数据类型定义)本程序的功能是填充一个TCP数据包,并发送给目的主机。1)以命令行形式运行:SendTCPsourse_ipsourse_por

2、tdest_ipdest_port其中,SendTCP为程序名;SOUrSe_ip为源端IP地址;SOUrSe_port为源端口;dcst_ip为目的IP地址;dest_pOrt为目的端口。2)其它的TCP头部参数请自行设定。3)数据字段为Thisismyhomeworkofnetwork,Iamhappy!,04)发送成功后在屏幕上输出“SendOK”。5)程序流程图如下:三、详细设计(主要算法和函数间的调用关系)本课程设计的目标是发送一个TCP资料包,可以利用原始套接字来完成这个工作。整个程序由初始化原始套接字和发送TCP数据包两个部分组成。1)使用原始套接字SOCKETsock;sock

3、=socket(AF_INET,SOCK_RAW,IPPROTO_IP);为使用发送接收超时设置,必须将标志位置位置为WSA_F1AG_OVER1APPED0在本课程设计中,发送TCP包时隐藏了自己的IP地址,因此我们要自己填充IP头,设置IP头操作选项。其中f1ag设置为ture,并设定IPJIDRINC1选项,表明自己来构造IP头。2)超时设置B1F1ag=TRUE;setsockopt(sock,IPPROTOIP,IPHDRINC1,(char*)&F1ag,sizeof(F1ag);Inttimeout=1000;setsockopt(sock,SO1SOCKET,SOSNDTIME

4、O,(char*)timeout,sizeof(timeout);在这里我们使用基本套接字SOJSOCKET,设置SO_SNDTIMEO表示使用发送超时设置,超时时间设置为IOOOms03)定义IP首部typedefstructiphdrUCHARhenver;/4位首部长度+4位IP版本号UCHARtos;8位服务类型TOSUSHORTtota1_1en;16位总长度(字节)USHORTident;16位标识USHORTfragandf1ags;3位标志位UCHARtt1;8位生存时间TT1UCHARproto;USHORTchecksum;U1ONGSourceIP;/8位协议(TCP,U

5、DP或其它)16位IP首部校验和/32位源IP地址U1ONGdestIP;/32位目的IP地址IP_HEADER;)4)定义TCP伪首部typedefstructpsd_hdr(U1ONGsaddr;源地址daddr;目的地址UCHARmbz;UCHARptc1;协议类型USHORTtcp1;TCP长度PSD_HEADER;5)定义TCP首部typedefstruct_tcphdrUSHORTthsport;16位源端口号USHORTth_dport;16位目的端口U1ONGthseq;/32位序列号U1ONGth_ack;/32位确认号UCHARth1enres;/4位首部长度/6位保留字U

6、CHARth_f1ag;/6位标志位USHORTth_win;16位窗口大小USHORTth_sum;/16位校验和USHORTth_urp;/16位紧急数据偏移量TCP_HEADER;6)计算校验和的子函数在填充数据包的过程中,需要调用计算校验和的函数CheCkSUm两次,分别用于校验IP头和TCP头部(加上伪头部),其实现代码如下:USHORTchecksum(USHORT*buffer,intsize)unsigned1ongcksum=0;whi1e(size1)(cksum+=*buffer+;size-=Sizeof(USHORT);)if(size)cksum+=*(UCHAR*

7、)buffer;cksum=(cksum16)+(cksum&Oxffff);cksum+=(cksum16);return(USHORT)(cksum);)四、调试分析(调式过程中出现的问题及如何改正)此图为第一次运行时出现的错误。错误原因为:当时没有输入源ip地址和目的ip地址。改正:在VC的工程设置菜单栏中输入源ip地址和目的ip地址,即可运行成功。五、心得体会(组内成员的分工及实习期间的体会)D成员分工张欣:代码的编写与修改,设计报告的数据流程图的设计刘凯莉:代码的调试与分析胡燕:设计报告的完成2)心得体会这次的课程设计让我们学到了很多东西。最大的收获是学会了TCP数据包的填充和发送。

8、在对TCP数据包进行填充时,首先需要我们去充分了解它的数据结构,在这个过程中可以了解相应字节上应该存放的内容和它们的功能。在实现TCP数据包的发送中,第一次深深接触了网络编程接口SoCket套接字的相关知识,虽然本次的课程设计只用到了其中一小部分知识,但这并不会影响对这方面知识的全面了解。总之这次的课程设计,让我们对网络中的数据收发有了一定的了解,并激发了对计算机网络的浓厚兴趣。六、用户手册(系统的使用方法介绍)C:UsersAdministratorDesktopDebug1.exe192.168.0.sendokJPressanykeytocontinue源代码如下:inc1ude#inc

9、1ude#inc1ude#inc1udeinc1ude#inc1ude#inc1ude#pragmacomment(1ib,*ws2-32.1ib*)idefineIPVER4/IP协议预定defineMAX_BUFF_1EN65500发送缓冲区最大值typedefstructiphdrUCHARh_ver1en;UCHARtos;USHORTtota1_1en;USHORTident;定义IP首部/4位首部长度,4位IP版本号/8位服务类型TOS16位总长度(字节)/16位标识USHORTfragandf1ags;UCHARtt1;UCHARproto;USHORTchecksum;U1ON

10、GSourceIP;U1ONGdestIP;ipjeader;/3位标志位8位生存时间TT1/8位协议(TCP,UDP或其它)/16位IP首部校验和/32位源IP地址32位目的IP地址typedefstructtsdhdr定义TCP伪首部U1ONGsaddr;源地址U1ONGdadc1r;目的地址UCHARmbz;没用UCHARptc1;协议类型USHORTtcp1;TCP长度PSD_HEADER;typedefstructtcphdr定义TCP首部USHORTth_sport;USHORTth_dport;U1ONGth_seq;U1ONGth_ack;UCHARth1enres;UCHAR

11、th_f1ag;USHORTth_win;USHORTth_sum;USHORTth_urp;TCP_HEADER;/16位源埠16位目的端口/32位序列号/32位确认号4位首部长度/6位保留字/6位标志位16位窗口大小16位校验和16位紧急数据偏移量/CheckSurn:计算校验和的子函数USHORTchecksum(USHORT*buffer,intsize)unsigned1ongcksum=0;whi1e(size1)(cksum+=*buffer+;size-=Sizeof(USHORT);)if(size)(cksum+=*(UCHAR*)buffer;)cksum=(cksum1

12、6)+(cksum&Oxffff);cksum+=(cksum16);return(USHORT)(cksum);)intmain(intargc,char*argv)(WSADATAWSAData;SOCKETsock;ip_headeripHeader;TCP_HEADERtcpHeader;PSD_HEADERpsdHeader;charSendto_BuffMAX_BUFF_1EN;发送缓冲区unsignedshortCheckBuffMAX_BUFF_1EN;检验和缓冲区constchartcp_send_data=zzThisismyhomeworkofnetwort,Iamhap

13、py!”);BOO1f1ag;intrect,Time0ver;if(argc!=5)(printf(*Useage:SendTcpsoruceipsource_portdest_ipdest_portn);returnfa1se;)if(WSAStartUP(MAKEWoRD2),OSAData)!=0)(printf(xzWSAStartupError!nz,);returnfa1se;)if(sock=WSASocket(AF_INET,SoCK_RAW,IPPROT(1RAW,NU11,0,WSA_F1AG_OVER1APPED)=INVA1ID_SOCKET)printf(z,Soc

14、ketSetupError!nz,);returnfa1se;)f1ag=true;if(setsockopt(sock,IPPROTO_IP,IP_HDRINC1,(char*)f1ag,sizeof(f1ag)=SOCKET_ERROR)(printf(*setsockoptIPHDRINC1error!nz,);returnfa1se;)nTimeOver=1000;if(setsockopt(sock,SO1SOCKET,SO_SNDTIMEO,(char*)&nTimever,sizeof(nTimever)=SOCKETERROR)(printf(*setsockoptSOSNDTIMEOerror!,);returnfa1se;)填充IP首部ipHeadcr.h_ver1en=(IPVER4sizeof(ipHeader)sizeof(unsigned1ong);ipHeader.tos=(UCHAR)O;ipHeadcr.tota11en

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服