湖北工业大学 课 程 设 计 报 告 设计题目:TCP 数据包的发送和接收 专 业:计算机科学与技术 班 级:10 计科2 班 学 号:********** * ***** 指导老师:*** 一.设计题目 发送和接收TCP 数据包 二.设计要求 1.正确理解题意; 2.具有良好的编程规范和适当的注释; 3.有详细的文档,文档中应包括设计题目涉及的基础知识、设计思路、程序流程图、程序清单、开发中遇到的问题及解决方法、设计中待解决的问题及改进方向
三.需求分析 TCP 是一种面向连接的、可靠的传输层协议
TCP 协议工作在网络层 IP 协议的基础上
本课程设计的目的是设计一个发送和接收TCP 数据包的程序,其功能是填充一个 TCP 数据包,发送给目的主机,并在目的主机接收此 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_OVERLAPPED); 这里,设置了SOCK_RAW 标志,表示我们声明的是一个原始套接字类型
为使用发送接收超时设置,必须将标志位置位置为WSA_FLAG_OVERLAPPED
在本课程设计中,发送TCP 包时隐藏了自己的IP 地址,因此我们要自己填充 IP头,设置 IP 头操作选项
其中flag 设置为ture,并设定 IP_HDRINCL 选项,表明自己来构造IP 头
setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&Flag, sizeof(Flag)); int timeout=1000; s