当前位置:   article > 正文

计算机网络原理 实验 TCP连接建立和释放过程分析_tcp连接实验

tcp连接实验

计算机网络原理

实验 TCP连接建立和释放过程分析

一、实验目的:

1. 理解TCP连接建立过程中的三次握手机制。

2. 理解TCP连接释放过程中的四次握手机制。

二、实验原理:

1、TCP连接建立过程

TCP连接建立过程如图6-1所示。

建立TCP连接过程

在运行服务器进程的主机B上扫描端口,准备接受客户进程的TCP连接建立请求。运行客户进程的主机A向主机B发送TCP连接请求报文段,其首部中的同步比特SYN应置为1,同时选择一个序号x,表明在后面传送数据时起始序号是x。

主机B的TCP收到连接请求报文段后,如果同意就发回确认。在确认报文段中应将SYN置为1,确认序号应为x+1,同时也为自己选择一个序号y。

主机A的TCP收到此报文段后,还要向B返回确认,其确认序号为y+l。

运行客户进程的主机A的TCP通知上层应用进程,连接已经建立。当运行服务器进程的主机B的TCP收到主机A的确认后,也通知其上层应用进程,连接已经建立。

连接建立采用的这种过程叫做三次握手(three-way handshake)。 采用三次握手机制主要是为了防止过期的连接请求报文段突然又传送到了主机B,因而产生错误。

2、TCP连接释放过程

在数据传输结束后,通信的双方都可以发出释放连接的请求。假设图6-2中的主机A的应用进程先向其TCP发出连接释放请求,并且不再将数据传送给运输层。TCP通知对方要释放从A到B这个方向的连接,将发往主机B的TCP报文段首部的终止比特FIN置1,其序号u等于前面已传送过的数据的最后一个字节的序号加1。

释放TCP连接过程

主机B的TCP收到释放连接的通知后,即发出确认,其序号为 u+1,同时通知高层的应用进程。这样从A到B的连接就释放了,连接处于半关闭状态。这种状态相当于主机A向主机B说:“我已经没有数据要发送了。但你如果还发送数据,我仍接收。”

此后主机B不再接收主机A发送的数据。但是如果主机B还有数据要发往主机A,则可以继续发送。主机A只要收到数据,仍应向主机B发送确认。

在主机B向主机A的数据发送结束后,其应用进程就通知TCP释放连接。主机B发出的连接释放报文段除必须将终止比特FIN置1,并使其序号w等于前面已传送过的数据的最后一个字节的序号加1,还必须重复上次已发送过的ACK=u+l。主机A必须对此发出确认,给出ACK=w+1。这样才将从B到A的反方向连接释放掉。主机A的TCP再向其应用进程报告,整个连接已经全部释放。

3、PCATTCP简介

PCATTCP的前身为Test TCP,Test TCP是BSD操作系统的原生工具,该工具通过控制台输入参数,用于测试TCP或者UDP的通信速度。PCATTCP是Test TCP的windows移植版本,是一个用于测试TCP和UDP通信速度的windows控制台程序。

PCATTCP是Win32命令行程序,必须运行于命令行或者是批处理文件,PCATTCP运行需要两个Windows平台,其中一个作为接收端,一个作为发送端。

开启接收端:打开命令行,切换到PACATTCP所在的目录,执行:pcattcp -r,即可启动PCATTCP接收端。

开启发送端:打开命令行,切换到PACATTCP所在的目录,执行:pcattcp –t 接收端IP,即可启动与接收端的带宽测试连接。

常用参数含义:

-r表示服务器端模式,该设备处于接收状态。

-t 客户端模式,发送。

-l 被传输的数据包大小,默认大小为8192。

-n 发送数据包个数,默认数据包个数为2048。

三、实验设备:

计算机和交换机。

四、实验内容及步骤:

1、组建网络

按如图所示网络拓扑结构组建网络:

2、配置主机pc

3、建立和释放TCP连接

在PC2上执行如下命令(把Pcattcp.exe文件放在虚拟机的C盘根目录下):

C:\>pcattcp -r

最后在PC1上执行如下命令:

C:\>pcattcp -t -l1460 -n5 172.16.20.20

同时在PC1和PC2上捕获报文,利用捕获的报文分析TCP连接建立和释放过程。

分析:第1、2号报文是ARP的请求与响应报文

分析TCP的报文,如下图:

分析TCP连接建立过程(三次握手)

第3、4、5号报文是TCP的连接建立过程(三次握手)

第一次握手:

