在網絡通信的世界里,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