TCP三次握手服務器
第一次握手:客戶端向服務器發送→SYN J(調用connect進行主動打開。表示同步,告訴服務器客戶將在鏈接中發送的數據的初始序列號,此時connect阻塞)網絡
第二次握手:服務器向客戶端響應一個→SYN K和→ACK J+1,客戶端收到後connect返回(調用accept被動打開,告訴客戶端服務器將在鏈接中發送的數據的初始序列號,此時accept阻塞)接口
第三次握手:客戶端向服務器發送→ACK K+1,服務器收到後accept返回。進程
TCP四次揮手資源
第一次揮手:某個應用先調用close(主動關閉)。這一端的TCP發送一個→FIN M。同步
第二次揮手:收到FIN後(被動關閉),響應一個→ACK M+1。服務器端
第三次揮手:一段時間後,收到文件結束符的應用進程調用close關閉套接口。致使它的TCP也發送一個→FIN N。請求
第四次揮手:收到FIN的原發送端TCP進行確認發送一個→ACK N+1。數據
TCP爲什麼採用三次握手來創建鏈接,若採用二次握手能夠嗎,請說明緣由? 客戶端
三次握手是爲了防止已失效的鏈接請求再次傳送到服務器端。 二次握手不可行,由於:若是因爲網絡不穩定,雖然客戶端之前發送的鏈接請求以到達服務方,但服務方的贊成鏈接的應答未能到達客戶端。則客戶方要從新發送鏈接請求,若採用二次握手,服務方收到重傳的請求鏈接後,會覺得是新的請求,就會發送贊成鏈接報文,並新開進程提供服務,這樣會形成服務方資源的無謂浪費。