第一次握手:客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;服務器
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN(syn=k)包,即SYN+ACK包,此時服務器進入SYN_RECV狀態。app
第三次握手:客戶端接受服務器SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。ide
注意:握手的過程當中傳送的包裏不包含數據,三次握手完畢後,客戶端和服務器才正式開始傳送數據,理想狀態下,TCP一旦創建鏈接,在通訊雙方中的任何一方主動關閉鏈接以前,TCP鏈接都將一直保持下去。斷開鏈接是服務器和客戶端都可以主動的發起斷開TCP鏈接的請求,斷開過程須要通過四次握手。spa
三次握手示意圖。orm
四次揮手示意圖blog