TCP的四次揮手

2021-09-24 23:29:35 字數 744 閱讀 5629

「揮手」是為了終止連線,tcp四次揮手流程圖如下:

tcp採用四次揮手來釋放連線

第一次揮手:client傳送乙個fin用來關閉client到server的資料傳送,client進入fin_wait_1狀態;

第二次揮手:server收到fin後,傳送乙個ack給client,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號),server進入close_wait狀態;

第三次揮手:server傳送乙個fin,用來關閉server到client的資料傳送,server進入last_ack狀態;

第四次揮手:client收到fin後,client進入time_wait狀態,接著傳送乙個ack給server,確認序號為收到序號+1,server進入closed狀態,完成四次揮手

為什麼會有time_wait狀態?

確保有足夠時間讓對方收到ack包

避免新舊連線混淆

為什麼需要四次握手才能斷開連線?

伺服器出現大量close_wait狀態的原因

- 對方關閉socket連線,我方忙於讀或寫,沒有及時關閉連線

解決辦法:

- 檢查**,特別是釋放資源的**

- 檢查配置,特別是處理請求的執行緒配置

tcp 四次揮手 TCP四次揮手

tcp斷開連線的過程 客戶端傳送fin報文,表明客戶端將不在傳送資料。具體過程 把fin標誌位改為1,序號seq u,之前傳送的資料加1,這裡規定即使不攜帶資料序號也要 1。該過程中客戶端通過close系統呼叫從established狀態進入fin wait 1狀態。第二次揮手 服務端收到客戶端發來...

TCP四次揮手

純給自己看的 發起關閉的一方是客戶端,被動關閉的一方是伺服器。1 客戶端a傳送乙個fin 1,用來關閉客戶a到伺服器b的資料傳送。圖上畫的對,還有乙個seq n 2 伺服器b收到這個fin,它發回乙個ack 1,確認序號ack為收到的序號加1。3 伺服器b關閉與客戶端a的連線,傳送乙個fin 1給客...

TCP四次揮手

四次揮手 1.客戶端程序發出連線釋放報文,並且停止傳送資料。釋放資料報文首部,fin 1,其序列號為seq u 等於前面已經傳送過來的資料的最後乙個位元組的序號加1 此時,客戶端進入fin wait 1 終止等待1 狀態。tcp規定,fin報文段即使不攜帶資料,也要消耗乙個序號。2.伺服器收到連線釋...