TCP為什麼要三次握手而結束要四次
1、連接配接為什麼3次握手
舉個打電話的例子:
A : 你好我是A,你聽得到我在說話嗎
B : 聽到了,我是B,你聽到我在說話嗎
A : 嗯,聽到了
建立連接配接,開始聊天!
三次握手的過程如下所示:
簡單而言:如果不是三次握手的話,那麼到底需要幾次握手最佳呢?2次握手?
先看2次握手的情況:
用戶端給伺服器發送建立連接配接的請求,伺服器同意連接配接請求發回應給用戶端,連接配接就此建立。
有問題的就是網絡中經常會出現的包的延遲,如果用戶端的某個包在路由器上延遲了,過了很久才發給伺服器,伺服器收到這個包後回應給用戶端,伺服器以為連接配接就此建立成功,配置設定資源,這樣就會出現問題。
補充:
TCP三向交握,實際上是雙方各握手一次,各做一次确認,其中一次握手和确認合并在一起。
2、為什麼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?