TCP 握手
TCP (傳輸控制協議) 使用三次握手(也稱為 TCP 握手、三次報文握手、SYN-SYN-ACK)來在基於 IP 的網路上建立 TCP/IP 連線。類似地,四次握手用於終止連線。
TCP 用來協商和啟動 TCP 會話傳輸的三條報文分別暱稱為 SYN、SYN-ACK 和 ACK,分別代表SYNchronize (同步)、SYNchronize-ACKnowledgement (同步-確認) 和 ACKnowledge (確認)。這種三條報文的機制是為了讓想要相互傳遞資訊的兩臺計算機能夠在傳輸 HTTP 瀏覽器請求等資料之前,先協商好連線的引數。
- 發起方,通常是瀏覽器,向另一方(通常是伺服器)傳送一個 TCP SYNchronize (同步) 報文。
- 伺服器接收到 SYN 後,會回發一個 SYNchronize-ACKnowledgement (同步-確認) 報文。
- 發起方接收到伺服器的 SYN-ACK 後,會發送一個 ACKnowledge (確認) 報文。伺服器接收到 ACK 後,TCP 套接字連線就建立完成了。
在建立安全連線時,此握手步驟發生在 DNS 查詢之後,TLS 握手之前。連線可以透過連線的雙方獨立終止,採用四次握手,其中 FIN (finish,結束) 和 ACK (確認) 報文對會由雙方獨立傳送和接收。
- 發起方向另一方傳送一個 FIN 報文。
- 另一方向發起方傳送一個 ACK 報文。
- 此時,連線處於半關閉狀態,另一方仍然可以傳送資料。(例如,當客戶端關閉了到伺服器的連線後,伺服器仍然可以完成傳送資料給客戶端。)
- 另一方向發起方傳送一個 FIN 報文。
- 發起方向另一方傳送一個 ACK 報文。
另見
- 傳輸層安全 (TLS) 協議
- 相關詞彙表術語
- 維基百科上的傳輸層安全