TCP的有限状态机

1、状态

状态是系统的特定配置。

2、TCP连接的状态

在这里插入图片描述
首先,该图包含四个部分。顶部的4个状态描述了如何打开TCP连接;中间的状态“ESTABLISHED”说明TCP正发送和接收数据,它处于连接建立后和连接关闭前;下面的6个状态描述了连接如何关闭;底部的状态“CLOSED”表示连接已关闭,节点可以忘记它了。注意顶部的状态也是“CLOSED”,它在建立连接之前。

图的上半部分描述了TCP建立连接的3次握手状态变化,下半部分描述了TCP关闭连接的几种情况:

  • 第一种情况:客户端发起关闭命令,发送FIN消息给服务端,从“ESTABLISHED”转移到“FIN WAIT1”。而服务端接收到FIN消息后,还有一些数据需要发送,从“ESTABLISHED”转移到“CLOSE WAIT”, 同时返回一个ACK消息给客户端。客户端接收到ACK消息后,转移到状态“FIN WAIT2”,此时客户端无法再向服务端发送数据,但服务端仍保留到客户端的连接,也就是服务端可能还有一些数据要发送给客户端。当服务端发送完剩余的数据后,执行关闭命令,并发送FIN消息给客户端,转移到“LAST ACK”状态。客户端收到FIN消息后,返回ACK消息给服务端,并转移到“TIME WAIT”状态。服务端收到ACK消息后,进入关闭状态。客户端等待安全过渡时间后也进入关闭状态。
  • 第二种情况:客户端发起关闭命令,发送FIN消息给服务端,从“ESTABLISHED”转移到“FIN WAIT1”。而服务端接收到FIN消息后,没有数据需要发送,进入”CLOSE WAIT“状态后立刻进入”LAST ACK“状态,发送FIN + ACK消息(为一个数据包,包中的FIN位和ACK位都被置位),客户端从”FIN WAIT1“转移到”TIME WAIT“状态。
  • 第三种情况:双方可能同时发起关闭命令,同时发送FIN消息给对方。此时,两者皆处于“FIN WAIT1”状态。然后它们会各自收到对方的FIN消息,发送ACK消息后转移到状态“CLOSING”。当收到对方的ACK消息后,转移到“TIME WAIT”状态,和上面一样,经过安全过渡后进入关闭状态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值