TCP的11種狀態(tài)

tcp 的11種狀態(tài).png

CLOSED:初始狀態(tài)钩乍,表示TCP連接是“關(guān)閉著的”或“未打開的”辞州。

LISTEN :表示服務(wù)器端的某個(gè)SOCKET處于監(jiān)聽(tīng)狀態(tài),可以接受客戶端的連接寥粹。

SYN_RCVD :表示服務(wù)器接收到了來(lái)自客戶端請(qǐng)求連接的SYN報(bào)文变过。在正常情況下,這個(gè)狀態(tài)是服務(wù)器端的SOCKET在建立TCP連接時(shí)的三次握手會(huì)話過(guò)程中的一個(gè)中間狀態(tài)涝涤,很短暫媚狰,基本上用netstat很難看到這種狀態(tài),除非故意寫一個(gè)監(jiān)測(cè)程序阔拳,將三次TCP握手過(guò)程中最后一個(gè)ACK報(bào)文不予發(fā)送哈雏。當(dāng)TCP連接處于此狀態(tài)時(shí),再收到客戶端的ACK報(bào)文衫生,它就會(huì)進(jìn)入到ESTABLISHED 狀態(tài)裳瘪。

SYN_SENT :這個(gè)狀態(tài)與SYN_RCVD 狀態(tài)相呼應(yīng),當(dāng)客戶端SOCKET執(zhí)行connect()進(jìn)行連接時(shí)罪针,它首先發(fā)送SYN報(bào)文彭羹,然后隨即進(jìn)入到SYN_SENT 狀態(tài),并等待服務(wù)端的發(fā)送三次握手中的第2個(gè)報(bào)文泪酱。SYN_SENT 狀態(tài)表示客戶端已發(fā)送SYN報(bào)文派殷。

ESTABLISHED :表示TCP連接已經(jīng)成功建立还最。

FIN_WAIT_1 :這個(gè)狀態(tài)得好好解釋一下,其實(shí)FIN_WAIT_1 和FIN_WAIT_2 兩種狀態(tài)的真正含義都是表示等待對(duì)方的FIN報(bào)文毡惜。而這兩種狀態(tài)的區(qū)別是:FIN_WAIT_1狀態(tài)實(shí)際上是當(dāng)SOCKET在ESTABLISHED狀態(tài)時(shí)拓轻,它想主動(dòng)關(guān)閉連接,向?qū)Ψ桨l(fā)送了FIN報(bào)文经伙,此時(shí)該SOCKET進(jìn)入到FIN_WAIT_1 狀態(tài)扶叉。而當(dāng)對(duì)方回應(yīng)ACK報(bào)文后,則進(jìn)入到FIN_WAIT_2 狀態(tài)帕膜。當(dāng)然在實(shí)際的正常情況下枣氧,無(wú)論對(duì)方處于任何種情況下,都應(yīng)該馬上回應(yīng)ACK報(bào)文垮刹,所以FIN_WAIT_1 狀態(tài)一般是比較難見(jiàn)到的达吞,而FIN_WAIT_2 狀態(tài)有時(shí)仍可以用netstat看到。

FIN_WAIT_2 :上面已經(jīng)解釋了這種狀態(tài)的由來(lái)荒典,實(shí)際上FIN_WAIT_2狀態(tài)下的SOCKET表示半連接酪劫,即有一方調(diào)用close()主動(dòng)要求關(guān)閉連接。注意:FIN_WAIT_2 是沒(méi)有超時(shí)的(不像TIME_WAIT 狀態(tài))寺董,這種狀態(tài)下如果對(duì)方不關(guān)閉(不配合完成4次揮手過(guò)程)契耿,那這個(gè) FIN_WAIT_2 狀態(tài)將一直保持到系統(tǒng)重啟,越來(lái)越多的FIN_WAIT_2 狀態(tài)會(huì)導(dǎo)致內(nèi)核crash螃征。

TIME_WAIT :表示收到了對(duì)方的FIN報(bào)文搪桂,并發(fā)送出了ACK報(bào)文。 TIME_WAIT狀態(tài)下的TCP連接會(huì)等待2*MSL(Max Segment Lifetime盯滚,最大分段生存期踢械,指一個(gè)TCP報(bào)文在Internet上的最長(zhǎng)生存時(shí)間。每個(gè)具體的TCP協(xié)議實(shí)現(xiàn)都必須選擇一個(gè)確定的MSL值魄藕,RFC 1122建議是2分鐘内列,但BSD傳統(tǒng)實(shí)現(xiàn)采用了30秒,Linux可以cat /proc/sys/net/ipv4/tcp_fin_timeout看到本機(jī)的這個(gè)值)背率,然后即可回到CLOSED 可用狀態(tài)了话瞧。如果FIN_WAIT_1狀態(tài)下,收到了對(duì)方同時(shí)帶FIN標(biāo)志和ACK標(biāo)志的報(bào)文時(shí)寝姿,可以直接進(jìn)入到TIME_WAIT狀態(tài)交排,而無(wú)須經(jīng)過(guò)FIN_WAIT_2狀態(tài)。(這種情況應(yīng)該就是四次揮手變成三次揮手的那種情況)

