TCP三次握手、四次揮手

tcp三次握手四次揮手完整過程圖
1. 說具體過程之前,我們先解釋一下TCP幾個標誌位

 SYN:建立聯機
 ACK:確認
 FIN:關閉連接
 RST:重置
 URG:緊急

2. 三次握手具體過程如下:

第一次握手:客戶端發送一個請求建立連接數據包,其中SYN=1,並隨機產生一個序列號。當服務端收到這個數據包後,由SYN=1得知客戶端想建立連接,
第二次握手:服務端對客戶端的連接請求進行確認,向客戶端發送確認包,其中ACK=1,SYN=1,確認序列號爲客戶端序列號加1,併產生一個自己隨機序列號。
第三次握手:客戶端對收到的服務器端的建立聯機的數據包進行確認,告訴服務端,你的請求連接被確認。

3.四次揮手具體過程如下:

第一次揮手:客戶端數據傳輸完畢時,客戶端向服務端發送FIN=1的數據包,相當於告訴服務端,我的數據傳輸完了,請求釋放連接。
第二次揮手:由於建立的連接時全雙工的,服務端收到客戶端釋放連接請求的時候並不會馬上向客戶端傳FIN=1的的數據包,他要等他的數據傳完之後才發送FIN=1的數據包,而是先對客戶端釋放連接的請求進行確認,令ACK=1,告訴他你釋放連接的請求我已經收到了,但是我還有數據沒有傳完,等我傳完在釋放連接。
第三次揮手:服務端數據傳輸完成後,向客戶端發送標誌位FIN=1的數據包,表示自己數據傳輸完畢請求釋放連接,
第四次揮手:客戶端收到服務端釋放連接的請求後,對他的釋放請求進行確認,把自己設置成TIME-WAIT狀態,並啓動定時器,當服務端沒有收到來自客戶端的確認,當它的定時器超時後會要求客戶端重新發送ACK。當服務端收到客戶端的確認時候,服務端就斷開連接,客戶端等待2MSL(報文最大生存時間)時候沒有收到服務端的重傳請求後,他就知道服務端已經收到ACK,並且客戶端也關閉連接。

4.關於三次握手、四次揮手有幾個要說的是問題

TCP建立連接爲什麼是三次握手?
在謝希仁版的計算機網絡中解釋爲“爲了防止已經失效的連接請求報文突然又傳到了服務器端,因而產生錯誤”:當客戶端發送建立連接的報文段,在網絡中某個節點滯留時間太長,以至於客戶端認爲它丟失了,重新發送一個建立連接的報文,後發送的這個報文成功建立連接之後,之前誤認爲丟失的報文又到達了服務端,服務端認爲是客戶端新的建立連接的請求報文,如果不採用三次握手機制,這樣服務端會與之建立連接。服務端會一直等待客戶端發來請求,但是客戶端並沒有想與之建立連接, 這樣服務端很多資源都白白浪費掉。

四次揮手之後客戶端爲什麼不能立刻關閉連接,而是要等2MSL?
爲了防止第四次確認連接釋放的報文丟失,客戶端關閉連接之後,確認報文丟失,那麼服務端會重新發送釋放連接的報文,但是客戶端已經關閉,所以,服務端永遠收不到來自客戶端的確認。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章