1、 .1 课程设计任务书课程设计任务书 学 院 专 业 学生姓名 班级学号 课程设计题目 发送 TCP 数据包 实践教学要求与任务实践教学要求与任务: 发送 TCP 数据包的具体步骤: (1) 以命令行形式运行:SendTCP 和 ListenTCP,其中,SendTCP 是发送程序, ListenTCP 是监听程序, 发送端套接字为 127.0.0.1 20000, 接收端套接字为 127.0.0.1 10000。 (2)数据字段为“I Love China!” 。 (3)成功发送后在屏幕上输出“Send OK!” 。 任务交付:任务交付: 1. 程序源代码;2 课程设计论文及电子文档。 进度
2、安排:进度安排: 本课程设计时间为 17、19 教学周。其中包含设计、代码调试、课程设计论 文撰写几个阶段。 第 1 周 查找资料、完成初步设计、代码设计与初步调试; 第 2 周 调试、测试、验收、课程设计论文撰写、答辩。 指导教师: 年 月 日 专业负责人: 年 月 日 学院教学副院长: 年 月 日 .2 目录目录 1 概述 . 3 1.1 设计目的 3 1.2 设计要求 3 1.3 设计原理 3 2 详细设计 6 2.1 程序流程图 . 6 2.2 计算校验和 . 6 3 程序代码及运行结果 8 3.1 程序清单 8 3.2 运行结果 10 4 总结 13 5 参考文献 . 14 .3 1
3、 1 概述概述 1.11.1 设计目的设计目的 TCP(传输控制协议)是一种面向连接的、可靠的传输层协议。TCP 协议在网络层 IP 协议的基础上,向应用层用户进程提供可靠的、全双工的数据流传输。本课程设计的目 的就是设计一个发送 TCP 数据包的程序,并根据本设计说明 TCP 数据包的结构以及 TCP 协议与 TP 协议的关系。 1.21.2 设计要求设计要求 本设计的功能是填充一个 TCP 数据包,并发送给目的主机。 程序具体要求如下: (1) 以命令行形式运行:SendTCP 和 ListenTCP,其中,SendTCP 是发送程序,ListenTCP 是监 听程序,发送端套接字为 12
4、7.0.0.1 20000,接收端套接字为 127.0.0.1 10000。 (2)数据字段为“I Love China!” 。 (3)成功发送后在屏幕上输出“Send OK!” 。 1.31.3 设计原理设计原理 互联网络层是 TCP/IP 协议参考模型中的关键部分。当多信息的传输要求比较高时, 我们才用 TCP 来实现数据的传输。本程序是在 windows 环境下实现了发送 TCP 数据包的 功能。主要包括定义 IP 头部、TCP 头部、和伪头部的数据结构,填充 IP 头部,计算 IP 头部校验和,构造 TCP 伪头部,填充 TCP 头部,计算 TCP 头部校验和,发送 TCP 数据报。
5、接着是对客户端程序的开发,程序结构与服务端程序类似,也包括定义 IP 头部、TCP 头部、和伪头部的数据结构。 当应用进程需要通过 TCP 发送时,它就将此应用层报文传送给执行 TCP 协议的传输 实体。TCP 传输实体将用户数据加上 TCP 报头,形成 TCP 数据包,在 TCP 数据包上增加 IP 头部,形成 IP 包。 TCP 协议的数据传输单位称为报文段, 报文段报头的长度是 20B-60B, 选项部分长度 最多为 40B。TCP 报文段主要包括: (1)端口号: 端口号字段包括源端口号和目的端口号。 每个端口号的长度是 16 位, 分别表示发送该 TCP 包的应用进程的端口号和接收该
6、 TCP 数据包的应用进程端口号。 (2)序号:长度为 32 位。由于 TCP 协议是面向数据流的,它所传送的报文段可以 视为连续的数据流,因此需要给每一个字节编号。序号字段的“序号”指的是本报文段 .4 数据的第一个字节的序号。 (3)报文长度:该字段长度为 4 位。TCP 报文长度是以 4B 为一个单元来计算的, 实际上报文长度在 20B-60B 之间,因此这个字段的值在 5-15 之间。 (4)TCP 头部数据:包括 源端口号、序号、确认号、报文长度、保留 URG、ACK、 PSH,数据包头部的格式 RST、SYN 目的端口号。 (5)FIN:紧急指针,保留长度 16 位,留作以后使用,目前全部置 0。保留控制: 这个字段定义了 6 种不同的标识,每一个标志占一位或多位。URG 位为 1 时,表明应尽 快把数据传送给应用程序,否则表明允许数据在缓存中存放一段时间。RST 位为 1 时, 表明要强制切断连接。SYN 位 1 时,表明有确立连接的请求,这时,把序号字段的初始 值作为序号字段的值,以便开始通信。FIN 位为 1 时,表明发送方已经没有数据发送了,