TCP三次握手与四次挥手流程分析

三次握手

  1. 首先,客户端和服务器的TCP都处于CLOSED状态,服务器创建一个socket,监听指定的端口,服务器TCP由此进入LISTEN状态
  2. 客户端TCP创建一个SYN比特被置为1的TCP报文段(下面称为SYN),指明自己的初始序号client_isn,然后将该报文段发送给服务器。此后客户端TCP处于SYN_SET状态
  3. 服务器TCP收到SYN后,初始化缓存和变量。向客户端TCP回复一个确认报文SYNACK,确认号为client_isn + 1,序号为server_isn。此时服务端TCP进入SYN_RCVD状态
  4. 客户端TCP收到SYNACK报文段后,初始化缓存和变量。向服务器TCP发送一个确认报文ACK,确认号是server_isn + 1, 序号是client_isn + 1,首部的SYN比特置为0。此时客户端TCP进入ESTABLISHED状态。
  5. 服务端接收到ACK,进入ESTABLISHED状态。
  6. TCP连接建立

确认号和序号是实现TCP可靠连接的重要组成

四次挥手

  1. 客户端TCP想断开连接,向服务器TCP发送一个FIN比特被置为1的TCP报文段(下面称为FIN),并进入FIN_WAIT_1状态
  2. 服务器TCP接收到客户端TCP发送的FIN报文段,向客户端TCP发送一个ACK,进入CLOSE_WAIT状态
  3. 客户端TCP接收到服务器TCP的ACK后,进入FIN_WAIT_2状态
  4. 服务器TCP向客户端TCP发送一个FIN,服务器TCP进入LAST_ACK状态
  5. 客户端TCP接收到服务器TCP的FIN后,回复一个ACK,进入TIME_WAIT状态,等待2MSL时间后进入CLOSED状态,客户端释放连接资源
  6. 服务器TCP接收到ACK后进入CLOSED状态,服务器释放连接资源

TIME_WAIT状态也是2MSL等待状态。每个具体TCP实现必须选择一个报文段最大生存时间MSL(Maximum Segment Lifetime),它是任何报文段被丢弃前在网络内的最长时间。

状态变迁图

客户端TCP:
在这里插入图片描述
服务器TCP:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值