三次握手協議指的是在發送數據的準備階段,服務器端和客戶端之間需要進行三次交互:
第一次握手:客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。連接建立后,客戶端和服務器就可以開始進行數據傳輸了。
為了提供可靠的傳送,TCP 在發送新的數據之前,以特定的順序將數據包的序號,并需要這些包傳送給目標機之后的確認消息。TCP 總是用來發送大批量的數據。當應用程序在收到數據后要做出確認時也要用到TCP。
流程圖如下:
?
?