1. 程式人生 > >【計算機網路】為什麼TCP需要三次握手和四次揮手?

【計算機網路】為什麼TCP需要三次握手和四次揮手?

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也斷開了連線。至此,完成揮手過程。

可能有捧油會問,為什麼2、3次揮手不能合在一次揮手中?那是因為此時A雖然不再發送資料了,但是還可以接收資料,B可能還有資料要傳送給A,所以兩次揮手不能合併為一次。

揮手次數比握手多一次,是因為握手過程,通訊只需要處理連線

。而揮手過程,通訊需要處理資料+連線