## 為什麼TCP 建立連線需要三次握手 1. 防止重複建立連接 > The principle reason for the three-way handshake is to prevent old duplicate connection initiations from causing confusion. 如果 TCP 連線只有兩次交握,接收方只能選擇接受或拒絕發送方的請求,但無法確定這個請求是否由於網絡擁塞而過期。有了第三次交握,接收方在第二次交握時會發送 ACK (傳送方的 (SEQ + 1)) 給傳送方,連線發起者可藉由檢查 ACK,來看當前連線是否為最新的,如果不是即可發送 RST 中斷連線。 ![image](https://hackmd.io/_uploads/rJtxK86UR.png) 2. 初始化 Sequence Number TCP 為可靠傳輸,可透過 Sequence Number 確保三件事 * 接收方可以利用 Sequence Number 去除重複封包 * 發送方在對應封包未收到確認回應(ACK)時,會重複發送封包 * 接收方可以根據封包序號對它們進行排序 而三次交握可讓雙方接收彼此初始化的 Sequence Number > [為什麼TCP 建立連線需要三次握手](https://draveness.me/whys-the-design-tcp-three-way-handshake/) > [TCP通訊協定與三次握手機制](https://andypolo8214.medium.com/tcp%E9%80%9A%E8%A8%8A%E5%8D%94%E5%AE%9A%E8%88%87%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E6%A9%9F%E5%88%B6-af5fff03b41c)