傳輸層

三向交握(three-way handshake)

兩個人開始一段重要對話前,常會先確認線路通暢:「聽得到我嗎?」——「聽得到,你聽得到我嗎?」——「聽得到。」此時雙方都知道彼此在兩個方向上都聽得見。TCP 用的正是這套小儀式來開啟每一條連線,叫做三向交握。它是兩端在任何真正資料流動前,約定要交談並把記帳資訊同步好的方式。

它需要三個區段。首先發起方(比方說你的瀏覽器)送出一個 SYN 區段——SYN 是「synchronize(同步)」的意思——帶著它隨機挑選的初始序號,叫它 x。伺服器回一個 SYN-ACK:它同時設了 SYN 旗標(提出自己的初始序號 y)與 ACK 旗標(確認 x+1,意思是「我聽到你的 SYN 了,準備好接你的位元組 x+1」)。最後發起方送一個 ACK 確認 y+1。這三則訊息之後,雙方都知道對方的起始序號、也知道路徑在兩個方向都通,資料傳輸便可開始(常常緊接著的下一個區段就帶真正的資料)。

為什麼重要:交握把 TCP 從「射一次就走」變成同步、可靠的對話——它在資料之前的一個往返內,確立了兩端的交談意願與初始序號。兩個誠實的重點:它增加了一個往返時間的啟動延遲,這正是 QUIC、TCP Fast Open 這類協定設法縮短或跳過它的原因。而且它不是身分驗證——完成交握只證明對方位址有東西回應了,不證明對方是誰;那是 TLS 的工作。它的 SYN 步驟也是 SYN 洪泛攻擊鎖定的目標。

瀏覽器 → 伺服器:SYN,seq=x。伺服器 → 瀏覽器:SYN-ACK,seq=y,ack=x+1。瀏覽器 → 伺服器:ACK,ack=y+1。三則訊息、一個往返的建立——現在雙方都知道彼此的起始位元組號碼,連線已開啟。

SYN、SYN-ACK、ACK:「聽得到我嗎?」用三步完成。

交握同步的是序號與交談意願——它不是身分驗證。任何能觸及該位址的人都能完成它;證明身分需要 TLS。半開的 SYN 也正是 SYN 洪泛攻擊所濫用的東西。

又称
3-way handshakeTCP handshake三向交握三次握手