TCP的四次揮手

前篇文推了TCP三次握手苏揣,現(xiàn)在給大家介紹一些什么叫做TCP的四次揮手黄鳍。

1)四次揮手的詳述

  假設(shè)Client端發(fā)起中斷連接請(qǐng)求,也就是發(fā)送FIN報(bào)文平匈。Server端接到FIN報(bào)文后框沟,意思是說(shuō)"我Client端沒(méi)有數(shù)據(jù)要發(fā)給你了",但是如果你還有數(shù)據(jù)沒(méi)有發(fā)送完成增炭,則不必急著關(guān)閉Socket忍燥,可以繼續(xù)發(fā)送數(shù)據(jù)。所以你先發(fā)送ACK隙姿,"告訴Client端梅垄,你的請(qǐng)求我收到了,但是我還沒(méi)準(zhǔn)備好输玷,請(qǐng)繼續(xù)你等我的消息"队丝。這個(gè)時(shí)候Client端就進(jìn)入FIN_WAIT狀態(tài),繼續(xù)等待Server端的FIN報(bào)文欲鹏。當(dāng)Server端確定數(shù)據(jù)已發(fā)送完成机久,則向Client端發(fā)送FIN報(bào)文,"告訴Client端赔嚎,好了膘盖,我這邊數(shù)據(jù)發(fā)完了,準(zhǔn)備好關(guān)閉連接了"尤误。Client端收到FIN報(bào)文后侠畔,"就知道可以關(guān)閉連接了,但是他還是不相信網(wǎng)絡(luò)袄膏,怕Server端不知道要關(guān)閉践图,所以發(fā)送ACK后進(jìn)入TIME_WAIT狀態(tài),如果Server端沒(méi)有收到ACK則可以重傳沉馆÷氲常“,Server端收到ACK后斥黑,"就知道可以斷開連接了"揖盘。Client端等待了2MSL后依然沒(méi)有收到回復(fù),則證明Server端已正常關(guān)閉锌奴,那好兽狭,我Client端也可以關(guān)閉連接了。Ok,TCP連接就這樣關(guān)閉了箕慧!


數(shù)據(jù)傳輸結(jié)束后服球,通信的雙方都可釋放連接,A和B都處于ESTABLISHED狀態(tài)颠焦。(A斩熊、B連接建立狀態(tài)ESTABLISHED——A終止等待1狀態(tài)FIN-WAIT-1——B關(guān)閉等待狀態(tài)CLOSE-WAIT——A終止等待2狀態(tài)FIN-WAIT-2——B最后確認(rèn)狀態(tài)LAST-ACK——A時(shí)間等待狀態(tài)TIME-WAIT——B、A關(guān)閉狀態(tài)CLOSED

·?1)A的應(yīng)用進(jìn)程先向其TCP發(fā)出連接釋放報(bào)文段(FIN=1伐庭,序號(hào)seq=u)粉渠,并停止再發(fā)送數(shù)據(jù),主動(dòng)關(guān)閉TCP連接圾另,進(jìn)入FIN-WAIT-1(終止等待1)狀態(tài)霸株,等待B的確認(rèn)。

·?2)B收到連接釋放報(bào)文段后即發(fā)出確認(rèn)報(bào)文段集乔,(ACK=1去件,確認(rèn)號(hào)ack=u+1,序號(hào)seq=v)饺著,B進(jìn)入CLOSE-WAIT(關(guān)閉等待)狀態(tài)箫攀,此時(shí)的TCP處于半關(guān)閉狀態(tài)肠牲,A到B的連接釋放幼衰。

·?3)A收到B的確認(rèn)后,進(jìn)入FIN-WAIT-2(終止等待2)狀態(tài)缀雳,等待B發(fā)出的連接釋放報(bào)文段渡嚣。

·?4)B沒(méi)有要向A發(fā)出的數(shù)據(jù),B發(fā)出連接釋放報(bào)文段(FIN=1肥印,ACK=1识椰,序號(hào)seq=w,確認(rèn)號(hào)ack=u+1)深碱,B進(jìn)入LAST-ACK(最后確認(rèn))狀態(tài)腹鹉,等待A的確認(rèn)。

·5)A收到B的連接釋放報(bào)文段后敷硅,對(duì)此發(fā)出確認(rèn)報(bào)文段(ACK=1功咒,seq=u+1,ack=w+1)绞蹦,A進(jìn)入TIME-WAIT(時(shí)間等待)狀態(tài)力奋。此時(shí)TCP未釋放掉,需要經(jīng)過(guò)時(shí)間等待計(jì)時(shí)器設(shè)置的時(shí)間2MSL后幽七,A才進(jìn)入CLOSED狀態(tài)景殷。

2)總結(jié)四次揮手過(guò)程:

