三次握手四次挥手是什么意思?为什么是3,不是2或者4?
一、三次握手(TCP建立连接的过程)
三次握手是TCP协议建立可靠连接的三次交互过程,目的是同步通信双方的序列号和确认号,确保双方收发能力正常。
-
第一次握手(客户端→服务器):客户端发送SYN报文(同步请求),携带初始序列号,请求建立连接。
-
第二次握手(服务器→客户端):服务器收到SYN报文后,回复SYN+ACK报文,确认客户端的SYN,同时携带自己的初始序列号。
-
第三次握手(客户端→服务器):客户端收到SYN+ACK报文后,回复ACK报文,确认服务器的SYN,连接正式建立。
为什么是3次,不是2次/4次
• 不能是2次:若只有2次握手,服务器无法确认客户端能收到自己的SYN+ACK。客户端可能因报文丢失重发SYN,服务器会建立多个无效连接,浪费资源;且无法同步双方序列号,无法保证可靠传输。
• 不必是4次:3次握手已能完成序列号同步和双向收发能力验证,4次会增加通信开销,降低连接效率。
二、四次挥手(TCP断开连接的过程)
四次挥手是TCP协议终止连接的四次交互过程,目的是确保双方都已传输完所有数据,避免数据丢失。
-
第一次挥手(主动方→被动方):主动关闭方发送FIN报文,告知被动方“我没有数据要发送了”。
-
第二次挥手(被动方→主动方):被动方收到FIN报文后,回复ACK报文,确认收到关闭请求,此时被动方仍可向主动方发送数据。
-
第三次挥手(被动方→主动方):被动方数据传输完毕后,发送FIN报文,告知主动方“我也没有数据要发送了”。
-
第四次挥手(主动方→被动方):主动方收到FIN报文后,回复ACK报文,等待2MSL(最长报文段寿命)后,连接正式关闭。
为什么是4次,不是3次
TCP是全双工通信,双方需独立关闭各自的发送通道。第二次挥手是被动方确认“关闭对方的发送通道”,第三次挥手才是被动方发起“关闭自己的发送通道”,这两步无法合并(中间可能还有数据传输),因此必须分4次交互。
浙公网安备 33010602011771号