爲何TCP須要三次握手和四次揮手

本文但願以簡單易懂的形式解釋下這個問題,其具體的發包數據、過程等還請自行Google。純屬我的觀點,若有不妥,還請各位看官指教。資源

TCP協議是一種面向鏈接的、可靠的、基於字節流的傳輸層通訊協議,採用全雙工通訊。請求

那爲何須要三次握手呢?請看以下的過程:通信

  1. A向B發起創建鏈接請求:A——>B;
  2. B收到A的發送信號,而且向A發送確認信息:B——>A;
  3. A收到B的確認信號,並向B發送確認信號:A——>B。

三次握手大概就是這麼個過程。
經過第一次握手,B知道A可以發送數據。經過第二次握手,A知道B能發送數據。結合第一次握手和第二次握手,A知道B能接收數據。結合第三次握手,B知道A可以接收數據。數據

至此,完成了握手過程,A知道B能收能發,B知道A能收能發,通訊鏈接至此創建。三次鏈接是保證可靠的最小握手次數,再屢次握手也不能提升通訊成功的機率,反而浪費資源。協議

那爲何須要四次揮手呢?請看以下過程:時間

  1. A向B發起請求,表示A沒有數據要發送了:A——>B;
  2. B向A發送信號,確認A的斷開請求請求:B——>A;
  3. B向A發送信號,請求斷開鏈接,表示B沒有數據要發送了:B——>A;
  4. A向B發送確認信號,贊成斷開:A——>B。

B收到確認信號,斷開鏈接,而A在一段時間內沒收到B的信號,代表B已經斷開了,因而A也斷開了鏈接。至此,完成揮手過程。block

可能有捧油會問,爲何二、3次揮手不能合在一次揮手中?那是由於此時A雖然再也不發送數據了,可是還能夠接收數據,B可能還有數據要發送給A,因此兩次揮手不能合併爲一次。

揮手次數比握手多一次,是由於握手過程,通訊只須要處理鏈接。而揮手過程,通訊須要處理數據+鏈接

相關文章
相關標籤/搜索