- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
发送TCP数据包方案
发送TCP数据包
1.3相关识 编制本程序前要对TCP协议有一定的了解。当应用程序有报文需要通过TCP发送时,它就将此应用层报文传送给执行TCP协议的传输实体。TCP传输实体将用户数据加上TCP报头,形成TCP数据包,在TCP数据包上增加IP头部,形成IP包。下图显示的是TCP数据包和IP包的关系。
TCP协议的传输单元为报文段,其格式如图所示。报文段报头的长度为20B~60B。其中固定长度为20B,报文段长度最多为40B。TCP报文段主要包括以下字段。
·埠号号号号个号长16位,分别发该TCP应进号该TCP应进号
·序号长为32TCP协议数传报视为连续的数给个节编号序号序号报数个节顺序号
TCP头部 数据
015 1631
源端口号 目的端口号 序号 确认号 报头长度 保留 URG ACK PSH RST SYN FIN 窗口大小 校验和 紧急指针 选项及填充 ·确认号该长为32个TCP个节序号 ·报头长该长为4TCP报头长4B为个单来计实际报头长20B~60B子间。因此这个字段的值在5~15之间。
·保留:长为60。
·控制:这个义6种不同的标个标时间以设URG为1时紧急处数ACK为1时认号PST位为1时强切断连SYN位为1时立连请这时序号为序号开始FIN为1时发经没资发
·窗口大小:长为16对应数节为单数够传数为65535B
·紧针该长为16须紧急处数当标URG1时紧针从TCP报头报文资开始紧针长数须紧急处数
·选项该达40B单节选项节选项 ·校验该长达16验验围包伪头TCP报头以应层来数计IP协议头验计样伪头为12BTCP数头在计验时临时TCP数连伪头图IP地址 目的IP地址 协议号6) TCP长1.4工作环 软Microsoft Visual C++ 6.0;硬件:PC机一台。二 课程设计分析
本课程设计的目标是发送一个TCP资料包,可以利用原始套接字来完成这个工作。整个程序由初始化原始套接字和发送TCP数据包两个部分组成。
2.1使用原始套接字
SOCKET sock; sock socketAF_INET,SOCK_RAW,IPPROTO_IP; 或者: sockWSASoccketAF_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_MACHINE\System\CurrentControlSet\Services\Afd\Parameter\ 修改键:DisableRawSecurity(类型为DWORD),把值修改为 1。如果没有,就添加。 BOOL FlagTRUE; setsockoptsock, IPPROTO_IP, IP_HDRINCL, char *Flag, sizeofFlag;
int timeout1000;
setsockoptsock, SOL_SOCKET,SO_SNDTIMEO,char*timeout, sizeoftimeout;
在这里我们使用基本套接字SOL_SOCKET,设置SO_SNDTIMEO表示使用发送超时设置,超时时间设置为1000ms。
2.2定义IP头TCP头伪头数结//定义IPtypedef struct _iphdrUCHAR h_lenver;//4位首部长+4位IP版本号 UCHAR tos;//8务类TOS USHORT total_len;//16位总长节 USHORT ident;//16位标识 USHORT frag_and_flags; //3标 UCHAR ttl;//8位生存时间 TTL UCHAR proto;//8协议 TCP, UDP USHORT checksum; //16位IP首部校验 ULONG sourceIP;//32位源IP地址 ULONG destIP;//32位目的IP地址 IP_HEADER;
//定义TCP伪typedef struct psd_hdr ULONG saddr;//源地址 ULONG daddr;//目
文档评论(0)