TCP 协议是传输层两大协议之一,它提供的是面向连接的可靠的数据运输服务。
为建立连接的双方(Client、Server)提供全双工通信(双向同时传输)。
而 TCP 涉及连接的机制就是著名的三次握手和四次挥手,三次握手用于建立连接,四次挥手用于释放连接。
三次握手:建立连接
流程如下
假设客户端 A 主动去与 服务器 B 建立连接。
- 首先服务端 B 需要处于 LISTEN(监听)状态,等待客户的连接请求。
- 之后,主动发起连接的一方 A,向 B 发送连接请求报文,在这段 TCP 报文中,SYN = 1,ACK = 0(几乎是唯一的 ACK 为 0 的情况,因为 TCP 协议规定连接建立后,每一个 TCP 报文中的 ACK 均置为 1),并设置一个初始的序号 (sequence number) seq = x。
- B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,在这段 TCP 报文中,SYN = 1,ACK = 1,确认号(acknowledge number)ack = x+1,同时也设置一个初始的序号 seq = y。
- A 收到