版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖北工业大学课程设计报告设计题目:TCP数据包的发送和接收专 业:计算机科学与技术班级: 10 计科 2 班学号: 11姓 名:吕红杰 指导老师:涂军一设计题目发送和接收TCP数据包二设计要求1正确理解题意;2具有良好的编程规范和适当的注释;3有详细的文档,文档中应包括设计题目涉及的基础知识、设计思路、程序 流程图、程序清单、 开发中遇到的问题及解决方法、 设计中待解决的问题及改进 方向。三需求分析TCP是一种面向连接的、可靠的传输层协议。 TCP协议工作在网络层IP协议 的基础上。本课程设计的目的是设计一个发送和接收 TCP数据包的程序,其功能 是填充一个TCP数据包,发送给目的主机,并在目
2、的主机接收此TCP数据包,将 数据字段显示显示在标准输出上。四具体设计1. 创建一个原始套接字,并设置 IP 头选项SOCKET sock;sock = socket(AF_INET,SOCK_RAW,IPPROTO_IP); 或者: sock=WSASoccket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERLAPPE D);这里,设置了 SOCK_RAW志,表示我们声明的是一个原始套接字类型。为使用发送接收超时设置,必须将标志位置位置为 WSA_FLAG_OVERLAPP在本 课程设计中,发送TCP包时隐藏了自己的IP地址,因此我们要自己
3、填充IP头, 设置 IP 头操作选项。其中 flag 设置为 ture ,并设定 IP_HDRINCL 选项,表明 自己来构造 IP 头。setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&Flag, sizeof(Flag);int timeout=1000 ;setsockopt(sock, SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout, sizeof(timeout);在这里我们使用基本套接字 SOL_SOCKET设置SO_SNDTIME表示使用发送超时 设置,超时时间设置为 1000ms。2.构造IP头和T
4、CP头这里,IP头和TCP头以及TCP伪部的构造请参考下面它们的数据结构。typedef struct _iphdr算校验和的子函数在填充数据包的过程中,需要调用计算校验和的函数checksum两次,分别用于校验IP头和TCP头部(加上伪头部),其实现代码如下:USHORT checksum(USHORT *buffer, int size)unsigned long cksum=0;while(size 1)cksum+=*buffer+;size -=sizeof(USHORT);if(size )cksum += *(UCHAR*)buffer;cksum = (cksum 16) +
5、(cksum & 0xffff);cksum += (cksum 16);return (USHORT)(cksum);4.流程图IF五.实验内容1. 先用VC+编译运行程序代码2. 用命令指示符运行Debug下的sendTCPHlcroB*ft Wlndaws I脈本 67177MI1J版杈所荷 2009 Microsoft Corporat ion D保留所有杈別*C - JUscrs Stu liibaccl C :u JilJbas JstpSTCP的炭送和0)一 xDcbugC : xJUsers vtosJiibaXDesktonXTCPJJ 的岌进和整收 sen dTCP3.输入
6、源ip和端口及目的ip和端口S 苜虔豆:辭蛋示哥-sendKP 192.102 10 132.1oE.O L0nlcosofcWLndows6.1.7601版杈所有 U 210? Micro soft CorpotNitLon P保留所有杈利*,C : MJ sb rfi X.tosh ibac d C xUct o vs XIzdcJi Jba Dc a let n pTCP 丈文齬包 的疑送和按 帔bugG:MlsBrsXtoshibaXDesktopTCP 数据包的U ft D ebug s e ra di CP L.lbH.H.2 IM 1!?2_168.0.1 ieInpu Bat
7、End By Ct 1*1*2 :4.输入发送内容甘理旦 命寺涯示哥-sendTCP 192.102 10192 158 0-2 10Mic rose ft M in do us I服本 b .1.7bi41 J版.杈所有2009 Micrcisoft Corporation保弗所有杈刑*JnlG E Miser 3.Xlusilbacd C : 4)scr,s usliiJba据包的发_送和按I攵XTuliu;!C:MIsErsXtoshibasDesktoEXTCP据包的變j和-17Debuc|seridTCP 192.1&8.0.2 10 192 - 19.0.2 LQ1 nput Va
8、Ld :fefe吕红杰5.发送完成六.附代码#in elude #in elude #in elude #include #include #include #include #include #pragma comment(lib,)#define IPVER 4 /IP 协议预定#define MAX_BUFF_LEN 65500 / 发送缓冲区最大值typedef struct ip_hdr / 定义 IP 首部定义TCP伪首部UCHAR h_verlen; /4UCHAR tos; /8USHORT total_len; /16USHORT ident; /16USHORT frag_
9、and_flags; /3UCHAR ttl; /8UCHAR proto; /8USHORT checksum; /16ULONG sourceIP; /32ULONG destIP; /32 IP_HEADER;typedef struct tsd_hdr /ULONG saddr; / 源地址ULONG daddr; / 目的地址位首部长度 ,4 位 IP 版本号 位服务类型 TOS 位总长度(字节) 位标识位标志位位生存时间 TTL位协议 (TCP, UDP 或其他 )位 IP 首部校验和位源 IP 地址位目的 IP 地址定义TCP首部位源端口位目的端口位序列号位确认号位首部长度 /6
10、 位保留字位标志位位窗口大小位校验和 位紧急数据偏移量UCHAR ptcl; / 协议类型 USHORT tcpl; /TCP 长度 PSD_HEADER;typedef struct tcp_hdr /USHORT th_sport;/16USHORT th_dport;/16ULONG th_seq;/32ULONG th_ack;/32UCHAR th_lenres;/4UCHAR th_flag;/6USHORT th_win;/16USHORT th_sum; /16 USHORT th_urp;/16TCP_HEADER;/CheckSum: 计算校验和的子函数USHORT che
11、cksum(USHORT *buffer, int size) unsigned long cksum=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);int ReadData(char *str,int maxlen)int readlen=0;char ch=NULL;if(str=NULL|maxlen=0
12、)printf(ReadData Error!n);return 0;/failedprintf(Input Data(End By Ctrl+Z): n);while(maxlen)ch=getchar();if(ch=EOF) break;strreadlen+=ch; maxlen-;strreadlen=NULL;return readlen;int main(int argc, char* argv)WSADATA WSAData;SOCKET sock;IP_HEADER ipHeader;TCP_HEADER tcpHeader;PSD_HEADER psdHeader;char
13、 Sendto_BuffMAX_BUFF_LEN; / 发送缓冲区unsigned short check_BuffMAX_BUFF_LEN; /检验和缓冲区char tcp_send_data1000;int read_data_len=0;BOOL flag;int rect,nTimeOver;if(argc!= 5)dest_ipprintf(Usage: SendTcp soruce_ip source_port dest_port n);return false;read_data_len=ReadData(tcp_send_data,1000);if(read_data_len=
14、0) return 1;if(WSAStartup(MAKEWORD(2,2), &WSAData)!=0)printf(WSAStartup Error!n);return false;if(sock=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0,WSA_FLAG_OVERLAPPED)=INVALID_SOCKET)printf(Socket Setup Error!n);return false;flag=true;if(setsockopt(sock,IPPROTO_IP,IP_HDRINCL, (char*)&flag,sizeof(fl
15、ag)=SOCKET_ERROR)printf(setsockopt IP_HDRINCL error!n);return false;nTimeOver=1000;if (setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO,(char*)&nTimeOver, sizeof(nTimeOver)=SOCKET_ERROR)printf(setsockopt SO_SNDTIMEO error!n);return false;/ 填充 IP 首部=(IPVER4 | sizeof(ipHeader)/sizeof(unsigned long); =(UCHAR)0
16、;=htons(unsignedshort)sizeof(ipHeader)+sizeof(tcpHeader)+read_data_len);=0; /16 位标识=0; /3 位标志位=128; /8 位生存时间=IPPROTO_TCP; / 协议类型=0; / 检验和暂时为 0 =inet_addr(argv1); /32 位源 IP 地址 =inet_addr(argv3); /32 位目的 IP 地址/ 计算 IP 头部检验和 memset(check_Buff,0,MAX_BUFF_LEN); memcpy(check_Buff,&ipHeader,sizeof(IP_HEADER
17、);=checksum(check_Buff,sizeof(IP_HEADER);/ 构造TCP伪首部一 J一 J=0;一 J=htons(sizeof(TCP_HEADER)+read_data_len);位目的端口号位源端口号/ 填充TCP首部=htons(atoi(argv4); /16=htons(atoi(argv2); /16=0;/SYN序列号=0;/ACK序列号置为 0/TCP长度和保留位=(sizeof(tcpHeader)/sizeof(unsigned long)4|0);窗口大小偏移大小检验和暂时填为 0=2; /修改这里来实现不同的标志位探测,2是SYN 1是/FIN
18、 , 16是 ACK探测等等=htons(unsigned short)16384); /=0;/=0;/ / 计算TCP校验和memset(check_Buff,0,MAX_BUFF_LEN);memcpy(check_Buff,&psdHeader,sizeof(psdHeader);memcpy(check_Buff+sizeof(psdHeader),&tcpHeader,sizeof(tcpHeader);memcpy(check_Buff+sizeof(PSD_HEADER)+sizeof(TCP_HEADER), tcp_send_data,read_data_len);=checksum(check_Buff,sizeof(PSD_HEADER)+sizeof(TCP_HEADER)+read_data_len);/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于情景再现的博物馆文物展示动画设计研究
- PDCoV核衣壳蛋白相分离的机制研究
- 二零二五年度快递配送与代收货款合作协议模板
- 加入价值链组织模式对农户借贷行为的影响研究
- 2025年度电子劳动合同模板与员工离职手续简化合同
- 2025年度改签用人单位跨区域劳务派遣服务合同
- 渣土运输施工方案
- 2025年度历史文化街区装修合同解除及文化遗产保护协议
- 二零二五年度房地产开发项目评估合同
- 2025年度车库租赁合同(含车位租赁与租赁期限最长5年)
- 2025-2030年中国陶瓷电容器行业运营状况与发展前景分析报告
- 二零二五年仓储配送中心物业管理与优化升级合同3篇
- 2025届厦门高三1月质检期末联考数学答案
- 音乐作品录制许可
- 江苏省无锡市2023-2024学年高三上学期期终教学质量调研测试语文试题(解析版)
- 拉萨市2025届高三第一次联考(一模)英语试卷(含答案解析)
- 开题报告:AIGC背景下大学英语教学设计重构研究
- 师德标兵先进事迹材料师德标兵个人主要事迹
- 连锁商务酒店述职报告
- 《实践论》(原文)毛泽东
- 第三单元名著导读《红星照耀中国》(公开课一等奖创新教学设计+说课稿)
评论
0/150
提交评论