没有合适的资源?快使用搜索试试~ 我知道了~
TCP数据包的发送和接收设计报告.doc
8 下载量 95 浏览量
2022-11-29
08:38:15
上传
评论 3
收藏 183KB DOC 举报
温馨提示
试读
18页
TCP数据包的发送和接收设计报告.doc
资源推荐
资源详情
资源评论
-
.
.
word.zl.
工业大学
课 程 设 计 报 告
设计题目:TCP 数据包的发送和接收
专 业:计算机科学与技术
班 级:10 计科 2 班
学 号:1010311211
姓 名:吕红杰
指导教师:涂军
-
.
.
word.zl.
一.设计题目
发送和接收 TCP 数据包
二.设计要求
1.正确理解题意;
2.具有良好的编程规和适当的注释;
3.有详细的文档,文档中应包括设计题目涉及的根底知识、设计思路、程序
流程图、程序清单、开发中遇到的问题及解决方法、设计中待解决的问题及改良
方向。
三.需求分析
TCP 是一种面向连接的、可靠的传输层协议。TCP 协议工作在网络层 IP 协议的
根底上。本课程设计的目的是设计一个发送和接收 TCP 数据包的程序,其功能
是填充一个 TCP 数据包,发送给目的主机,并在目的主机接收此 TCP 数据包,
将数据字段显示显示在标准输出上。
-
.
.
word.zl.
四.具体设计
1.创立一个原始套接字,并设置 IP 头选项
SOCKET sock;
sock = socket(AF_INET,SOCK_RAW,IPPROTO_IP);
或者:
sock=WSASoccket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OV
ERLAPPED);
这里,设置了 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;
setsockopt(sock, SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout, sizeof(timeout));
在这里我们使用根本套接字 SOL_SOCKET,设置 SO_SNDTIMEO 表示使用发送
超时设置,超时时间设置为 1000ms。
2.构造 IP 头和 TCP 头
这里, IP 头和 TCP 头以及 TCP 伪部的构造请参考下面它们的数据构造。
typedef struct _iphdr //定义 IP 首部
{
UCHAR h_lenver; //4 位首部长度+4 位 IP 版本号
-
.
.
word.zl.
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;
typedef struct psd_hdr //定义 TCP 伪首部
{
ULONG saddr; //源地址
ULONG daddr; //目的地址
UCHAR mbz; //没用 UCHAR ptcl; //协议类型
USHORT tcpl; //TCP 长度
}PSD_HEADER;
typedef struct _tcphdr //定义 TCP 首部
{
USHORT th_sport; //16 位源端口
USHORT th_dport; //16 位目的端口
ULONG th_seq; //32 位序列号
剩余17页未读,继续阅读
资源评论
matlab大师
- 粉丝: 2427
- 资源: 9万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功