发送TCP数据包设计说明书_第1页
发送TCP数据包设计说明书_第2页
发送TCP数据包设计说明书_第3页
发送TCP数据包设计说明书_第4页
发送TCP数据包设计说明书_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1 发送 据包设计说明书 一 课程设计准备 程 设计 目的 输控制协议)是一种面向连接的、可靠的传输层协议。 议在网络层 议的基础上,向应用层用户进程提供可靠的、全双工的数据传输流。本课程设计的目的就是设计一个发送 据包的程序,并根据本设计说明 据包的结构以及 议与 议的关系,使学生对议的工作原理有更深入的认识。 程 设计 的要求 本程序的功能是填充一个 据包,并发送给目的主机。 1) 以命令行形式运行: 中, 程序名; 源端 址; 源埠;目的 址; 目的埠。 2) 其它的 部参数请自行设定。 3) 数据字段为“ is my of am 。 4) 发送成功后在屏幕上输出 ”K”。 2 关 知 识 编制本程序前要对 议有一定的了解。当应用程序有报文需要通过送时,它就将此应用 层报文传送给执行 议的传输实体。 头,形成 据包,在 据包上增加 部,形成 。下图显示的是 据包和 的关系。 议的传输单元为报文段,其格式如图所示。报文段报头的长度为20B60B。其中固定长度为 20B,报文段长度最多为 40B。 文段主要包括以下字段。 埠 号 :埠 号 字段包括源埠 号 和目的埠 号 。每 个 埠 号 的 长 度是 16 位,分别 表示 发 送 该 用 进 程的埠 号 和接收 该 的 应 用 进 程的埠 号 。 序号 : 长 度 为 32 位。由于 议 是面向 数 据流的,它所 传 送的 报 文段可以 视为连续的数 据流,因此需要 给 每一 个 字 节编号 。 序号 字段的“ 序号 ”指的是本 报 文段 数 据的第一 个 字 节 的 顺序号 。 部 数据 0 15 16 31 源端口号 目的端口号 序号 确认号 报头长度 保留 口大小 校验和 紧急指针 选项及填充 确 认号 : 该 字段 的 长 度 为 32 位,它表示接收端希望接收的下一 个 字 节 的 序号 。 头 据 据 头 3 报头长 度: 该 字段 长 度 为 4 位。 头长 度是以 4B 为 一 个单 元 来计算的, 实际 上 报头长 度在 20B60B 子间。因此这个字段的值在 515 之间。 保留: 长 度 为 6位,留作今后使用,目前全部置 0。 控制: 这个 字段定 义 了 6种不同的 标 志,每 个标 志占一位,在同一 时间可 以设 置一位或多位。 1 时 ,表明有需要 紧急处 理的 数 据。 1时 ,表明确 认号 的字段有效。 为 1 时 ,表明要 强 制 切断连 接。 时 ,表明有确 立连 接的 请 求, 这时 ,把 序号 字段的初始值作 为序号 字段的值,以便 开始 通信。 时 ,表明 发 送方已 经没 有 资 料 发 送了。 窗口大小: 长 度 为 16 位,窗口 对应 的 数 据是以字 节为单 位的 数 据,因此最多能 够传 送的 数 据 为 65535B。 紧 急指 针 : 该 字段的 长 度 为 16 位,指向必 须紧急处 理的 数 据的位置,只有 当标 志 时紧 急指 针 才有效。 从 面的 报文资 料 开始 ,到紧 急指 针 所指出的 长 度的 数 据,就是必 须紧急处 理的 数 据。 选项 : 该 字段可以多 达 40B,包括 单 字 节选项 和多字 节选项 。 校 验 和: 该 字段 长 度多 达 16 位,校 验 和的 校 验 范 围包 括 伪头 部、 应 用 层来 的 数 据。其 计 算方法与 议头 部的校 验 的 计 算方法一样 。 伪头 部 为 12B,它本身并不是 包的真正 头 部,只是 在计 算校 验和 时 , 临时 和 包 连 接在一起。 伪头 部的格式如下 图 所示。 源 目的 址 00000000 协议号 ( 6) 作 环 境 软 件: + 件: 4 二 课程设计分析 本课程设计的目标是发送一个 料包,可以利用原始套接字来完成这个工作。整个程 序由初始化原始套接字和发送 据包两个部分组成。 用原始套接字 或者: , 这里,我们设置了 志,表示我们声明的是一个原始套接字类型。 为 使 用 发 送 接 收 超 时 设 置 , 必 须 将 标 志 位 置 位 置 为本课程设计中,发送 时隐藏了自己的 址,因此我们要自己填充 ,设置 操作选项。其中 置为 设定 项,表明自己来构造 。注意,如果设置 项,那么必须具有 限,要不就必须修改注册表: 修改键: 型为 把值修改 为 1。如果没有,就添加。 5 ()&; 000; &; 在这里我们使用基本套接字 置 示使用发送超时设置,超时时间设置为 1000 2 2 定 义 、 部和 伪头 部的 数 据 结 构 /定 义 /4位首部 长 度 +4位 /8位服 务类 型 /16 位 总长 度(字 节 ) /16 位 标识 ; /8位生存 时间 /8位 协议 (其它 ) /16位 和 /32位源 /32位目的 6 /定 义 首部 /源地址 /目的地址 /没 用 /协议类 型 / 度 /定 义 部 /16 位源埠 /16 位目的端口 /32 位 序列号 /32 位确 认号 /4位首部 长 度 /6位保留字 /6位 标 志位 /16位窗口大小 /16位校 验 和 /16位 紧 急 数 据偏移量 7 算校 验 和的子函 数 在填充数据包的过程中,需要调用计算校验和的函数 次,分别用于校验 和 部 (加上伪头部),其实现代码如下: ; 1) *; = if( = *( ( 16) + ( 0 = (16); 8 序流程图 开始 结束 构造原始套接字,并初始化 发送 料报 计 算 部校验和 填充 部 计算 部校验和 构造 头部 填充 部 9 三 源代码 # # # # # 4 /议预定 #5500 /发送缓冲区最大值 /定义 部 /4 位首部长度 ,4 位 本号 /8 位服务类型 /16 位 总长度(字节) /16 位标识 /3 位标志位 /8 位生存时间 /8 位协议 (其它 ) /16 位 部校验和 /32 位源 址 /32 位目的 址 /源地址 /目的地址 /没用 /协议类型 10 /度 /16 位源埠 /16 位目的端口 /32 位序列号 /32 位确认号 /4 位首部长度 /6 位保留字 /6 位标志位 /16 位窗口大小 /16 位校验和 /16 位紧急数据偏移量 /算校验和的子函数 ; 1) *; = if( = *( ( 16) + ( 0 = (16); ) 11 /发送缓冲区 /检验和缓冲区 =is my of am ; 5) n); ,2), &=0) n); , = n); if(&= n); 12 000; (&= n); /填充 部 4 | ; ; ; ; /16 位标识 ; /3 位标志位 28; /8 位生存时间 ; /检验和暂时为 0 ); /32 位源 址 ); /32 位目的 址 /计算 部检验和 , ; ; /构造 首部 ; ; 13 /填充 部 ); /16 位目的端口号 ); /16 位源埠号 ; /列号 ; /列号置为 0 /度和保留位 4|0); ; /修改这里来实现不同的标志位探测, 2 是 1是 /16 是 测 等等 6384); /窗口大小 ; /偏移大小 ; /检验和暂时填为0 /计算 验和 , ; &; ; ; /填充发送缓冲区 , ; &; ; /发送数据报的目的地址 14 ,; ); ); 0,(&; %dn,); n); ; ; 四 运行结果与运行情 况 在 + 编写 源程序,然后 调试 成功后 运 行,生成可执行档 为该 程序是 带参数 的,所以 进 入 进 入到该可执 行文件的目 录 下后在命令提示行下 输 入: 9 0,回 车运 行, 运 行 结 果如下: 15 五 自我 评 析和 总结 这次 的 课 程 设计让 我们 学到 了很多 东 西。最大的收 获 是 学会 了 据包的填充 和发 送。在 对 包 进 行填充 时 ,首先需 要我们 去充分了解它的 数 据 结 构,在 这个过 程中可以了解相 应 字 节 上 应该 存放的 内 容和它 们 的 16 功能。在 实现 包 的发 送中,第一次深深接触了网 络编 程接口 知 识 , 虽然 本次的 课 程 设计 只用到了其中一小部分知 识 ,但 这并不 会 影 响对这方 面知 识 的全面了解。 总 之 这次 的 课 程 设计 ,

温馨提示

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

评论

0/150

提交评论