实验5传输控制协议(TCP)【实验目的】1.掌握TCP协议的报文格式2.掌握TCP连接的建立和释放过程3.掌握TCP数据传输中编号与确认的过程4.掌握TCP协议校验和的计算方法5.理解TCP重传机制【实验步骤】练习一:查看TCP连接的建立和释放练习内容:各主机打开协议分析器,进入相应的网络结构并验证网络拓扑的正确性,如果通过拓扑验证,关闭协议分析器继续进行实验,如果没有通过拓扑验证,请检查网络连接。本练习将主机A、B、C、D、E、F作为一组进行实验。1.主机B、C、D启动协议分析器捕获数据,并设置过滤条件(提取TCP协议)。2.主机A启动TCP工具连接主机C。(1)主机A启动“实验平台工具栏中的地址本工具”。点击[主机扫描]按钮获取组内主机信息,选中主机C点击[端口扫描]按钮获取主机C的TCP端口列表。(2)主机A启动“实验平台工具栏中的TCP工具”。选中“客户端”单选框,在“地址”文本框中填入主机C的IP地址,在“端口”文本框中填入主机C的一个TCP端口,点击[连接]按钮进行连接。3.察看主机B、C、D捕获的数据,填写下表。实验结果:字段名称报文一报文二报文三Sequence21700932823779878182170091329Acknowledgement021700913292377987819ACK...0.......1.......1....SYN........1.......1.......0TCP建立连接时,前两个报文的首部都有一个”最大字段长度”字段,它的值是多少?作用是什么?结合IEEE802.3协议规定的以太网最大帧长度分析此数据是怎样得出的。答:1460由发送端指定,表明了能在网络上传输的最大的段尺寸;maximumsegmentsize=MTU–20(IP首部)-20(TCP首部)。4.断开主机A与C的TCP连接5.察看主机B捕获的数据,填写下表。实验结果:字段名称报文一报文二报文三Sequence217009132923779878192170091330Acknowledgement237798781921700913302377987820ACK...1.......1.......1....FIN.......1.......1.......0●结合步骤3、5所填的表,理解TCP的三次握手建立连接和四次握手的释放连接过程,理解序号、确认号等字段在TCP可靠连接中所起的作用。思考问题1.为什么在TCP连接过程要使用三次握手?如不这样做可能会出现什么情况。答:3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好)也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。如不这样做可能会出现死锁。2、解释TCP协议的释放过程?答:TCP的释放有两种方式:三次握手和具有半关闭的四次握手。三次握手方式:(1)、当客户端想关闭TCP连接时,它发送一个TCP报文,把FIN标志位设置为1.(2)、服务器端收到这个TCP报文后,把TCP连接即将关闭的消息发送给相应的进程,并发送第二个报文——FIN+ACK报文,以证实从客户端收到了FIN报文,同时也说明,另一个方向的连接也关闭了。(3)、客户端发送最后一个报文以证实从TCP服务器收到了FIN报文。这个报文包括确认号,它等于从服务器收到的的FIN报文的序号加1.具有半关闭的四次握手方式:(1)、客户端发送一个FIN报文,用来关闭到服务器的数据传送。(2)、服务器收到这个FIN,它发回一个ACK接受这个半关闭。(3)、服务器关闭与客户端的连接,发送一个FIN给客户端。(4)、客户端发回ACK报文确认,并将确认序号设置为收到序号加1。练习二:利用协议编辑器编辑并发送TCP数据包练习内容:本练习每台主机为一组。现仅以主机A为例,其他主机的操作参考主机A的操作。1.启动协议分析器捕获数据,设置过滤条件(提取HTTP协议)。2.启动仿真编辑器,在界面初始状态下,程序会自动新建一个单帧,可以利用仿真编辑器打开时默认的以太网帧进行编辑。3.填写该帧的以太网协议首部,其中:源MAC地址:主机A的MAC地址。目的MAC地址:服务器的MAC地址。协议类型或数据长度:0800(IP协议)。4.填写IP协议头信息,其中:高层协议类型:6(上层协议为TCP)。总长度:40(IP首部+TCP首部)。源IP地址:主机A的IP地址。目的IP地址:服务器的IP地址(172.16.0.253)。其它字段任意。应用前面学到的知识计算IP首部校验和。5.填写TCP协议信息,其中:源端口:任意大于1024的数,不要使用下拉列表中的端口。目的端口:80(HTTP协议)。序列号:选择一个序号ISN(假设1942589885),以后的数据都按照这个来填。确认号:0。首部长度:50(长度20字节)。标志位:02(标志SYN=1)窗口大小:任意。紧急指针:0。使用协议仿真编辑器的“手动计算”方法计算校验和;再使用协议仿真编辑器的“自动计算”方法计算校验和。将两次计算结果相比较,若结果不一致,则重新计算。TCP在计算校验和时包括哪些内容?答:伪首部、TCP首部以及应用层来的数据。6.将设置完成的数据帧复制3份。修改第二帧的TCP层的“首部长度和标志”位为10(即标志位ACK=1),TCP层的“序号”为1942589885+1。修改第三帧的TCP层的“首部长度和标志”位为11(即标志位ACK=1、FIN=1)TCP层的“序号”为1942589885+1。7.在发送该TCP连接请求之前,先ping一次目标服务器,让目标服务器知道自己的MAC地址。8.使用“仿真编辑器/工具菜单/TCP屏蔽/启动屏蔽”功能,为TCP\IP协议栈过滤掉收到的TCP数据。9.点击菜单栏中的“发送”按钮,在弹出对话框中选择发送第一帧。10.在主机B上捕获相应的应答报文,这里要求协议分析器一端的同学及时准确地捕获应答报文并迅速从中获得应答报文的接收字节序号,并告知仿真编辑器一端的同学。11.我们假设接收字节序号为:3246281765,修改第二帧和第三帧的TCP层的“ACK确认序号”的值:3246281766。12.计算第二帧的TCP校验和,将该帧发送。对服务器的应答报文进行确认。13.计算第三帧的TCP校验和,将该帧发送。14.在主机B上观察应答报文,要及时把最后一帧“序列号”告知协议编辑器一端的同学。15.修改第四帧的TCP层“确认号”为接收的序列号+1(即3246281767)。16.计算第四帧的TCP校验和,将该帧发送。断开连接,完成TCP连接的全过程。17.协议分析器一端截获相应的请求及应答报文并分析,注意观察“会话分析”中的会话过程。18.仿真端主机使用“仿真编辑器/工具菜单/TCP屏蔽/停止屏蔽”功能,恢复正常网络功能。思考问题:1、使用TCP对实时话音数据的传输有什么问题?使用UDP在传送数据文件时会有什么问题?答:TCP协议可能导致实时语音通讯的延迟。使用UDP传出数据可能导致数据文件乱序。练习三:TCP的重传机制练习内容:本练习将主机A和B作为一组,主机C和D作为一组,主机E和F作为一组。现仅以主机A和B为例,说明实验步骤。1、主机B上启动“实验平台工具栏的TCP工具”,作为服务器,监听端口设置为2483.2、主机B启动协议分析器开始捕获数据并设置过滤条件(提取TCP协议)。3、主机A启动TCP工具连接主机B。(1)、主机A启动“实验平台工具栏中的PCP工具”。(2)、选中“客户端”单选框。(3)、在“地址”文本框中填入主机B的IP地址。(4)、在“端口”文本框中填入主机B的一个TCP端口(2483);(5)、点击“连接”按钮进行连接。4、主机A向主机B发送一条信息。5、主机B使用“仿真编辑器/工具菜单/TCP屏蔽/启动屏蔽”功能,过滤掉接收到的TCP数据。6、主机A向主机B再发送一条信息。7、主机B刷新捕获显示,当发现“会话分析视图”中有两条以上超时重传报文后,使用“仿真编辑器/工具菜单/TCP屏蔽/停止屏蔽”功能,恢复正常网络功能。8、主机A向主机B再发送一条信息,之后断开连接。9、主机B停止捕获数据。依据“会话分析视图”显示结果,绘制本练习的数据报交互图。思考问题:1、根据实验,测试重传时间和重传次数。2、TCP在进行流量控制时是以分组的丢失作为产生拥塞的标志。有没有不是因拥塞而引起的分组丢失的情况?如有,请举出三种情况。答:(1)当IP数据报在传输过程中需要分片,但其中的一个数据报未能及时到达终点,而终点组装IP数据报已超时,因而只能丢失该数据报。(2)IP数据报已经到达终点,但终点的缓存没有足够的空间存放此数据报(3)较大的往返延迟偏差将导致不精确的往返时间估计,它最终将降低TCP的丢失检测机制的效能,可能导致拥塞崩溃。