一圖勝千言。看一下三次握手的過程圖解。服務器
第一次握手:Client將標誌位SYN置爲1,隨機產生一個值seq=x,並將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認。 (2)第二次握手:Server收到數據包後由標誌位SYN=1知道Client請求創建鏈接,Server將標誌位SYN和ACK都置爲1,ack=x+1,隨機產生一個值seq=y,並將該數據包發送給Client以確認鏈接請求,Server進入SYN_RCVD狀態。 (3)第三次握手:Client收到確認後,檢查ack是否爲x+1,ACK是否爲1,若是正確則將標誌位ACK置爲1,ack=K+1,並將該數據包發送給Server,Server檢查ack是否爲y+1,ACK是否爲1,若是正確則鏈接創建成功,Client和Server進入ESTABLISHED狀態,完成三次握手,隨後Client與Server之間能夠開始傳輸數據了。server
注:上面加粗的都要問,好比客戶端第一次給服務器發送的數據的序號是怎麼來的?三次握手過程當中client和server的狀態?blog
另:若是第三次握手的時候,客戶端沒有收到服務器發送的包,會怎麼辦?cli
答:會不斷重發直至成功或者超時。請求