TCP数据包的发送和接收设计报告.doc

TCP数据包的发送和接收设计报告.doc

ID:50953531

大小:193.50 KB

页数:11页

时间:2020-03-16

TCP数据包的发送和接收设计报告.doc_第1页
TCP数据包的发送和接收设计报告.doc_第2页
TCP数据包的发送和接收设计报告.doc_第3页
TCP数据包的发送和接收设计报告.doc_第4页
TCP数据包的发送和接收设计报告.doc_第5页
资源描述:

《TCP数据包的发送和接收设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、湖北工业大学课程设计报告设计题目:TCP数据包的发送和接收专业:计算机科学与技术班级:10计科2班学号:1010311211姓名:吕红杰指导老师:涂军一.设计题目发送和接收TCP数据包二.设计要求1.正确理解题意;2.具有良好的编程规范和适当的注释;3.有详细的文档,文档中应包括设计题目涉及的基础知识、设计思路、程序流程图、程序清单、开发中遇到的问题及解决方法、设计中待解决的问题及改进方向。三.需求分析TCP是一种面向连接的、可靠的传输层协议。TCP协议工作在网络层IP协议的基础上。本课程设计的目的是设计一个发送和接收TCP数据包的程序,

2、其功能是填充一个TCP数据包,发送给目的主机,并在目的主机接收此TCP数据包,将数据字段显示显示在标准输出上。四.具体设计1.创建一个原始套接字,并设置IP头选项SOCKETsock;sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP);或者:sock=WSASoccket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERLAPPED);这里,设置了SOCK_RAW标志,表示我们声明的是一个原始套接字类型。为使用发送接收超时设置,必须将标志位置位置为WSA_FLA

3、G_OVERLAPPED。在本课程设计中,发送TCP包时隐藏了自己的IP地址,因此我们要自己填充IP头,设置IP头操作选项。其中flag设置为ture,并设定IP_HDRINCL选项,表明自己来构造IP头。setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&Flag,sizeof(Flag));inttimeout=1000;setsockopt(sock,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout));在这里我们使用基本套接字SOL_

4、SOCKET,设置SO_SNDTIMEO表示使用发送超时设置,超时时间设置为1000ms。2.构造IP头和TCP头这里,IP头和TCP头以及TCP伪部的构造请参考下面它们的数据结构。typedefstruct_iphdr//定义IP首部{UCHARh_lenver;//4位首部长度+4位IP版本号UCHARtos;//8位服务类型TOSUSHORTtotal_len;//16位总长度(字节)USHORTident;//16位标识USHORTfrag_and_flags;//3位标志位UCHARttl;//8位生存时间TTLUCHARpro

5、to;//8位协议(TCP,UDP或其他)USHORTchecksum;//16位IP首部校验和ULONGsourceIP;//32位源IP地址ULONGdestIP;//32位目的IP地址}IP_HEADER;typedefstructpsd_hdr//定义TCP伪首部{ULONGsaddr;//源地址ULONGdaddr;//目的地址UCHARmbz;//没用UCHARptcl;//协议类型USHORTtcpl;//TCP长度}PSD_HEADER;typedefstruct_tcphdr//定义TCP首部{USHORTth_spor

6、t;//16位源端口USHORTth_dport;//16位目的端口ULONGth_seq;//32位序列号ULONGth_ack;//32位确认号UCHARth_lenres;//4位首部长度/6位保留字UCHARth_flag;//6位标志位USHORTth_win;//16位窗口大小USHORTth_sum;//16位校验和USHORTth_urp;//16位紧急数据偏移量}TCP_HEADER;3.计算校验和的子函数在填充数据包的过程中,需要调用计算校验和的函数checksum两次,分别用于校验IP头和TCP头部(加上伪头部),其

7、实现代码如下:USHORTchecksum(USHORT*buffer,intsize){unsignedlongcksum=0;while(size>1){cksum+=*buffer++;size-=sizeof(USHORT);}if(size){cksum+=*(UCHAR*)buffer;}cksum=(cksum>>16)+(cksum&0xffff);cksum+=(cksum>>16);return(USHORT)(~cksum);}4.流程图五.实验内容1.先用vc++编译运行程序代码2.用命令指示符运行Debug下的s

8、endTCP3.输入源ip和端口及目的ip和端口4.输入发送内容5.发送完成六.附代码#include#include#include

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。