主要是爲了初始化sequence number的初始值,通訊的雙方要互相通知雙方的sequence number,這個要做爲之後數據通訊的序號,保證之後不會由於網絡上的傳輸問題而亂序,tcp會使用這個序號來拼接數據。所以,在服務器回發它的sequence number之後,還須要發送確認報文發送給服務器告知服務器客戶端已經收到了你的報文。
所以,若是隻是兩次握手的話,那麼client發送一個請求,server接收到,在回覆一個,這就表示server收到了client的sequence number,可是若是client不給server回覆一個消息的話,那麼server將沒法肯定client是否已經收到了本身的seq。
服務器
第一次握手
客戶端向服務端發送鏈接請求報文段。該報文段的頭部中SYN=1,ACK=0,同時選擇一個初始序號seq=x。請求發送後,客戶端便進入SYN-SENT狀態。網絡
第二次握手
服務端收到鏈接請求報文段後,若是贊成鏈接,會發送一個應答:SYN=1,ACK=1,seq=y,ack=x+1。發送完應答後服務端進入SYN-RCVD狀態。tcp
第三次握手
客戶端收到服務端鏈接贊成的應答後,還會向服務端發送一個確認報文段,表示:服務端發來的鏈接贊成應答已經成功收到。該報文段的頭部爲:ACK=1,seq=x+1,ack=y+1。該報文發送完畢後,客戶端和服務器端都進入ESTABLISHED狀態,完成TCP三次握手。server