TCP数据包的发送和接收设计报告_第1页
TCP数据包的发送和接收设计报告_第2页
TCP数据包的发送和接收设计报告_第3页
TCP数据包的发送和接收设计报告_第4页
TCP数据包的发送和接收设计报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖北工业大学课程规划报告设计主题:传输和接收数据包专业:计算机科学与技术班级级别:10门课程,2个班级号码:姓氏:卢教员:涂军一.设计主题发送和接收TCP数据包二。设计要求1.正确理解主题的含义;2.具有良好的编程规范和适当的注释;3.有详细的文件,应包括设计主题涉及的基本知识、设计思想、程序流程图、程序清单、开发中遇到的问题及其解决方法、设计中需要解决的问题和改进方向。三。需求分析TCP是一种面向连接的可靠传输层协议。协议是在网络层协议的基础上工作的。本课程设计的目的是设计一个发送和接收TCP数据包的程序。它的功能是填充一个TCP数据包,将其发送到目的主机,在目的主机上接收TCP数据包,并在标准输出上显示数据字段。四.特定设计1.创建一个原始套接字并设置IP头选项SOCKET sock。sock=套接字(自动网络接口、SOCK_RAW、IPPROTO _ IP);或者:sock=WSASoccket(自动变量_INET、SOCK_RAW、IPPROTO_IP、空、0、WSA _ FLAG _ COMPLATED);这里,SOCK_RAW标志被设置为表示我们正在声明一个原始的套接字类型。为了使用发送-接收超时设置,标志位置必须是WSA _ FLAG _ COMPLATED。在本课程的设计中,我们在发送TCP数据包时隐藏了IP地址,因此我们必须填写IP报头并设置IP报头操作选项。该标志被设置为真,并且设置了IP_HDRINCL选项,以指示IP报头是由它自己构造的。setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char *)标志,大小(标志);int timeout=1000setsockopt(sock,SOL_SOCKET,SO_SNDTIMEO,(char*)超时,sizeof(超时);这里我们使用基本套接字SOL_SOCKET,设置SO _ SNDTIMEO意味着使用发送超时设置,超时设置为1000毫秒2.构建IP报头和TCP报头在这里,请参考下面的数据结构来构造IP报头、TCP报头和TCP虚拟报头。Typedef结构_iphdr /定义IP头UCHAR h _ lenver/4位报头长度4位IP版本号UCHAR tos/8位服务类型TOSUSHORT total _ len/16位总长度(字节)USHORT ident。/16位标识USHORT frag _ and _ flags/3位标志位UCHAR ttl/8位TTLUCHAR原型;/8位协议(TCP、UDP或其他)USHORT校验和。/16位IP报头校验和ULONG sourceIP/32位源IP地址ULONG destIP/32位目的地址 IP _ HEADERtypedefstrupsd _ HDR/定义了TCP伪头ULONG saddr/源地址ULONG daddr/目的地址UCHAR mbz/没用UCHAR ptcl/协议类型USHORT tcpl。/传输控制协议长度 PSD _ HEADERTypedef struct _tcphdr /定义了TCP头USHORT th _ sport/16位源端口USHORT th _ dport/16位目标端口ULONG th_seq。/32位序列号ULONG th _ ack/32位确认号UCHAR th _ lenres/4位报头长度/6位保留字UCHAR th _ flag/6位标志位USHORT th _ win/16位窗口大小USHORT th _ sum/16位校验和USHORT th _ urp/16位紧急数据偏移 TCP _ HEADER3.计算校验和的子功能在填充数据包的过程中,计算校验和的函数校验和需要被调用两次,以分别检查IP报头和TCP报头(加上伪报头)。其实现代码如下:USHORT校验和(USHORT *缓冲区,int大小)无符号长cksum=0;同时(尺寸1)cksum=*缓冲区;size-=sizeof(USHORT);if(大小)cksum=*(UCHAR*)缓冲区;cksum=(cksum 16)(cksum0x ffff);CK sum=(CK sum 16);返回(USHORT)( CK sum);4.流程图V.实验内容1.首先用vc编译并运行程序代码2.使用命令指示器在调试下运行发送TCP3.输入源ip和端口以及目标ip和端口4.输入发送内容5.发送完成六.附加代码#包括#包括#包括#包括#包括#包括#包括#包括#pragma注释(lib, ws2_32.lib )# definipver 4/ip协议保留#定义MAX_BUFF_LEN 65500 /发送缓冲区最大值typedef结构ip_hdr /定义知识产权首部UCHAR h _ verlen/4位首部长度,4位知识产权版本号UCHAR tos/8位服务类型美国国际商用机器公司公司软件USHORT total _ len/16位总长度(字节)USHORT ident ./16位标识USHORT frag _ and _ flags/3位标志位UCHAR ttl/8位生存时间TTLUCHAR原型;/8位协议(TCP,UDP或其他)USHORT校验和/16 .位知识产权首部校验和ULONG sourceIP/32位源知识产权地址ULONG destIP/32位目的知识产权地址 IP _标头typedef结构tsd_hdr /定义传输控制协议伪首部ULONG saddr/源地址ULONG daddr/目的地址UCHAR mbz/没用UCHAR ptcl/协议类型USHORT tcpl ./传输控制协议长度 PSD _ HEADERtypedef结构tcp_hdr /定义传输控制协议首部USHORT th _ sport/16位源端口USHORT th _ dport/16位目的端口ULONG th_seq ./32位序列号ULONG th _ ack/32位确认号UCHAR th _ lenres/4位首部长度/6位保留字UCHAR th _ flag/6位标志位USHORT th _ win/16位窗口大小USHORT th _ sum/16位校验和USHORT th _ urp/16位紧急数据偏移量 TCP _ HEADER/校验和:计算校验和的子函数USHORT校验和(USHORT *缓冲区,int大小)无符号长cksum=0;同时(尺寸1)cksum=*缓冲区;size-=sizeof(USHORT);如果(大小)cksum=*(UCHAR*)缓冲区;cksum=(cksum 16)(cksum0x ffff);CK总和=(CK总和16);返回(乌斯沃特)( CK萨默);int ReadData(char *str,int maxlen)int读取len=0;char ch=空;if(str=NULL|maxlen=0)printf(读取数据错误! n );返回0;/失败printf(输入数据(按计算机的ctrl按键键结束): n;同时(maxlen)ch=getchar();如果(ch=EOF)中断;strread len=ch;max len-;字符串读取镜头=空;返回readlenint main(int argc,char* argv)WSADataSOCKET sock .IP _ HEADER ipHeaderTCP _ HEADERPSD _ HEADER psdHeader茶发送到_缓冲区最大_缓冲区_ LEN;/发送缓冲区无符号短校验_缓冲器最大_缓冲器_透镜;/检验和缓冲区计费传输控制协议发送数据1000;int read _ data _ len=0;BOOL标志;int rect,nTimeOverif(argc!=5)打印(“使用:发送数据包或源端口目的端口目的端口 n”);返回错误的读取数据=读取数据(传输控制协议发送数据,1000);如果(read_data_len=0)返回1;if(WSAStartup(MAKEWORD(2,2),WSAData)!=0)printf(WSAStartup错误! n );返回错误的如果(sock=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,空,0,WSA _ FLAG _ COMPATTED)=无效_套接字)printf(套接字设置错误! n );返回错误的标志=真;if(setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)标志,sizeof(标志)=SOCKET _ ERROR)printf(setsockopt IP_HDRINCL错误

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论