在计算机网络体系中TCPTransmission Control Protocol作为面向连接、可靠传输的传输层协议被广泛应用于 HTTP、FTP、SMTP 等主流应用层协议。TCP 通信的前提是通信双方建立稳定、可靠的连接而三次握手正是 TCP 建立连接的标准流程。本文将从原理、报文结构、详细流程、设计意义等方面对 TCP 三次握手进行全面解析。TCP 连接建立的背景TCP 是全双工通信协议通信双方可以同时发送和接收数据。在正式传输数据之前客户端与服务端必须确认彼此的发送能力、接收能力正常并完成初始序列号ISN的同步以保证后续数据按序、可靠传输。三次握手就是为实现这一目标而设计的最小交互次数。TCP 报文核心标识位与字段在三次握手过程中以下报文段字段最为关键SYN同步序列号标志位用于发起连接并同步初始序列号。ACK确认标志位用于标识确认号字段有效。seq序列号标识当前报文段的起始编号。ack确认号表示期望接收的下一个报文段的起始序列号。TCP 三次握手详细流程假设客户端主动发起连接服务端处于监听状态完整流程如下1. 第一次握手客户端 → 服务端客户端状态CLOSED→SYN_SENT报文SYN1ACK0seqx含义客户端向服务端发送连接请求报文告知服务端本方初始序列号为 x请求建立连接。作用服务端确认客户端发送能力正常。2. 第二次握手服务端 → 客户端服务端状态LISTEN→SYN_RCVD报文SYN1ACK1seqyackx1含义服务端确认客户端的连接请求同时向客户端发起连接本方初始序列号为 y。作用客户端确认服务端发送、接收能力均正常。3. 第三次握手客户端 → 服务端客户端状态SYN_SENT→ESTABLISHED报文ACK1seqx1acky1含义客户端确认服务端的连接请求连接正式建立。作用服务端确认客户端接收能力正常。服务端收到报文后状态从SYN_RCVD→ESTABLISHED。至此双方均进入连接已建立状态可以开始传输应用数据。为什么必须是三次握手1. 确认双方收发能力正常一次握手仅能确认客户端发送能力正常。二次握手无法确认客户端接收能力正常。三次握手可完整确认客户端与服务端发送、接收能力均正常。2. 同步初始序列号ISNTCP 依靠序列号实现数据排序、去重、重传。三次握手完成双方初始序列号的交换与确认为可靠传输奠定基础。3. 防止历史过期连接导致资源错误分配网络中可能存在延迟到达的旧连接请求报文。若仅两次握手服务端收到过期 SYN 后会直接建立连接造成资源浪费与逻辑错误。三次握手可让客户端拒绝过期连接避免服务端无效分配资源。
TCP三次握手
在计算机网络体系中TCPTransmission Control Protocol作为面向连接、可靠传输的传输层协议被广泛应用于 HTTP、FTP、SMTP 等主流应用层协议。TCP 通信的前提是通信双方建立稳定、可靠的连接而三次握手正是 TCP 建立连接的标准流程。本文将从原理、报文结构、详细流程、设计意义等方面对 TCP 三次握手进行全面解析。TCP 连接建立的背景TCP 是全双工通信协议通信双方可以同时发送和接收数据。在正式传输数据之前客户端与服务端必须确认彼此的发送能力、接收能力正常并完成初始序列号ISN的同步以保证后续数据按序、可靠传输。三次握手就是为实现这一目标而设计的最小交互次数。TCP 报文核心标识位与字段在三次握手过程中以下报文段字段最为关键SYN同步序列号标志位用于发起连接并同步初始序列号。ACK确认标志位用于标识确认号字段有效。seq序列号标识当前报文段的起始编号。ack确认号表示期望接收的下一个报文段的起始序列号。TCP 三次握手详细流程假设客户端主动发起连接服务端处于监听状态完整流程如下1. 第一次握手客户端 → 服务端客户端状态CLOSED→SYN_SENT报文SYN1ACK0seqx含义客户端向服务端发送连接请求报文告知服务端本方初始序列号为 x请求建立连接。作用服务端确认客户端发送能力正常。2. 第二次握手服务端 → 客户端服务端状态LISTEN→SYN_RCVD报文SYN1ACK1seqyackx1含义服务端确认客户端的连接请求同时向客户端发起连接本方初始序列号为 y。作用客户端确认服务端发送、接收能力均正常。3. 第三次握手客户端 → 服务端客户端状态SYN_SENT→ESTABLISHED报文ACK1seqx1acky1含义客户端确认服务端的连接请求连接正式建立。作用服务端确认客户端接收能力正常。服务端收到报文后状态从SYN_RCVD→ESTABLISHED。至此双方均进入连接已建立状态可以开始传输应用数据。为什么必须是三次握手1. 确认双方收发能力正常一次握手仅能确认客户端发送能力正常。二次握手无法确认客户端接收能力正常。三次握手可完整确认客户端与服务端发送、接收能力均正常。2. 同步初始序列号ISNTCP 依靠序列号实现数据排序、去重、重传。三次握手完成双方初始序列号的交换与确认为可靠传输奠定基础。3. 防止历史过期连接导致资源错误分配网络中可能存在延迟到达的旧连接请求报文。若仅两次握手服务端收到过期 SYN 后会直接建立连接造成资源浪费与逻辑错误。三次握手可让客户端拒绝过期连接避免服务端无效分配资源。