1、实验四 传输控制协议 TCP实验目的1. 掌握 TCP 协议的报文格式2. 掌握 TCP 连接的建立和释放过程3. 掌握 TCP 数据传输中编号与确认的过程实验学时3 学时实验拓扑该实验采用网络结构一。说明:IP 地址分配规则为主机使用原有 IP,保证所有主机在同一网段内。实验步骤按照拓扑结构图连接网络,使用拓扑验证检查连接的正确性。练习一:查看 TCP 连接的建立和释放 1. 主机 B、C、D 启动协议分析器进行数据捕获,并设置过滤条件(提取TCP 协议)。2. 主机 C 打开 TCP 工具,类型选择“服务器”,端口填写大于 1024 的值;点击“创建”,如果端口被占用则选择其它。主机 A
2、打开 TCP 工具,类型选择“客户端”,地址填入主机 C 的 IP 地址;在端口填入主机 C 的TCP 工具监听的端口;点击连接按钮进行连接。3. 察看主机 B、C、D 捕获的数据,填写下表。字段名称 报文 1 报文 2 报文 3 Sequence Number Acknowledgement Number ACK SYN TCP 连接建立时,前两个报文的首部都有一个“maximum segment size”字段,它的值是多少?作用是什么?结合 IEEE802.3 协议规定的以太网最大帧长度分析此数据是怎样得出的。4. 主机 A 断开与主机 C 的 TCP 连接。 5. 察看主机 B、C、D
3、 捕获的数据,填写下表。 字段名称 报文 4 报文 5 报文 6 报文 7Sequence Number Acknowledgement Number ACK SYN 结合步骤 3、5 所填的表,理解 TCP 的三次握手建立连接和四次握手的释放连接过程,理解序号、确认号等字段在 TCP 可靠连接中所起的作用。练习二:利用仿真编辑器编辑并发送 TCP 数据包 本练习将主机 A 和 B 作为一组,主机 C 和 D 作为一组,主机 E 和 F 作为一组,现仅以主机 A 和 B 为例,说明实验步骤。 在本实验中由于 TCP 连接有超时时间的限制,故仿真编辑器和协议分析器的两位同学要默契配合,某些步骤(
4、如计算 TCP 校验和)要求熟练、迅速。 为了实现 TCP 三次握手过程的仿真,发送第一个连接请求帧之前,仿真端主机应该使用“仿真编辑器/工具菜单/TCP 屏蔽/启动屏蔽”功能来防止系统干扰(否则计算机系统的网络会对该请求帧的应答帧发出拒绝响应)。 通过手工编辑 TCP 数据包实验,要求理解实现 TCP 连接建立、数据传输以及断开连接的全过程。在编辑的过程中注意体会 TCP 首部中的序列号和标志位的作用。首先选择服务器主机上的一个进程作服务器进程,并向该服务器进程发送一个建立连接请求报文,对应答的确认报文和断开连接的报文也编辑发送。其步骤如下: 1. 主机 B 启动协议分析器捕获数据,设置过滤
5、条件(提取 HTTP 协议)。 2. 主机 A 上启动仿真编辑器,在界面初始状态下,程序会自动新建一个单帧,可以利用仿真编辑器打开时默认的以太网帧进行编辑。 3. 填写该帧的以太网协议首部,其中: 源 MAC 地址:主机 A 的 MAC 地址。 目的 MAC 地址:服务器的 MAC 地址。 协议类型或数据长度:0800(IP 协议)。 4. 填写 IP 协议头信息,其中: 高层协议类型:6(上层协议为 TCP)。 总长度:40(IP 首部+TCP 首部)。 源 IP 地址:主机 A 的 IP 地址。 目的 IP 地址:服务器的 IP 地址(172.16.0.10)。 其它字段任意。 应用前面学
6、到的知识计算 IP 首部校验和。 5. 填写 TCP 协议信息,其中: 源端口:任意大于 1024 的数,不要使用下拉列表中的端口。 目的端口:80(HTTP 协议)。 序列号:选择一个序号 ISN(假设 1942589885),以后的数据都按照这个来填。 确认号:0。 首部长度和标志位:5002(即长度 20 字节,标志 SYN=1)。 窗口大小:任意。 紧急指针:0。 6. 将设置完成的数据帧复制 3 份。修改第二帧的 TCP 层的“首部长度和标志”位为 5010(即标志位ACK=1),TCP 层的“序号”为 1942589885+1。修改第三帧的 TCP 层的“首部长度和标志”位为 50
7、11(即标志位 ACK=1、FIN=1),TCP 层的“序号”为 1942589885+1。在发送该 TCP 连接请求之前,先 ping 一次目标服务器,让目标服务器知道自己的 MAC 地址。7. 在发送该 TCP 连接请求之前,先 ping 一次目标服务器,让目标服务器知道自己的 MAC 地址。 8. 使用“仿真编辑器/工具菜单/TCP 屏蔽/启动屏蔽”功能,为 TCPIP 协议栈过滤掉收到的 TCP 数据。 9. 点击菜单栏中的“发送”按钮,在弹出对话框中选择发送第一帧。10. 在主机 B 上捕获相应的应答报文,这里要求协议分析器一端的同学及时准确地捕获应答报文并迅速从中获得应答报文的接收
8、字节序号,并告知仿真编辑器一端的同学。 11. 我们假设接收字节序号为:3246281765,修改第二帧和第三帧的 TCP 层的“ACK 确认序号”的值:3246281766。 12. 计算第二帧的 TCP 校验和,将该帧发送。对服务器的应答报文进行确认。13. 计算第三帧的 TCP 校验和,将该帧发送。14. 在主机 B 上观察应答报文,要及时把最后一帧“序列号”告知协议编辑器一端的同学。15. 修改第四帧的 TCP 层“确认号”为接收的序列号+1(即 3246281767)。16. 计算第四帧的 TCP 校验和,将该帧发送。断开连接,完成 TCP 连接的全过程。17. 协议分析器一端截获相
9、应的请求及应答报文并分析,注意观察“会话分析”中的会话过程。18. 仿真端主机使用“仿真编辑器/工具菜单/TCP 屏蔽/停止屏蔽”功能,恢复正常网络功能。练习三:TCP 的重传机制(选做)本练习将主机 A 和 B 作为一组,主机 C 和 D 作为一组,主机 E 和 F 作为一组。现仅以主机 A 和 B 为例,说明实验步骤。1. 主机 B 启动协议分析器开始捕获数据并设置过滤条件(提取 TCP 协议)。2. 主机 A 启动仿真编辑器,进入 TCP 连接视图。在“服务器信息/IP 地址”中填入主机 B 的 IP 地址;使用“端口扫描”获取主机 B 的 TCP 端口列表,在“服务器信息/端口”中填入
10、主机 B 的一个 TCP 端口(大于 1024);点击“连接”按钮进行连接。3. 主机 A 向主机 B 发送一条信息。4. 主机 B 使用“仿真编辑器/工具菜单/TCP 屏蔽/启动屏蔽”功能,过滤掉接收到的 TCP 数据。5. 主机 A 向主机 B 再发送一条信息。6. 主机 B 刷新捕获显示,当发现“会话分析视图”中有两条以上超时重传报文后,使用“仿真编辑器/工具菜单/TCP 屏蔽/停止屏蔽”功能,恢复正常网络功能。7. 主机 A 向主机 B 再发送一条信息,之后断开连接。8. 主机 B 停止捕获数据。依据“会话分析视图”显示结果,绘制本练习的数据报交互图。思考问题1. 试用具体例子说明为什么在运输连接建立时要使用三次握手。如不这样做可能会出现什么情况。 使用 TCP 对实时话音数据的传输有什么问题?使用 UDP 在传送数据文件时会有什么问题?