运行客户进程的主机PC1向主机PC2发送TCP连接请求报文段,其首部中的同步比特SYN应置为1,同时选择一个序号d2 86 1a f1(x),表明在后面传送数据时起始序号是d2 86 1a f1(x)。

第二次握手:

主机PC2的TCP收到连接请求报文段后,如果同意就发回确认。在确认报文段中应将SYN置为1,确认序号应为d2 86 1a f2(x+1),同时也为自己选择一个序号34 ad 7f e9(y)。

第三次握手:

主机PC1的TCP收到此报文段后,还要向PC2返回确认,其确认序号为34 ad 7f ea(y+1)。

运行客户进程的主机PC1的TCP通知上层应用进程,连接已经建立。当运行服务器进程的主机PC2的TCP收到主机PC1的确认后,也通知其上层应用进程,连接已经建立。

接下来进行数据的传输

分析TCP连接释放过程(四次握手)

第11、12、13、14号报文是TCP的连接建立过程(四次握手)

第一次握手:

在数据传输结束后,通信的双方都可以发出释放连接的请求。主机PC1的应用进程先向其TCP发出连接释放请求,并且不再将数据传送给运输层。TCP通知对方要释放从PC1到PC2这个方向的连接,将发往主机PC2的TCP报文段首部的终止比特FIN置1,其序号d2 86 37 76(u)等于前面已传送过的数据的最后一个字节的序号加1。

第二次握手:

主机PC2的TCP收到释放连接的通知后,即发出确认,其序号为d2 86 37 77(u+1),同时通知高层的应用进程。这样从PC1到PC2的连接就释放了,连接处于半关闭状态。

第三次握手:

此后主机PC2不再接收主机PC1发送的数据。但是如果主机PC2还有数据要发往主机PC1,则可以继续发送。主机PC1只要收到数据,仍应向主机PC2发送确认。 在主机PC2向主机PC1的数据发送结束后,其应用进程就通知TCP释放连接。主机PC2发出的连接释放报文段除必须将终止比特FIN置1,并使其序号34 ad 7f ea(w)等于前面已传送过的数据的最后一个字节的序号加1,还必须重复上次已发送过的ACK=u+l(d2 86 37 77)。

第四次握手:

主机PC1必须对此发出确认,给出ACK=w+1(34 ad 7f eb)。这样才将从PC2到PC1的反方向连接释放掉。主机PC1的TCP再向其应用进程报告,整个连接已经全部释放。

五、小结:

说明为什么在TCP连接建立和释放过程中要使用“三次握手机制”和“四次握手机制”。

①TCP连接建立过程中要使用“三次握手机制”的原因:

客户端和服务器的握手过程,不仅仅是确认互相可达的过程,更重要的是一个同步的过程。对于TCP报文段来说,序号是一个至关重要的部分,它保证了TCP传输数据的完整性。而我们上面也说过,TCP报文的初始序号不是从0开始的,而是一个随机的序号,而所谓的同步,就是TCP客户端和服务器互相同步初始序号的过程。第一次握手,客户端发送SYN报文,将自己的初始序号发送到了服务器,服务器接收到后,向客户端发送SYNACK报文段,告诉客户端已经收到了它的初始序号,同时在这个报文段中带上了自己的初始序号。这个时候,第三次握手的作用就出来了:第三次握手实际上就是客户端在告诉服务器,自己已经收到了它的初始序号,完成了同步,可以开始相互传输数据了。若没有第三次握手,服务器将无法保证客户端接收到了自己的SYNACK报文段,若此时SYNACK报文段丢失,客户端不知道服务器的初始序号,将无法处理之后到达客户端的数据。

TCP连接释放过程中要使用“四次握手机制”的原因:

TCP建立连接要进行三次握手,而断开连接要进行四次。这是由于TCP的半关闭造成的。因为TCP连接是全双工的(即数据可在两个方向上同时传递)所以进行关闭时每个方向上都要单独进行关闭。这个单方向的关闭就叫半关闭。当一方完成它的数据发送任务,就发送一个FIN(表示这端不能继续发送数据,但是还可以接收数据)来向另一方通告将要终止这个方向的连接,即客户端发送完数据后,告诉服务器,我没有数据了,可以和你断开,但是不代表服务器没有数据需要发送到客户端了。TCP是一个全双工的连接,代表服务器也有可能有数据需要发送到客户端。所以,只有当两端的数据都发送完毕,连接才能安全的断开。因此,服务器接收到了客户端的FIN报文段,他会等到自己所有的数据发送完,然后也向客户端发送一个FIN报文,告诉客户端我也没数据了,这时候连接才能真正断开,两端各自释放资源。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/565289
推荐阅读
相关标签
  

闽ICP备14008679号