1 传输控制协议(TCP)三次握手过程
TCP三次握手机制是面向连接的传输层协议实现可靠通信的核心流程,通过三次交互验证通信双方的收发能力,并同步连接状态,具体步骤如下:
1.1 第一次握手:客户端发起连接请求
客户端向服务器端发送同步序列编号(Synchronize Sequence Numbers, SYN) 数据包,报文格式满足:
- 控制位:SYN=1(标识连接建立请求);
- 序列号:seq=x(客户端生成的随机初始序列号,用于后续数据段排序)。
- 发送后,客户端进入SYN_SENT状态,等待服务器端确认。
- 核心功能:验证服务器端的接收能力,传递“客户端请求建立连接且数据发送起始序列号为x”的控制信息。
1.2 第二次握手:服务器端确认并同步状态
服务器端接收SYN数据包后,向客户端回复同步-确认(Synchronize-Acknowledgment, SYN-ACK) 数据包,报文格式满足:
- 控制位:SYN=1(服务器端同步连接状态)、ACK=1(确认接收客户端请求);
- 序列号:seq=y(服务器端生成的随机初始序列号);
- 确认号:ack=x+1(期望接收客户端下一个序列号为x+1的数据段,验证客户端发送能力)。
- 发送后,服务器端进入SYN_RCVD状态,等待客户端最终确认。
- 核心功能:验证客户端的接收能力,同步服务器端的初始序列号,实现连接状态的双向交互。
1.3 第三次握手:客户端最终确认
客户端接收SYN-ACK数据包后,向服务器端发送确认(Acknowledgment, ACK) 数据包,报文格式满足:
- 控制位:ACK=1(确认接收服务器端同步请求);
- 序列号:seq=x+1(遵循TCP序列号连续性原则,基于第一次握手的seq=x递增);
- 确认号:ack=y+1(期望接收服务器端下一个序列号为y+1的数据段,验证服务器端发送能力)。
- 发送后,客户端进入ESTABLISHED状态;服务器端接收ACK后同样进入ESTABLISHED状态。
- 核心功能:完成双方收发能力的最终验证,TCP连接正式建立,数据传输通道开放。
2 TCP四次挥手过程
TCP四次挥手是终止全双工连接的标准化流程,需分别关闭通信双方的发送流,具体步骤如下:
2.1 第一次挥手:主动关闭方发起断开请求
主动关闭方(客户端或服务器)向对方发送结束序列编号(Finish Sequence Numbers, FIN) 数据包,报文格式满足:
- 控制位:FIN=1(标识关闭主动方到被动方的发送流);
- 序列号:seq=u(基于已传输数据的序列号递增)。
- 发送后,主动关闭方进入FIN_WAIT_1状态,等待被动方确认。
- 核心功能:告知被动关闭方“主动方已完成数据发送,请求关闭自身发送流”。
2.2 第二次挥手:被动关闭方确认关闭请求
被动关闭方接收FIN数据包后,立即回复ACK数据包,报文格式满足:
- 控制位:ACK=1;
- 确认号:ack=u+1(确认接收主动方的FIN请求)。
- 发送后,被动关闭方进入CLOSE_WAIT状态(可继续向主动方发送未完成数据),主动关闭方收到ACK后进入FIN_WAIT_2状态。
- 核心功能:确认接收关闭请求,保留被动方的发送流以传输剩余数据。
2.3 第三次挥手:被动关闭方发起断开请求
被动关闭方完成所有数据传输后,向主动关闭方发送FIN数据包,报文格式满足:
- 控制位:FIN=1;
- 序列号:seq=w(基于被动方已传输数据的序列号递增)。
- 发送后,被动关闭方进入LAST_ACK状态,等待主动方确认。
- 核心功能:告知主动关闭方“被动方已完成数据发送,请求关闭自身发送流”。
2.4 第四次挥手:主动关闭方最终确认
主动关闭方接收FIN数据包后,回复ACK数据包,报文格式满足:
- 控制位:ACK=1;
- 确认号:ack=w+1(确认接收被动方的FIN请求)。
- 发送后,主动关闭方进入TIME_WAIT状态(等待2MSL以确保网络中残留报文失效),被动关闭方接收ACK后进入CLOSED状态。主动关闭方等待2MSL后也进入CLOSED状态,连接彻底终止。
3 三次握手与四次挥手的底层逻辑
3.1 三次握手的必要性
- 防止历史连接干扰:若仅两次握手,延迟的旧SYN报文可能导致服务器端误建立无效连接(客户端已忽略该请求),第三次握手通过客户端最终确认避免此类问题。
- 验证双向收发能力:三次交互分别验证“服务器接收→客户端接收+服务器发送→客户端发送”的全链路有效性,为可靠数据传输奠定基础。
3.2 四次挥手的必要性
- 全双工通信的独立性:TCP双工通道需独立关闭,被动关闭方收到FIN后需先确认(第二次挥手),待数据传输完毕后再发送FIN(第三次挥手),因此无法合并为三次交互。
总结
- TCP三次握手通过“请求-同步-确认”机制确保连接建立的可靠性,四次挥手通过“关闭请求-确认-反向关闭请求-最终确认”流程实现全双工连接的有序终止,二者共同构成TCP协议可靠通信的核心基础。

浙公网安备 33010602011771号