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协议可靠通信的核心基础。
posted on 2025-12-29 10:28  杨YHX  阅读(0)  评论(0)    收藏  举报