TIME_WAIT狀態(tài)存在的意義

什么時候會TIME_WAIT

TCP在關(guān)閉的時候有個四次揮手的過程敬鬓,主動關(guān)閉方在四次揮手的最后一個ACK發(fā)送之后會變成TIME_WAIT狀態(tài)盅视。

主動關(guān)閉方

跟握手不同,揮手可以由客戶端發(fā)起署拟,也可以是服務端發(fā)起铁瞒。發(fā)起關(guān)閉的一端我們稱之為主動關(guān)閉方,另一端稱之為被動關(guān)閉方新娜。

四次揮手

  • 主動關(guān)閉方會發(fā)送一個FIN給被動關(guān)閉方赵辕,表示數(shù)據(jù)已經(jīng)發(fā)送完畢。
  • 被動關(guān)閉方接收到FIN概龄,響應一個ACK还惠。它的接收作為一個文件結(jié)束符(end-of-file)傳遞給接收端應用進程(放在所有已排隊等候該應用進程接收的任何其他數(shù)據(jù)之后)。FIN意味著接收端在相應連接上再無額外的數(shù)據(jù)可以接收了私杜。
  • 一段時間后蚕键,被動關(guān)閉方的應用進程收到了文件結(jié)束符救欧,發(fā)送完所有需要發(fā)送的內(nèi)容,也會發(fā)送一個FIN給主動關(guān)閉方锣光。
  • 接收到這個最終的FIN的主動關(guān)閉方也需要響應一個ACK笆怠。

TIME_WAIT狀態(tài)維持多久

主動關(guān)閉方響應完最后一次ACK之后,會在TIME_WAIT這個狀態(tài)維持2MSL嫉晶。

MSL

MSL全稱是maximum segment lifetime骑疆,最長分節(jié)生命期。MSL是任何IP數(shù)據(jù)報能夠在因特網(wǎng)存活的最長時間替废。我們知道箍铭,這個時間是有限的,因為每個數(shù)據(jù)報都含有一個限跳(hop limit)的8位字段椎镣,它的最大值是255(簡單的講就是不同經(jīng)過超過255個路由器)诈火。盡管這個跳數(shù)限制而不是真正的時間限制,我們?nèi)匀患僭O最大限跳的分組在網(wǎng)絡中存在的時間不可能超過MSL秒状答。

MSL的具體值通常為30秒或者是2分鐘冷守。

為什么需要TIME_WAIT

可靠地實現(xiàn)了TCP全雙工連接的終止

我們知道,TCP是比較可靠的惊科。當TCP向另一端發(fā)送數(shù)據(jù)時悲敷,他要求對端返回一個確認(如同我們關(guān)閉時候的FIN和ACK)较沪。如果沒有收到確認,則會重發(fā)。

回憶一下我們最終的那個FIN與ACK雾叭,被動關(guān)閉方發(fā)送FIN道批,并等待主動關(guān)閉方返回的ACK磅废。我們假設最終的ACK丟失题翰,被動關(guān)閉方將需要重新發(fā)送它的最終那個FIN,主動關(guān)閉方必須維護狀態(tài)信息(TIME_WAIT)窖张,以允許它重發(fā)最終的那個ACK幕随。

如果沒有了這個狀態(tài),當他第二次收到FIN時宿接,會響應一個RST(也是一種類型的TCP分節(jié))赘淮,會被服務器解釋成一個錯誤。

為了TCP打算執(zhí)行必要的工作以徹底終止某個連接兩個方向上的數(shù)據(jù)流(即全雙工關(guān)閉)睦霎,那么他必須要正確處理連接終止四個分節(jié)中任何一個分節(jié)丟失的情況梢卸。

允許老的重復分節(jié)在網(wǎng)絡中的消逝(為什么需要2MSL)

首先,存在這樣的情況碎赢,某個路由器崩潰或者兩個路由器之間的某個鏈接斷開時低剔,路由協(xié)議需要花費數(shù)秒到數(shù)分鐘的時間才能穩(wěn)定找出另一條通路。在這段時間內(nèi),可能發(fā)生路由循環(huán)(路由器A把分組發(fā)送給B襟齿,B又發(fā)送回給A)姻锁,這種情況我們稱之為迷途。假設迷途的分組是一個TCP分節(jié)猜欺,在迷途期間位隶,發(fā)送端TCP超時并重傳該分組,重傳分組通過某路徑到達目的地开皿,而后不久(最多MSL秒)路由循環(huán)修復涧黄,早先迷失在這個循環(huán)中的分組最終也被送到目的地。這種分組被稱之為重復分組或者漫游的重復分組赋荆,TCP必須要正確處理這些重復的分組笋妥。

我們假設ip1:port1和ip2:port2 之間有一個TCP連接。我們關(guān)閉了這個鏈接窄潭,過一段時間后在相同IP和端口之間建立了另一個連接春宣。TCP必須防止來自之前那個連接的老的重復分組在新連接上出現(xiàn)。為了做到這一點嫉你,TCP將不復用處于TIME_WAIT狀態(tài)的連接月帝。2MSL的時間足以讓某個方向上的分組存活MSL秒后被丟棄,另一個方向上的應答也最多存活MSL秒后被丟棄幽污。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嚷辅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子距误,更是在濱河造成了極大的恐慌簸搞,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件深寥,死亡現(xiàn)場離奇詭異攘乒,居然都是意外死亡贤牛,警方通過查閱死者的電腦和手機惋鹅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來殉簸,“玉大人闰集,你說我怎么就攤上這事“惚埃” “怎么了武鲁?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蝠检。 經(jīng)常有香客問我沐鼠,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任饲梭,我火速辦了婚禮乘盖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘憔涉。我一直安慰自己订框,他們只是感情好,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布兜叨。 她就那樣靜靜地躺著穿扳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪国旷。 梳的紋絲不亂的頭發(fā)上矛物,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音跪但,去河邊找鬼泽谨。 笑死,一個胖子當著我的面吹牛特漩,可吹牛的內(nèi)容都是我干的吧雹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼涂身,長吁一口氣:“原來是場噩夢啊……” “哼雄卷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蛤售,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤丁鹉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后悴能,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體揣钦,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年漠酿,在試婚紗的時候發(fā)現(xiàn)自己被綠了冯凹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡炒嘲,死狀恐怖宇姚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情夫凸,我是刑警寧澤浑劳,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站夭拌,受9級特大地震影響魔熏,放射性物質(zhì)發(fā)生泄漏衷咽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一蒜绽、第九天 我趴在偏房一處隱蔽的房頂上張望兵罢。 院中可真熱鬧,春花似錦滓窍、人聲如沸卖词。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽此蜈。三九已至,卻和暖如春噪生,著一層夾襖步出監(jiān)牢的瞬間裆赵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工跺嗽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留战授,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓桨嫁,卻偏偏與公主長得像植兰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子璃吧,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容