天天看點

轉載:TCP為什麼要三次握手而結束要四次

TCP為什麼要三次握手而結束要四次

1、連接配接為什麼3次握手

舉個打電話的例子:

  A : 你好我是A,你聽得到我在說話嗎

  B : 聽到了,我是B,你聽到我在說話嗎

  A : 嗯,聽到了

  建立連接配接,開始聊天!

三次握手的過程如下所示:

轉載:TCP為什麼要三次握手而結束要四次

簡單而言:如果不是三次握手的話,那麼到底需要幾次握手最佳呢?2次握手?

先看2次握手的情況:

用戶端給伺服器發送建立連接配接的請求,伺服器同意連接配接請求發回應給用戶端,連接配接就此建立。

有問題的就是網絡中經常會出現的包的延遲,如果用戶端的某個包在路由器上延遲了,過了很久才發給伺服器,伺服器收到這個包後回應給用戶端,伺服器以為連接配接就此建立成功,配置設定資源,這樣就會出現問題。

補充:

TCP三向交握,實際上是雙方各握手一次,各做一次确認,其中一次握手和确認合并在一起。

2、為什麼TCP協定終止連接配接要四次?

轉載:TCP為什麼要三次握手而結束要四次

1、當主機A确認發送完資料且知道B已經接受完了,想要關閉發送資料口(當然确認信号還是可以發),就會發FIN給主機B。

2、主機B收到A發送的FIN,表示收到了,就會發送ACK回複。

3、但這是B可能還在發送資料,沒有想要關閉資料口的意思,是以FIN與ACK不是同時發送的,而是等到B資料發送完了,才會發送FIN給主機A。

4、A收到B發來的FIN,知道B的資料也發送完了,回複ACK, A等待2MSL以後,沒有收到B傳來的任何消息,知道B已經收到自己的ACK了,A就關閉連結,B也關閉連結了。

A為什麼等待2MSL,從TIME_WAIT到CLOSE?

繼續閱讀