TCP斷開連線的四次揮手

2021-09-27 02:56:54 字數 864 閱讀 6577

之前學習了tcp建立連線的三次握手,現在來學習一下tcp斷開連線的四次揮手。

簡單描述一下tcp斷開連線的原理。

下面是我自己的理解圖。

這裡是比較官方的圖。

重點說一下各個狀態把:

msl就是maximum segment lifetime(最大分節生命期),這是乙個ip資料報能在網際網路上生存的最長時間,超過這個時間將在網路中消失

established:建立連線狀態

fin_wait_1:客戶端關閉等待

fin_wait_2:客戶端關閉等待

time_wait:客戶端收到伺服器可以關閉的通知(fin=1)進入的狀態

為什麼需要time_wait?

1.可靠的關閉伺服器資源。有可能伺服器沒有收到第四次握手的通知(客戶端確認可以關閉的通知),那麼伺服器端將重試確認,但是此時如果客戶端沒有進入time_wait,直接關閉連線,將會導致伺服器無法進入closed狀態。造成資源的浪費。

2.防止失效請求。防止上乙個tcp連線的延遲的資料報(發起關閉,但關閉沒完成),被接收後,影響到新的tcp連線。(唯一連線確認方式為四元組:源ip位址、目的ip位址、源埠、目的埠)。也就是說如果新的tcp連線的四元組與舊的連線相同,那麼在網路上延遲到達的客戶端關閉連線fin=1,將會關閉新連線。

tcp斷開連線四次揮手

tcp斷開連線是經歷了四次揮手的過程 1 客戶端主動斷開連線向服務端傳送 請求標誌位 fin 連線序號 seq 2 服務端收到請求後向客戶端傳送 確認請求標誌位 ack 確認連線序號 ack 3 服務端還會向客戶端傳送 請求標誌位 fin 連線序號 seq 4 客戶端在收到服務端資料後想服務端傳送 ...

TCP斷開連線四次揮手詳解

首先來一張最經典的四次揮手示意圖 四次揮手即終止tcp連線,就是指斷開乙個tcp連線時,需要客戶端和服務端總共傳送4個包以確認連線的斷開。在socket程式設計中,這一過程由客戶端或服務端任一方執行close socket來觸發。由於tcp連線是全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則...

TCP四次揮手斷開連線詳解

tcp四次揮手。資料傳輸結束後,通訊的雙方都可釋放連線。現在a和b都處於established狀態。a的應用程式先向tcp發出連線釋放報文段,主動關閉tcp連線。a把連線釋放報文段的首部fin置為1,序號seq u,它等於前面已傳送過的資料的最後乙個位元組的序號加1。這時a進入fin wait 1狀...