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比特数据。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
TCP (Transmission Control Protocol) 是一种面向连接的、可靠的、基于字节流的传输层协议。TCP 运输连接管理实验通常用于测试 TCP 连接的建立、维护和关闭过程。 实验步骤如下: 1. 确定实验环境:需要有两台计算机,分别作为客户端和服务器,同时需要安装 TCP/IP 协议栈和一些网络工具,如 ping 和 telnet。 2. 配置服务器:在服务器上启动一个 TCP 服务程序,监听指定的端口。可以使用一些常见的服务程序,如 HTTP 服务器或 FTP 服务器。 3. 配置客户端:在客户端上启动一个 TCP 客户端程序,连接到服务器的指定端口。可以使用 telnet 等客户端软件,手动输入指定的命令,观察连接的建立和维护过程。 4. 测试连接建立:在客户端上输入连接的目标 IP 地址和端口号,如果连接建立成功,服务器会返回一个确认信息。可以使用 ping 命令测试网络连通性。 5. 测试数据传输:一旦连接建立,客户端可以向服务器发送数据,并接收服务器的响应。可以使用 telnet 发送一些命令,如 GET /index.html,观察服务器的响应。 6. 测试连接关闭:当数据传输完成后,客户端和服务器需要关闭连接。可以使用 telnet 发送命令 QUIT,观察连接的关闭过程。 通过 TCP 运输连接管理实验,可以深入了解 TCP 协议的运作原理,掌握 TCP 连接的建立、维护和关闭过程,以及如何诊断和解决 TCP 连接问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值