CLOSING :這種狀態(tài)在實(shí)際情況中應(yīng)該很少見(jiàn)饵筑,屬于一種比較罕見(jiàn)的例外狀態(tài)埃篓。正常情況下,當(dāng)一方發(fā)送FIN報(bào)文后根资,按理來(lái)說(shuō)是應(yīng)該先收到(或同時(shí)收到)對(duì)方的ACK報(bào)文架专,再收到對(duì)方的FIN報(bào)文同窘。但是CLOSING 狀態(tài)表示一方發(fā)送FIN報(bào)文后,并沒(méi)有收到對(duì)方的ACK報(bào)文部脚,反而卻也收到了對(duì)方的FIN報(bào)文想邦。什么情況下會(huì)出現(xiàn)此種情況呢?那就是當(dāng)雙方幾乎在同時(shí)close()一個(gè)SOCKET的話委刘,就出現(xiàn)了雙方同時(shí)發(fā)送FIN報(bào)文的情況丧没,這是就會(huì)出現(xiàn)CLOSING 狀態(tài),表示雙方都正在關(guān)閉SOCKET連接钱雷。

CLOSE_WAIT :表示正在等待關(guān)閉。怎么理解呢吹零?當(dāng)對(duì)方close()一個(gè)SOCKET后發(fā)送FIN報(bào)文給自己罩抗,你的系統(tǒng)毫無(wú)疑問(wèn)地將會(huì)回應(yīng)一個(gè)ACK報(bào)文給對(duì)方,此時(shí)TCP連接則進(jìn)入到CLOSE_WAIT狀態(tài)灿椅。接下來(lái)呢套蒂,你需要檢查自己是否還有數(shù)據(jù)要發(fā)送給對(duì)方,如果沒(méi)有的話茫蛹,那你也就可以close()這個(gè)SOCKET并發(fā)送FIN報(bào)文給對(duì)方操刀,即關(guān)閉自己到對(duì)方這個(gè)方向的連接。有數(shù)據(jù)的話則看程序的策略婴洼,繼續(xù)發(fā)送或丟棄骨坑。簡(jiǎn)單地說(shuō),當(dāng)你處于CLOSE_WAIT 狀態(tài)下柬采,需要完成的事情是等待你去關(guān)閉連接欢唾。

LAST_ACK :當(dāng)被動(dòng)關(guān)閉的一方在發(fā)送FIN報(bào)文后,等待對(duì)方的ACK報(bào)文的時(shí)候粉捻,就處于LAST_ACK 狀態(tài)礁遣。當(dāng)收到對(duì)方的ACK報(bào)文后,也就可以進(jìn)入到CLOSED 可用狀態(tài)了肩刃。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末祟霍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子盈包,更是在濱河造成了極大的恐慌沸呐,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呢燥,死亡現(xiàn)場(chǎng)離奇詭異垂谢,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)疮茄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門滥朱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)根暑,“玉大人,你說(shuō)我怎么就攤上這事徙邻∨畔樱” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵缰犁,是天一觀的道長(zhǎng)淳地。 經(jīng)常有香客問(wèn)我,道長(zhǎng)帅容,這世上最難降的妖魔是什么颇象? 我笑而不...
    開封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮并徘,結(jié)果婚禮上遣钳,老公的妹妹穿的比我還像新娘。我一直安慰自己麦乞,他們只是感情好蕴茴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著姐直,像睡著了一般倦淀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上声畏,一...
    開封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天撞叽,我揣著相機(jī)與錄音,去河邊找鬼插龄。 笑死能扒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辫狼。 我是一名探鬼主播初斑,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼膨处!你這毒婦竟也來(lái)了见秤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤真椿,失蹤者是張志新(化名)和其女友劉穎鹃答,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體突硝,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡测摔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锋八。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡浙于,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挟纱,到底是詐尸還是另有隱情羞酗,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布紊服,位于F島的核電站檀轨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏欺嗤。R本人自食惡果不足惜参萄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望煎饼。 院中可真熱鬧讹挎,春花似錦、人聲如沸腺占。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)衰伯。三九已至,卻和暖如春积蔚,著一層夾襖步出監(jiān)牢的瞬間意鲸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工尽爆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怎顾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓漱贱,卻偏偏與公主長(zhǎng)得像槐雾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子幅狮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

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