logo资料库

实验4tcp数据包的封装与发送.doc

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
实验四 TCP数据包的封装与发送
1.实验目的:
2.实验学时
3.实验类型
4.实验原理:
5.实验环境
6.实验要求
实验四 TCP 数据包的封装与发送 1. 实验目的: 1. 掌握 TCP 数据包的结构以及 TCP 协议与 IP 协议的关系; 2. 编程实现构造 TCP 数据并将其发送到目的节点。 2. 实验学时 2 学时 3. 实验类型 验证性实验: 4. 实验原理: TCP 报文段格式 TCP 源 端 口 号(16 位) 序 列 号(32 位) 确 认 号(32 位) U R G A C K P S H R S T S Y N 首 部长度 ( 4 位) 保 留 ( 6 位) 校 验 和(16 位) 选 项 + 填 充 数 据 区 TCP 目 标 端 口 号(16 位) F I N 窗 口 大 小 ( 16 位) 紧 急 指 针(16 位) TCP 协议的传输单元为报文段。报文段报头的长度为 20B~60B。其中固定长度为 20B,
报文段长度最多为 40B。TCP 报文段主要包括以下字段。 (1). 端口号:端口号字段包括源端口号和目的端口号。每个端口号的长度是 16 位,分别表示 发送该 TCP 包的应用进程的端口号和接收该 TCP 包的应用进程的端口号。 (2). 序号:长度为 32 位。由于 TCP 协议是面向数据流的,它所传送的报文段可以视为连续 的数据流,因此需要给每一个字节编号。序号字段的“序号”指的是本报文段数据的第 一个字节的顺序号。 (3). 确认号:该字段的长度为 32 位,它表示接收端希望接收的下一个 TCP 包的第一个字节 的序号。 (4). 报头长度:该字段长度为 4 位。TCP 报头长度是以 4B 为一个单元来计算的,实际上报 头长度在 20B~60B 子间。因此这个字段的值在 5~15 之间。 (5). 保留:长度为 6 位,留作今后使用,目前全部置 0。 (6). 控制:这个字段定义了 6 种不同的标志,每个标志占一位,在同一时间可以设置一位或 多位。URG 为 1 时,表明有需要紧急处理的数据。ACK 为 1 时,表明确认号的字段有 效。PST 位为 1 时,表明要强制切断连接。SYN 位为 1 时,表明有确立连接的请求,这 时,把序号字段的初始值作为序号字段的值,以便开始通信。FIN 为 1 时,表明发送方 已经没有资料发送了。 (7). 窗口大小:长度为 16 位,窗口对应的数据是以字节为单位的数据,因此最多能够传送的 数据为 65535B。 (8). 紧急指针:该字段的长度为 16 位,指向必须紧急处理的数据的位置,只有当标志 URG=1 时紧急指针才有效。从 TCP 报头后面的报文资料开始,到紧急指针所指出的长度的数据, 就是必须紧急处理的数据。 (9). 选项:该字段可以多达 40B,包括单字节选项和多字节选项。 (10).校验和:该字段长度多达 16 位,校验和的校验范围包括伪头部、TCP 报头以及应用层来 的数据。其计算方法与 IP 协议头部的校验的计算方法一样。伪头部为 12B,它本身并不 是 TCP 数据包的真正头部,只是在计算校验和时,临时和 TCP 数据包连接在一起。 5. 实验环境 平台:Windows 编程环境:VC 6.0 语言:C++ 6. 实验要求 本程序的功能是填充一个 TCP 数据包,并发送给目的主机。 1)以命令行形式运行:SendTCP sourse_ip sourse_port dest_ip dest_port 其中,SendTCP 为程 序名;sourse_ip 为源端 IP 地址;sourse_port 为源端口;dest_ip 为目的 IP 地址;dest_port 为目的端口。 2)其它的 TCP 头部参数请自行设定。 3)数据字段为“This is my homework of network,I am happy!”。 4)发送成功后在屏幕上输出”send OK”。
分享到:
收藏