当前位置:   article > 正文

TCP的连接管理实验_互联网tcp连接实验

互联网tcp连接实验

一、实验目的

使用Wireshark抓包,实现建立连接三次握手和释放连接四次握手

  1. 熟悉TCP通信的三个阶段。
  2. 理解TCP连接建立过程和TCP连接释放过程。
  3. 对数据分析,图示画出建立连接和释放连接

    

 二、TCP的连接管理原理

1.TCP的通信过程

TCP是面向连接的传输协议,因此其通信过程包含三个阶段阶段:建立连接、传输数据、释放连接。其中,建立连接主要解决三个问题:(1)确认对方能够接收数据;(2)双方协商一些参数(如最大报文段长度,最大窗口大小,初始顺序号等);(3)双方预分配一些必要的通信资源(如收发缓存区,连接表项目等)。而释放连接的目的就是双方释放所占用的资源。

2.TCP连接的建立

TCP连接的建立采用客户服务器的方式,主动发起连接建立请求的应用进程叫做客户(Client),而被动等待连接建立的应用进程叫做服务器(Server)。

TCP通过三次握手完成连接的建立:

第一次握手:ATCPB发出连接请求报文段,其首部中的同步位SYN=1,并选择序号seq=x,表明传送数据时的第一个数据字节的序号是x

第二次握手:BTCP收到连接请求报文段后,如同意,则发回确认。在确认报文段中应使SYN=1,使ACK=1,其确认号ack=x+1,自己选择的序号seq=y

第三次握手:A再向B确认,其ACK=1,确认号ack=y+1ATCP通知上层应用进程,连接已经建立。

完成三次握手,客户端与服务器开始传送数据。连接可以由任一方或双方发起,一旦连接建立,数据就可以双向对等地流动。

3.TCP连接的释放

第一次握手:客户A的应用进程先向B发出连接释放报文段,并停止发送数据,主动关闭TCP连接。

第二次握手:服务器B发出确认。此时,从AB这个方向的连接就释放了,A不能再向B发送数据,因此不再消耗序号,TCP 连接处于半关闭状态,B若还有数据要发送,A仍要接收。

第三次握手:若服务器B的数据已经发完了,其应用进程就通知TCP释放连接。BA发送连接释放请求报文段。

第四次握手:客户A收到B的连接释放报文段后,必须发出确认。A在发出确认后还必须再等待2MSL的时间后,才能进入关闭状态。

三、实验步骤

任务一:观察建立TCP连接的三次握手协议

步骤1:捕获TCP传输

步骤2:查找TCP建立连接的三次握手事件

步骤3:分析TCP的三次握手机制

 任务二:观察TCP连接的释放机制

    步骤1:查找TCP释放连接的四次挥手事件

    步骤2:分析TCP的四次挥手机制

四、实验部分截图

TCP报文段格式

在wireshark文件 tcp握手&挥手捕获.pcapng中,

Filter:tcp.port==33457

建立连接——三次握手

客户A的IP:192.168.3.11,端口号33457

服务器B的IP:123.125.81.244,端口号80

(三次握手单独截图)

                                          ..

说明:客户A向服务器B发送请求报文段,SYN=1 初始序号 seq=x=21 c5 a3 5b,此报文不能携带数据,但要消耗一个序号。

说明:服务器B收到A的请求后,向A发送确认报文段。SYN=1 ACK=1  ack=x+1=21 c5 a3 5c,初始序号seq=y=84 36 3b 52, 此报文段不能携带数据,但要消耗一个序号。

说明:TCP客户进程收到B的确认后,向B再发送一次确认。 ACK=1

 ack=y+1=84 36 3b 53,

seq=x+1=21 c5 a3 5c,  此报文段可以携带数据,如果不携带数据就不占序号。

建立连接三次握手过程图

    

释放连接——四次握手

(四次握手单独截图)

说明:B向A发送连接释放报文。FIN=1 seq=u=84 36 3c 59(前面以传送数据最后一个字节的序号加 1) ,FIN报文段即使不携带数据也占一个序号。

说明:B向A发送连接释放确认报文段。 ACK=1  seq=w=21 c5 a4 54  ack=u+1=84 36 3c 5a 此时B到A方向的连接已经关闭,无法传送数据了。但是,从A到B方向的还是可以的。

说明:A向B发送连接释放报文段。FIN=1  ACK=1  seq=w=21 c5 a4 54 ack=u+1=84 36 3c 5a

说明: 此时B到了最后确认状态。

B收到了A发来的连接释放报文段后,对此发出确认。

ACK=1 ack=w+1=21 c5 a4 55  seq=u+1=84 36 3c 5a, 最终进入时间等待状态,当等待时间过去后进入关闭状态。

释放连接四次握手过程图

思考题:

①     连接建立阶段的第一次握手是否需要消耗一个序号?其SYN报文段是否携带数据?为什么?第二次握手呢?

答:第一次握手建立连接时,客户端A向服务端B发送请求报文段,这时首部中的同步位SYN =1,同时选择一个初始序号seq= x.TCP规定SYN=1报文段不能携带数据,但是要消耗一个序号。这时,TCP客户进程进入SYN-SENT(同步已发送)状态,等待服务器确认。第二次握手:服务器收到请求报文后,如同意连接,则向A发送确认,同时自己也发送一个确认报文段,确认报文段中SYN和ACK都置1,确认号ack = x+1,同时自己也为自己选择一个初始序号seq =y。注意,这个报文段也不能携带数据,但同样要消耗掉一个序号。这时TCP服务器进程进入SYN-RCVD(同步收到)状态。

 

②     本实验中连接释放过程的第二、三次挥手是同时进行的还是分开进行的?这两次挥手何时需要分开进行?

答:同时。还有数据要发送时需要分开进行。

③     本实验中连接释放阶段的第四次握手,PC向Server发送最后一个TCP确认报文段后,为什么不是直接进入CLOSED(已关闭)连接状态,而是进入CLOSE-WAIT(半关闭)连接状态?

答:PC端需要等待Server回复确认才能关闭。

 

④     本实验中TCP连接建立后的数据通信阶段,PC向Server发送了多少数据?Server向PC发送了多少数据?

答:528比特数据,432比特数据。

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

闽ICP备14008679号