TCP 3次握手 4次揮手
3次握手的目的
三次握手的目的:是為了確認雙方都有收發資料的能力。
第一次: A->B,證明A有發訊息的能力。
第二次: ->B && B->A,證明B有收訊息,並且有發訊息的能力。
第三次: A->B,證明A有收訊息的能力。
二次握手達不到目的,四次多餘。
需4次揮手原因
由於TCP的半關閉特性,TCP連線時雙全工(即資料在兩個方向上能同時傳遞),因此,每個方向必須單獨的進行關閉。這個原則就是:當一方完成它的資料傳送任務後就能傳送一個FIN來終止這個方向上的連線。當一端收到一個FIN後,它必須通知應用層另一端已經終止了那個方向的資料傳送。即收到一個FIN意味著在這一方向上沒有資料流動了。
目的:保證伺服器與客戶端都能完全的接收對方傳送的資料。
經典的“兩軍通訊”問題
假設場景是這樣的:
在山的兩頭是紅軍1和紅軍2,山上是藍軍,紅軍1和2都不是藍軍的對手,想打敗藍軍只有一起動手。那麼紅軍1和2如何通訊才能確定雙方在同一個時間動手呢?
紅軍1的傳令軍成功偷偷越過大山告訴紅軍2,明天早上中午十二點一起動手;
紅軍2表示贊同,但是紅軍1並不確定紅軍2是否收到了訊息,貿然動手必定失敗,所以紅軍2的傳令軍越過大山告訴紅軍1收到了訊息;
但是這時候紅軍2並不確定傳令軍是否成功到達紅軍1告訴紅軍1收到了訊息,不敢獨自動手,所以紅軍1只好再次派出傳令軍,告訴紅軍2我們知道你們收到訊息了;
問題又來了,紅軍1不知道傳令是否成功,只有等待紅軍2的確認並不敢動手,紅軍2也只能再次派出傳令軍。。。
最後陷入了一個死迴圈,那麼根本問題就暴露了:永遠都不能完美的達成協議,而這正是一個一個重要的通訊道理:世界上不存在完全可靠的通訊協議。
從通訊時間成本空間成本以及可靠度來講,選擇了“三次握手”作為點對點通訊的一般規則。
關於建立連線時的三次握手大家可能還有個問題:
三次握手真的可靠嗎?
當然不可靠,任意次的握手都是不可靠的,握手成功只能說明握手時的通訊是正常的,並不能保證握手後的通訊是正常的,例如不穩定的網路環境,這些都是可能的。握手只能保證儘可能的可靠,而不可能保證理論上的絕對可靠。
本文整理自:
https://www.zhihu.com/question/24853633/answer/115379350
https://www.zhihu.com/question/24853633/answer/254420399?utm_source=wechat_session&utm_medium=social
個人微信公眾號:
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- TCP三次握手四次揮手TCP
- 複述 tcp 3次握手 4次揮手TCP
- TCP三次握手&四次揮手TCP
- TCP 三次握手四次揮手TCP
- TCP三次握手和四次揮手TCP
- 一看就懂的TCP握手和揮手TCP
- TCP 三次握手 與 四次揮手TCP
- TCP 、 UDP、三次握手、四次揮手TCPUDP
- TCP三次握手與四次揮手TCP
- TCP的三次握手四次揮手TCP
- TCP的三次握手與四次揮手TCP
- TCP三次握手四次揮手介紹TCP
- TCP三次握手和四次揮手理解TCP
- TCP三次握手及四次揮手理解TCP
- 詳解TCP一:三次握手、四次揮手TCP
- 簡述TCP三次握手和四次揮手TCP
- tcp三次握手、四次揮手過程解析TCP
- 說說TCP的三次握手和四次揮手TCP
- 圖解TCP的三次握手和四次揮手圖解TCP
- Wireshark抓包分析TCP“三次握手,四次揮手”TCP
- TCP的三次握手與四次揮手詳解TCP
- TCP協議的三次握手和四次揮手TCP協議
- TCP三次握手、四次揮手概念圖詳解TCP
- 注意!是TCP不是HTTP的3次握手與4次揮手(#...#)TCPHTTP
- TCP 三次握手和四次揮手及其狀態TCP
- 理解TCP/IP協議三次握手四次揮手TCP協議
- TCP-三次握手和四次揮手簡單理解TCP
- TCP協議特點和三次握手/四次揮手TCP協議
- 通俗易懂的TCP“三次握手”與“四次揮手”TCP
- 跟著動畫學TCP三次握手和四次揮手動畫TCP
- 看圖理解TCP的三次握手和四次揮手TCP
- TCP/IP的三次握手與四次揮手詳解TCP
- TCP協議中的三次握手與四次揮手TCP協議
- 這次一定讓你記住 TCP 三次握手、四手揮手!TCP
- 【網路】TCP協議中三次握手和四次揮手TCP協議
- 談談TCP協議的三次握手和四次揮手TCP協議
- 詼諧的談談TCP三次握手和四次揮手TCP
- TCP協議的3次握手與4次揮手過程詳解TCP協議