TCP/IP详解学习笔记--TCP状态跃迁图

这篇博客详细解析了TCP/IP的连接状态跃迁,包括三次握手、四次挥手的过程,以及每个状态下客户端和服务器的交互。客户端从SYN_SENT开始,服务器响应后进入SYN_RECV,最终双方在ESTABLISHED状态下建立连接。断开连接时,客户端进入FIN_WAIT_1,服务器转为CLOSE_WAIT,然后依次经过多个状态,最后双方进入CLOSED状态,完成连接的关闭。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、TCP状态跃迁

对于TCP的三次握手和四次挥手每一个过程都有一个状态的变化,只有正确的状态变迁才能使Client和Server端进行通信。

  • (Client)SYN_SENT:当Client 需要向Server端进行通信时,Client会通过三次握手与Server端建立连接,那么此时Client会向Server端发送一个请求连接信息(Seq_num,Syn=1,ACK=0)给Server,此时Client端由LISTEN状态变迁为SYN_SENT状态。
  • (Server)SYN_RECD:当Server端和Client端结束四次挥手以后,Server端会从CLOSED状态变迁为LISTEN状态(其实这个这个CLOSED状态是虚构的)。当Server端再一次收到Client端发送的数据时,此时Server端由LISTEN变为SYN_RECD状态,并向Client端发送一个(Seq_num,Ack_num,Syn=1,Ack=1)的数据给Client表示Server收到了Client的请求连接信息。
  • (Client)ESTABLISH:当Client收到Server端发送的确认和请求连接信息后,此时Client就由SYN_SENT跃迁为ESTABLISH,同时Client需要处理Server的请求连接,那么Client需要发送一个确认信息(Seq_num,Ack_num,Ack=1)向Server表示自己收到了请求连接,并准备好了连接。
  • (Server)ESTABLISH:Server端收到Client端发送的确认信息,这时候Client端就和Server端建立起了连接。到这个时候,连接全部建立起来了
  • (Client)FIN_WAIT_1:当Client端所有的数据都发送完毕以后,Client就会发送一个数据(Seq_num,Ack_num,Fin=1,Ack=1)给Server端,表示自己没有要发送的数据了。这个时候Client端还没有关闭,只是不再发送数据,但是还是可以接收数据。
  • (Server)CLOSE_WAIT:当Server端接收到Client发送的数据以后会由ESTABLISH状态转换为CLOSE_WAIT状态。同时这个时候Server必须让Client知道自己收到了Client端请求关闭的信息,这个时候发送一个(Seq_num,Ack_num,Ack=1)给Client端。
  • (Client)FIN_WAIT_2:当Client端接收到Server端的信息以后会将信息会由FIN_WAIT_1进入FIN_WAIT_2状态。
  • (Server)LAST_ACK:当Server端已经全部接收到了Client端发送的数据以后,Server端此时会发送一个请求断开连接的信息给(Seq_num,Ack_num,Fin)Client,表示自己收到了所有数据,现在要关闭连接了。
  • (Client)TIME_WAIT:当Client收到Server端的请求关闭的信息以后,Client此时由FIN_WAIT_2状态进入TIME_WAIT状态。此时由TIME_WAIT状态进入CLOSED状态需要经历2MSL(2个最大报文传输时间),这是因为,如果此时Client发送一个(Seq_num,Ack_num,Ack=1)给Server端的数据丢失,那么Server端就不会接收到Client端发送的数据,这个时间我们取一个MSL,然后Server端又会发送一个关闭请求连接(Seq_num,Ack_num,Fin=1)的数据给Client,然后Client接收到这个数据以后应该是又进入TIME_WAIT状态,所有上面所需的时间我们取2MSL。
  • (Client、Server)CLOSED:最后Client端和Server端都进入了CLOSED状态。

二、注意事项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值