首先來一張最經典的四次揮手示意圖:
四次揮手即終止tcp連線,就是指斷開乙個tcp連線時,需要客戶端和服務端總共傳送4個包以確認連線的斷開。在socket程式設計中,這一過程由客戶端或服務端任一方執行close socket來觸發。
由於tcp連線是全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則是當一方完成資料傳送任務後,傳送乙個fin來終止這一方向的連線,收到乙個fin只是意味著這一方向上沒有資料流動了,即不會再收到資料了,但是在這個tcp連線上仍然能夠傳送資料,直到這一方向也傳送了fin。首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉。
第一次揮手:tcp客戶端傳送乙個fin報文,用來關閉客戶到伺服器的資料傳送。客服端自己進入到fin_timewait1階段,等待對端伺服器回發的ack
第二次揮手: 伺服器收到這個fin報文,它發回乙個ack報文,確認序號為收到的序號加1。和syn一樣,乙個fin報文將占用乙個序號。伺服器自己進入close_wait,等待關閉狀態。客服端接受到這個ack報文後, 自己進入到fin_timewait2狀態。等待對端伺服器發過來fin.
第三次揮手: 伺服器關閉客戶端的連線,傳送乙個fin給客戶端。自己進入last_ack狀態, 等待最終的對端發來ack確認。
第四次揮手:客戶端nhg客戶端發回ack報文確認,並將確認序號設定為收到序號加1。
TCP四次揮手斷開連線詳解
tcp四次揮手。資料傳輸結束後,通訊的雙方都可釋放連線。現在a和b都處於established狀態。a的應用程式先向tcp發出連線釋放報文段,主動關閉tcp連線。a把連線釋放報文段的首部fin置為1,序號seq u,它等於前面已傳送過的資料的最後乙個位元組的序號加1。這時a進入fin wait 1狀...
tcp斷開連線四次揮手
tcp斷開連線是經歷了四次揮手的過程 1 客戶端主動斷開連線向服務端傳送 請求標誌位 fin 連線序號 seq 2 服務端收到請求後向客戶端傳送 確認請求標誌位 ack 確認連線序號 ack 3 服務端還會向客戶端傳送 請求標誌位 fin 連線序號 seq 4 客戶端在收到服務端資料後想服務端傳送 ...
TCP斷開連線的四次揮手
之前學習了tcp建立連線的三次握手,現在來學習一下tcp斷開連線的四次揮手。簡單描述一下tcp斷開連線的原理。下面是我自己的理解圖。這裡是比較官方的圖。重點說一下各個狀態把 msl就是maximum segment lifetime 最大分節生命期 這是乙個ip資料報能在網際網路上生存的最長時間,超...