关于TCP的三次握手、四次断开的详解

TCP 三次握手:
 
1. 第一次握手:客户端向服务器发送一个 SYN (同步)数据包,其中包含客户端选择的初始序列号(Sequence Number,简称 Seq)。此时客户端进入 SYN_SENT 状态。
2. 第二次握手:服务器收到客户端的 SYN 数据包后,向客户端发送一个 SYN/ACK (同步确认)数据包。这个数据包包含服务器选择的初始序列号,以及对客户端 SYN 数据包的确认(ACK)。此时服务器进入 SYN_RECV 状态。

3. 第三次握手:客户端收到服务器的 SYN/ACK 数据包后,向服务器发送一个 ACK (确认)数据包,确认服务器的 SYN 数据包。此时客户端和服务器都进入 ESTABLISHED 状态,连接建立成功,可以开始数据传输。
 
三次握手的主要目的是:
 
- 确认双方的接收和发送能力是否正常。
- 协商初始序列号,为后续的数据传输提供顺序保证。
 
TCP 四次断开:
 
1. 第一次断开:客户端向服务器发送一个 FIN (结束)数据包,表示客户端没有数据要发送了,想要关闭连接。此时客户端进入 FIN_WAIT_1 状态。

2. 第二次断开:服务器收到客户端的 FIN 数据包后,向客户端发送一个 ACK 数据包,表示已经收到客户端的关闭请求。此时服务器进入 CLOSE_WAIT 状态,客户端进入 FIN_WAIT_2 状态。
3. 第三次断开:服务器处理完剩余的数据后,向客户端发送一个 FIN 数据包,表示服务器也没有数据要发送了,想要关闭连接。此时服务器进入 LAST_ACK 状态。
4. 第四次断开:客户端收到服务器的 FIN 数据包后,向服务器发送一个 ACK 数据包,表示已经收到服务器的关闭请求。此时客户端进入 TIME_WAIT 状态,经过一段时间后(通常为 2 倍的最大段生存期,即 2MSL),客户端进入 CLOSED 状态,服务器收到客户端的 ACK 数据包后,直接进入 CLOSED 状态,连接关闭。

四次断开的主要目的是:
 
- 确保双方都已经完成数据传输,并且可以安全地关闭连接。
- 避免数据丢失和重复。

为了对三次握手和四次断开有更加清晰的认识,请看以下分支图

b2d3d17cd84d4a41b55f28339f9d1db5.jpeg

9ac001f7bb5c43e5b868e719a966669f.jpeg 

 由以上可知,我们对三次握手和四次断开有了更加明显的初步判断。

总结起来就是,接收数据——数据传输——数据发送。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值