电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

发送TCP数据包设计说明书

16页
  • 卖家[上传人]:hs****ma
  • 文档编号:483959320
  • 上传时间:2023-05-15
  • 文档格式:DOCX
  • 文档大小:166.18KB
  • / 16 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、发送TCP数据包设计说明书课程设计准备1.1 课程设计目的TCP(传输控制协议)是一种面向连接的、可靠的传输层协议。TCP协议在网络层IP协议的基础上,向应用层用户进程提供可靠的、全双工的数据传输流。本课程设计的目的就是设计一个发送TCP数据包的程序,并根据本设计说明TCP数据包的结构以及TCP协议与IP协议的关系,使学生对TCP协议的工作原理有更深入的认识。1.2 课程设计的要求本程序的功能是填充一个TCP数据包,并发送给目的主机。1)以命令行形式运行:SendTCPsourse_ipsourse_portdest_ipdest_port其中,SendTCP/程序名;sourse_ip为源端IP地址;sourse_port为源埠;dest_ip为目的IP地址;dest_port为目的埠。2)其它的TCP头部参数请自行设定。3) 数据字段为“Thisismyhomeworkofnetwork,Iamhappy!”。4) 发送成功后在屏幕上输出”sendOK”。1.3相关知识编制本程序前要对TCP协议有一定的了解。当应用程序有报文需要通过TCP发送时,它就将此应用层报文传送给执行TCP协

      2、议的传输实体。TCP传输实体将用户数据加上TCP报头,形成TCP数据包,在TCP数据包上增加IP头部,形成IP包。下图显示的是TCP数据包和IP包的关系。TCP协议的传输单元为报文段,其格式如图所示。报文段报头的长度为20B60Bo其中固定长度为20B,报文段长度最多为40B。TCP报文段主要包括以下字段。埠号:埠号字段包括源埠号和目的埠号。每个埠号的长度是16位,分别表示发送该TCP包的应用进程的埠号和接收该TCP包的应用进程的埠号。序号:长度为32位。由于TCP协议是面向数据流的,它所传送的报文段可以视为连续的数据流,因此需要给每一个字节编号。序号字段的“序号”指的是本报文段数据的第一个字节的顺序号。包的第一个字节的序号。 报头长度:该字段长度为4位。TCP报头长度是以4B为一个单元来计算的,实际上报头长度在20B60B子间。因此这个字段的值在515之间。 保留:长度为6位,留作今后使用,目前全部置0。 控制:这个字段定义了6种不同的标志,每个标志占一位,在同一时间可以设置一位或多位。URGi为1时,表明有需要紧急处理的数据。ACK为1时,表明确认号的字段有效。PST位为1时,表明

      3、要强制切断连接。SYN位为1时,表明有确立连接的请求,这时,把序号字段的初始值作为序号字段的值,以便开始通信。FIN为1时,表明发送方已经没有资料发送了。 窗口大小:长度为16位,窗口对应的数据是以字节为单位的数据,因此最多能够传送的数据为65535B。 紧急指针:该字段的长度为16位,指向必须紧急处理的数据的位置,只有当标志URG=1时紧急指针才有效。从TCP报头后面的报文资料开始,到紧急指针所指出的长度的数据,就是必须紧急处理的数据。 选项:该字段可以多达40B,包括单字节选项和多字节选项。 校验和:该字段长度多达16位,校验和的校验围包括伪头部、TCP报头以及应用层来的数据。其计算方法与IP协议头部的校验的计算方法一样。伪头部为12B,它本身并不是TCP数据包的真正头部,只是在计算校验和时,临时和TCP数据包连接在一起。伪头部的格式如下图所示。源IP地址目的IP地址00000000协议号(6)TCP长度1.4工作环境;硬件:PC机一台。软件:MicrosoftVisualC+6.0二课程设计分析本课程设计的目标是发送一个TCP资料包,可以利用原始套接字来完成这个工作。整个程序由初

      4、始化原始套接字和发送TCP数据包两个部分组成。2.1使用原始套接字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_FLAG_OVERLAPPED在本课程设计中,发送TCP包时隐藏了自己的IP地址,因此我们要自己填充IP头,设置IP头操作选项。其中flag设置为ture,并设定IP_HDRINCL选项,表明自己来构造IP头。注意,如果设置IP_HDRINCL选项,那么必须具有administrator权限,要不就必须修改注册表:HKEY_LOCAL_MACHINESystemCurrentControlSetServicesAfdParameter修改键:DisableRawSecurity(类型为DWORD把值修改为1。如果没有,就添加。BOOLFlag=TRU

      5、E;setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&Flag,sizeof(Flag);inttimeout=1000setsockopt(sock,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout);在这里我们使用基本套接字SOL_SOCKET设置SO_SNDTIMEO!示使用发送超时设置,超时时间设置为1000ms。2.2定义IP头部、TCP头部和伪头部的数据结构/定义IP首部typedefstruct_iphdrUCHARh_lenver;/4UCHARtos;/8USHORTtotal_len;/16USHORTident;/16USHORTfrag_and_flags;/3UCHARttl;/8UCHARproto;/8USHORTchecksum;/16ULONGsourceIP;/32ULONGdestIP;/32IP_HEADER;位首部长度+4位IP版本号位服务类型TOS位总长度(字节)位标识位标志位位生存时间TTL位协议(TCP,UDP或其它)位IP首部校验和位源I

      6、P地址位目的IP地址源地址目的地址没用/ 协议类型/TCP 长度位源埠位目的端口位序列号位确认号位首部长度/6 位保留字位标志位位窗口大小位校验和位紧急数据偏移量/定义TCPft首部typedefstructpsd_hdrULONGsaddr;/ULONGdaddr;/UCHARmbz;/UCHARptcl;USHORTtcpl;PSD_HEADER;/定义TCP!部typedefstruct_tcphdrUSHORTth_sport;/16USHORTth_dport;/16ULONGth_seq;/32ULONGth_ack;/32UCHARth_lenres;/4UCHARth_flag;/6USHORTth_win;/16USHORTth_sum;/16USHORTth_urp;/16TCP_HEADER;2.3计算校验和的子函数在填充数据包的过程中,需要调用计算校验和的函数checksum两次,分别用于校验IP头和TCP头部(加上伪头部),其实现代码如下:USHORTchecksum(USHORT*buffer,intsize)unsignedlongcksum=0;whil

      7、e(size1)cksum+=*buffer+;size-=sizeof(USHORT);if(size)cksum+=*(UCHAR*)buffer;cksum=(cksum16)+(cksum&0xffff);cksum+=(cksum16);return(USHORT)(cksum);2.4程序流程图三源代码#include#include#include#include#include#include#include#include#pragmacomment(lib,ws2_32.lib)#defineIPVER4/IP协议预定#defineMAX_BUFF_LEN65500/发送缓冲区最大值typedef struct ip_hdr / UCHAR h_verlen;/4UCHAR tos;/8USHORT total_len;/16USHORT ident; /16USHORT frag_and_flags; /3UCHAR ttl;/8UCHAR proto; /8USHORT checksum;/16ULONG sourceIP;/32ULONG destIP; /3

      8、2 IP_HEADER;定义 IP 首部位首部长度,4 位 IP 版本号位服务类型TOS位总长度(字节)位标识位标志位位生存时间TTL位协议 (TCP, UDP 或其它 )位 IP 首部校验和位源 IP 地址位目的 IP 地址typedefstructtsd_hdr定义TCP伪首部ULONGsaddr;/源地址ULONGdaddr;/目的地址UCHARmbz;/没用UCHARptcl;/协议类型USHORTtcpl;/TCP长度PSD_HEADER;typedefstructtcp_hdr定义TCP首部USHORTth_sport;/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;/CheckSum:计算校验和的子函数USHORTchecksum(USHORT*buffer,intsize)unsignedlongcksum=0;while(size1)cksum+=*buffer+;size-=sizeof(USHORT);if(size)cksum+=*(UCHAR*)buffer;cksum=(cksum16)+(cksum&0xffff);cksum+=(cksum16);return(USHORT)(cksum);intmain(intargc,char*argv)

      《发送TCP数据包设计说明书》由会员hs****ma分享,可在线阅读,更多相关《发送TCP数据包设计说明书》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.