什麼是三次握手
- TCP是網絡傳輸層的協議,提供面向鏈接的可靠的字節流服務,要通訊得先創建鏈接
- 所謂三次握手就是指,創建一個TCP鏈接時,須要CLient與Server發送三個包,確認鏈接的創建
- 這一過程由Client執行connect觸發
簡單描述下三次握手的具體過程
第一次握手:
Client將SYN置爲1,seq=隨機值j,將該數據包發送給Server, 進入SYN_SENT狀態,等待Server確認
第二次握手:
Server收到數據包由標誌位SYN=1知道,是請求創建新鏈接, 將ACK置爲1,ack=j+1,做爲響應Client的請求, 將SYN置爲1,seq=隨機值k,發送給Client等待確認, Server進入SYN_RECV狀態 由於是創建鏈接,這些信息在一個數據包中
第三次握手:
Client收到響應
檢查ACK==1?,ack==j+1?,若都符合 將ACK置爲1,ack=k+1,發送給Server,Client進入establish狀態 Server收到響應 檢查ACK==1?,ack==k+1?,若都符合 進入establish狀態,三次握手完成,TCP鏈接創建,開始通訊
TCP報文圖:


