三次握手(建立连接)与四次挥手(断开连接)

1.三次握手(建立连接)
核心是确认通信双方的发送能力和接收能力均正常,同步彼此的初始序列号,最终建立起可靠的双向通信连接,为后续数据传输做准备。
2.四次挥手(断开连接)
核心是安全关闭 TCP 的全双工通信链路,确保双方所有待传输数据都发送完毕,再逐步释放连接占用的资源,避免数据丢失或残留报文干扰。
3.对比:
三次握手
固定由客户端主动发起连接请求,服务器处于被动响应的角色。
四次挥手
没有固定发起方,客户端或服务器都可以作为主动关闭方,另一方则为被动关闭方。
三、交互流程对比
三次握手的交互步骤
① 第一次握手:客户端向服务器发送带SYN标志的数据包,请求建立连接,客户端进入SYN_SENT状态。
② 第二次握手:服务器收到请求后,返回带SYN+ACK标志的数据包,既确认客户端的请求,又同步自身序列号,服务器进入SYN_RCVD状态。
③ 第三次握手:客户端收到服务器的SYN+ACK后,发送带ACK标志的数据包进行确认,随后客户端和服务器均进入ESTABLISHED状态,连接建立完成。
四次挥手的交互步骤
① 第一次挥手:主动关闭方向被动关闭方发送带FIN标志的数据包,请求关闭连接,主动关闭方进入FIN_WAIT_1状态。
② 第二次挥手:被动关闭方收到FIN后,立即返回带ACK标志的数据包确认,被动关闭方进入CLOSE_WAIT状态;主动关闭方收到ACK后,进入FIN_WAIT_2状态,等待被动关闭方传输剩余数据。
③ 第三次挥手:被动关闭方完成所有数据发送后,向主动关闭方发送带FIN标志的数据包,被动关闭方进入LAST_ACK状态。
④ 第四次挥手:主动关闭方收到FIN后,发送带ACK标志的数据包确认,主动关闭方进入TIME_WAIT状态;被动关闭方收到ACK后直接进入CLOSED状态,主动关闭方等待2MSL超时后,也进入CLOSED状态,连接彻底关闭。
四、关键标志位对比
三次握手:核心使用SYN(同步)和ACK(确认)两个标志位,第二次握手可以将两个标志位合并在同一个数据包中发送。
四次挥手:核心使用FIN(结束)和ACK(确认)两个标志位,FIN和ACK无法合并发送,需要分开展开在不同的数据包中。
五、报文合并与特殊状态对比
报文合并差异
三次握手:第二次握手可以合并SYN和ACK,原因是服务器此时没有待发送的数据,能够同时回应客户端的同步请求和发起自身的同步请求。
四次挥手:第二次挥手的ACK和第三次挥手的FIN不能合并,因为 TCP 是全双工通信,被动关闭方收到FIN时,可能还有未传输完成的数据,必须先回复ACK确认关闭请求,等数据传输完毕后,再发送FIN关闭自己的通信方向。
特殊状态差异
三次握手:整个过程没有长时间的超时等待状态。
四次挥手:主动关闭方会进入TIME_WAIT状态,需要等待2MSL(报文最大生存时间),目的是防止网络中残留的延迟报文干扰后续新建的连接,同时确保被动关闭方能够收到最终的ACK确认包。

posted @ 2025-12-22 10:47  LShuang  阅读(1)  评论(0)    收藏  举报