在网络通信的世界里,TCP(Transmission Control Protocol,传输控制协议)是确保数据可靠传输的基石。其中,三次握手建立连接、四次挥手断开连接的过程,更是 Java 秋招面试中的高频考点。今天,我们就深入剖析这两个关键过程,结合原理、代码示例与面试真题,帮你吃透知识点 。
一、TCP 三次握手:建立可靠连接
(一)核心原理
TCP 连接的建立基于 三次握手 机制,目的是让客户端和服务器双方确认彼此收发数据的能力,同步初始序列号(ISN),为可靠传输打基础。过程如下:
- 第一次握手(客户端 → 服务器):客户端主动打开连接,发送
SYN
报文(SYN=1
,seq=x
,x
是客户端初始序列号 ),进入SYN-SENT
状态 。 - 第二次握手(服务器 → 客户端):服务器监听端口收到
SYN
报文,回复SYN+ACK
报文(SYN=1
,ACK=1
,seq=y
,ack=x+1
,y
是服务器初始序列号 ),进入SYN-RCVD
状态 。 - 第三次握手(客户端 → 服务器):客户端收到
SYN+ACK
报文,回复ACK
报文(ACK=1
,seq=x+1
,ack=y+1
),进入ESTABLISHED
状态;服务器收到ACK
报文后,也进入ESTABLISHED
状态,连接建立完成,双方开始数据传输
服务器客户端服务器客户端SYN=1, seq=x(进入 SYN-SENT