TCP鏈接和創建

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爲什麼採用三次握手來創建鏈接,若採用二次握手能夠嗎,請說明緣由? 客戶端

三次握手是爲了防止已失效的鏈接請求再次傳送到服務器端。     二次握手不可行,由於:若是因爲網絡不穩定,雖然客戶端之前發送的鏈接請求以到達服務方,但服務方的贊成鏈接的應答未能到達客戶端。則客戶方要從新發送鏈接請求,若採用二次握手,服務方收到重傳的請求鏈接後,會覺得是新的請求,就會發送贊成鏈接報文,並新開進程提供服務,這樣會形成服務方資源的無謂浪費。

相關文章
相關標籤/搜索