TCP/IP三次握手及四次揮手

三次握手:

首先上個圖:
這裏寫圖片描述

然後再來描述下這個過程罷!

a.首先,客戶端向服務器發送SYN請求(序列號X,Y爲隨機數),請求連接。
b.然後,服務器收到請求,向客戶端發送SYN(X=X+1),ACK響應表明自己收到請求,並且同意連接。
c.最後,客戶端收到服務器端的響應後,發送ACK建立連接。
連接好後,客戶端與服務器便可以開始通信了。

好的,以上是官方連接語言,覺得自己記不住就記下面這個:

默認:A是客戶端,B是服務器

A對B說:“我想送你禮物,你要不要?”
B說:“要啊要啊。”
A說:“好的。”
,,,,送禮物中,,,,

四次揮手

先上圖:
這裏寫圖片描述

描述描述:

a.首先,客戶端向服務器發送FIN表示即將關閉通信,請求服務器的認可,此時狀態是半關閉的。
b.然後,服務器收到請求,迴應客戶端表明自己同意斷開,但是先把當前數據傳輸完,此時發送兩個數據,一個之前還未發送完的數據,和一個對斷開通信響應的FIN。
c.最後,客戶端收到服務器同意斷開的FIN,再發送響應ACK表明數據收到,此時便可以斷開通信了。

至此,客戶端與服務器便斷開了。

默認:A是客戶端,B是服務器

A對B說:“我媽媽喊我回家吃飯呢,我要走了。”
B對A:“等會,等會,我把這個故事給你講完。”
,,,,講故事中,,,,
B對A說:“講完了,你回家吧。”
A對B說:“嗯嗯,好的,那我走了。”
,,,,回家中,,,,

【注意】 在TIME_WAIT狀態中,如果TCP client端最後一次發送的ACK丟失了,它將重新發送。等待狀態中所需要的時間是依賴於實現方法的。典型的值爲30秒、1分鐘和2分鐘。等待之後連接正式關閉,並且所有的資源(包括端口號)都被釋放。

【問題1】爲什麼連接的時候是三次握手,關閉的時候卻是四次握手?

答:因爲當Server端收到Client端的SYN連接請求報文後,可以直接發送SYN+ACK報文。
其中ACK報文是用來應答的,SYN報文是用來同步的。但是關閉連接時,當Server端收到FIN報文時,很可能並不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴Client端,”你發的FIN報文我收到了”。
只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送。故需要四步握手。

【問題2】爲什麼TIME_WAIT狀態需要經過2MSL(最大報文段生存時間)才能返回到CLOSE狀態?

答:雖然按道理,四個報文都發送完畢,我們可以直接進入CLOSE狀態了,但是我們必須假象網絡是不可靠的,有可以最後一個ACK丟失。所以等待狀態就是用來重發可能丟失的ACK報文。

發佈了56 篇原創文章 · 獲贊 104 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章