TCP/IP協(xié)議--TCP四次揮手釋放連接

對于已建立連接的客戶端---服務器連接來說,雙方都可以主動關閉連接,下圖以客戶端關閉連接為例講解TCP的四次揮手釋放連接過程:


image.png
  1. 客戶端向服務器端發(fā)送關閉請求報文,此時FIN=1,ACK=1(一次握手),客戶端處于FIN-WAIT-1狀態(tài);
  2. 服務器端收到客戶端的關閉請求后,向服客戶端發(fā)送確認報文ACK=1,但是,由于TCP連接是全雙工的,也就是雙向連接的,當服務器端接收到關閉報文時,可能還有數(shù)據(jù)要發(fā)送給客戶端,這時服務器端為CLOSE-WAIT狀態(tài),這個階段還可以向客戶端發(fā)送數(shù)據(jù)(二次握手)
  3. 一旦服務器端數(shù)據(jù)全部發(fā)送完之后,就向客戶端發(fā)送關閉請求報文,F(xiàn)IN=1,ACK=1,然后處于最后確認狀態(tài)。(三次握手)
  4. 客戶端收到服務器端收到的關閉請求報文后,發(fā)送關閉確認報文ACK=1,然后客戶端處于TIME-WAIT狀態(tài),該狀態(tài)會等待2MSL時間(2倍最長報文壽命,4min),然后關閉連接。(四次握手)
  5. 服務器端收到客戶端的連接關閉確認后關閉連接。

TIME-WAIT的重要性

image.png

假設客戶端沒有TIME-WAIT狀態(tài),如果客戶端最后一次關閉確認報文丟失,則服務器端會認為是超時重傳,會一直重新發(fā)送關閉請求報文,而此時客戶端已經(jīng)關閉連接,則會導致死鎖。

?;钣嫊r器

  • TCP服務器每接收到一次TCP客戶進程的數(shù)據(jù),就重新設置并啟動?;钣嫊r器
  • 若?;钣嫊r器定時周期內(nèi)未收到TCP客戶端發(fā)來的數(shù)據(jù),則當?;钣嫊r器到時后,TCP服務器進程就向客戶端進程發(fā)送一個探測報文段,以后每隔75s發(fā)送一次。若是一連發(fā)送10個探測報文段后仍然TCP客戶端響應,TCP服務器就任務客戶端故障,然后關閉連接。

源自:https://www.bilibili.com/video/av64605483?p=65

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容