起初A和B處于ESTABLISHED狀態(tài)——A發(fā)出連接釋放報(bào)文段并處于FIN-WAIT-1狀態(tài)——B發(fā)出確認(rèn)報(bào)文段且進(jìn)入CLOSE-WAIT狀態(tài)——A收到確認(rèn)后,進(jìn)入FIN-WAIT-2狀態(tài),等待B的連接釋放報(bào)文段——B沒(méi)有要向A發(fā)出的數(shù)據(jù)猿挚,B發(fā)出連接釋放報(bào)文段且進(jìn)入LAST-ACK狀態(tài)——A發(fā)出確認(rèn)報(bào)文段且進(jìn)入TIME-WAIT狀態(tài)——B收到確認(rèn)報(bào)文段后進(jìn)入CLOSED狀態(tài)——A經(jīng)過(guò)等待計(jì)時(shí)器時(shí)間2MSL后咐旧,進(jìn)入CLOSED狀態(tài)

(3)為什么A在TIME-WAIT狀態(tài)必須等待2MSL的時(shí)間绩蜻?MSL最長(zhǎng)報(bào)文段壽命Maximum Segment Lifetime休偶,MSL=2

答:

????兩個(gè)理由:

????????1)保證A發(fā)送的最后一個(gè)ACK報(bào)文段能夠到達(dá)B。

????????2)防止“已失效的連接請(qǐng)求報(bào)文段”出現(xiàn)在本連接中辜羊。

·?1)這個(gè)ACK報(bào)文段有可能丟失踏兜,使得處于LAST-ACK狀態(tài)的B收不到對(duì)已發(fā)送的FIN+ACK報(bào)文段的確認(rèn),B超時(shí)重傳FIN+ACK報(bào)文段八秃,而A能在2MSL時(shí)間內(nèi)收到這個(gè)重傳的FIN+ACK報(bào)文段碱妆,接著A重傳一次確認(rèn),重新啟動(dòng)2MSL計(jì)時(shí)器昔驱,最后A和B都進(jìn)入到CLOSED狀態(tài)疹尾,若A在TIME-WAIT狀態(tài)不等待一段時(shí)間,而是發(fā)送完ACK報(bào)文段后立即釋放連接骤肛,則無(wú)法收到B重傳的FIN+ACK報(bào)文段纳本,所以不會(huì)再發(fā)送一次確認(rèn)報(bào)文段,則B無(wú)法正常進(jìn)入到CLOSED狀態(tài)腋颠。

·?2)A在發(fā)送完最后一個(gè)ACK報(bào)文段后繁成,再經(jīng)過(guò)2MSL,就可以使本連接持續(xù)的時(shí)間內(nèi)所產(chǎn)生的所有報(bào)文段都從網(wǎng)絡(luò)中消失淑玫,使下一個(gè)新的連接中不會(huì)出現(xiàn)這種舊的連接請(qǐng)求報(bào)文段巾腕。

(4)為什么連接的時(shí)候是三次握手,關(guān)閉的時(shí)候卻是四次握手絮蒿?

答:因?yàn)楫?dāng)Server端收到Client端的SYN連接請(qǐng)求報(bào)文后尊搬,可以直接發(fā)送SYN+ACK報(bào)文。其中ACK報(bào)文是用來(lái)應(yīng)答的土涝,SYN報(bào)文是用來(lái)同步的佛寿。但是關(guān)閉連接時(shí),當(dāng)Server端收到FIN報(bào)文時(shí)但壮,很可能并不會(huì)立即關(guān)閉SOCKET冀泻,所以只能先回復(fù)一個(gè)ACK報(bào)文,告訴Client端茵肃,"你發(fā)的FIN報(bào)文我收到了"腔长。只有等到我Server端所有的報(bào)文都發(fā)送完了,我才能發(fā)送FIN報(bào)文验残,因此不能一起發(fā)送捞附。故需要四步握手。

請(qǐng)關(guān)注微信公眾號(hào):請(qǐng)快點(diǎn)喜歡我

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鸟召,隨后出現(xiàn)的幾起案子胆绊,更是在濱河造成了極大的恐慌,老刑警劉巖欧募,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件压状,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡跟继,警方通過(guò)查閱死者的電腦和手機(jī)种冬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)舔糖,“玉大人娱两,你說(shuō)我怎么就攤上這事〗鹇穑” “怎么了十兢?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)摇庙。 經(jīng)常有香客問(wèn)我旱物,道長(zhǎng),這世上最難降的妖魔是什么卫袒? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任宵呛,我火速辦了婚禮,結(jié)果婚禮上玛臂,老公的妹妹穿的比我還像新娘烤蜕。我一直安慰自己封孙,他們只是感情好迹冤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著虎忌,像睡著了一般泡徙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上膜蠢,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天堪藐,我揣著相機(jī)與錄音,去河邊找鬼挑围。 笑死礁竞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杉辙。 我是一名探鬼主播模捂,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了狂男?” 一聲冷哼從身側(cè)響起综看,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎岖食,沒(méi)想到半個(gè)月后红碑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泡垃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年析珊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔑穴。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唾琼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出澎剥,到底是詐尸還是另有隱情锡溯,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布哑姚,位于F島的核電站祭饭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏叙量。R本人自食惡果不足惜倡蝙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绞佩。 院中可真熱鬧寺鸥,春花似錦、人聲如沸品山。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肘交。三九已至笆载,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涯呻,已是汗流浹背凉驻。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留复罐,地道東北人涝登。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像效诅,于是被迫代替她去往敵國(guó)和親胀滚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咳短,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348