TCP三次握手

建立TCP需要三次握手才能建立婴程,而斷開連接則需要四次握手庄敛。整個過程如下圖所示:



先來看看如何建立連接的伟叛。

【更新于2017.01.04 】該部分內(nèi)容配圖有誤略就,請大家見諒兄墅,正確的配圖如下踢星,錯誤配圖也不刪了,大家可以比較下察迟,對比理解效果更好斩狱。這么久才來更新,抱歉T俊所踊!

錯誤配圖如下:


首先Client端發(fā)送連接請求報文,Server段接受連接后回復(fù)ACK報文概荷,并為這次連接分配資源秕岛。Client端接收到ACK報文后也向Server段發(fā)生ACK報文,并分配資源误证,這樣TCP連接就建立了继薛。
那如何斷開連接呢?簡單的過程如下:

【注意】中斷連接端可以是Client端愈捅,也可以是Server端遏考。
假設(shè)Client端發(fā)起中斷連接請求,也就是發(fā)送FIN報文蓝谨。Server端接到FIN報文后灌具,意思是說"我Client端沒有數(shù)據(jù)要發(fā)給你了",但是如果你還有數(shù)據(jù)沒有發(fā)送完成譬巫,則不必急著關(guān)閉Socket咖楣,可以繼續(xù)發(fā)送數(shù)據(jù)。所以你先發(fā)送ACK芦昔,"告訴Client端诱贿,你的請求我收到了,但是我還沒準(zhǔn)備好咕缎,請繼續(xù)你等我的消息"珠十。這個時候Client端就進入FIN_WAIT狀態(tài),繼續(xù)等待Server端的FIN報文凭豪。當(dāng)Server端確定數(shù)據(jù)已發(fā)送完成宵睦,則向Client端發(fā)送FIN報文,"告訴Client端墅诡,好了,我這邊數(shù)據(jù)發(fā)完了,準(zhǔn)備好關(guān)閉連接了"末早。Client端收到FIN報文后烟馅,"就知道可以關(guān)閉連接了,但是他還是不相信網(wǎng)絡(luò)然磷,怕Server端不知道要關(guān)閉郑趁,所以發(fā)送ACK后進入TIME_WAIT狀態(tài),如果Server端沒有收到ACK則可以重傳姿搜」讶螅“,Server端收到ACK后舅柜,"就知道可以斷開連接了"梭纹。Client端等待了2MSL后依然沒有收到回復(fù),則證明Server端已正常關(guān)閉致份,那好变抽,我Client端也可以關(guān)閉連接了。Ok氮块,TCP連接就這樣關(guān)閉了绍载!
整個過程Client端所經(jīng)歷的狀態(tài)如下:

而Server端所經(jīng)歷的過程如下:轉(zhuǎn)載請注明:blog.csdn.net/whuslei

【注意】 在TIME_WAIT狀態(tài)中,如果TCP client端最后一次發(fā)送的ACK丟失了滔蝉,它將重新發(fā)送击儡。TIME_WAIT狀態(tài)中所需要的時間是依賴于實現(xiàn)方法的。典型的值為30秒蝠引、1分鐘和2分鐘阳谍。等待之后連接正式關(guān)閉,并且所有的資源(包括端口號)都被釋放立肘。
【問題1】為什么連接的時候是三次握手边坤,關(guān)閉的時候卻是四次握手?答:因為當(dāng)Server端收到Client端的SYN連接請求報文后谅年,可以直接發(fā)送SYN+ACK報文茧痒。其中ACK報文是用來應(yīng)答的,SYN報文是用來同步的融蹂。但是關(guān)閉連接時旺订,當(dāng)Server端收到FIN報文時,很可能并不會立即關(guān)閉SOCKET超燃,所以只能先回復(fù)一個ACK報文区拳,告訴Client端,"你發(fā)的FIN報文我收到了"意乓。只有等到我Server端所有的報文都發(fā)送完了樱调,我才能發(fā)送FIN報文,因此不能一起發(fā)送。故需要四步握手笆凌。
【問題2】為什么TIME_WAIT狀態(tài)需要經(jīng)過2MSL(最大報文段生存時間)才能返回到CLOSE狀態(tài)圣猎?
答:雖然按道理,四個報文都發(fā)送完畢乞而,我們可以直接進入CLOSE狀態(tài)了送悔,但是我們必須假象網(wǎng)絡(luò)是不可靠的,有可以最后一個ACK丟失爪模。所以TIME_WAIT狀態(tài)就是用來重發(fā)可能丟失的ACK報文欠啤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市屋灌,隨后出現(xiàn)的幾起案子洁段,更是在濱河造成了極大的恐慌,老刑警劉巖声滥,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眉撵,死亡現(xiàn)場離奇詭異,居然都是意外死亡落塑,警方通過查閱死者的電腦和手機纽疟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來憾赁,“玉大人污朽,你說我怎么就攤上這事×迹” “怎么了蟆肆?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長晦款。 經(jīng)常有香客問我炎功,道長,這世上最難降的妖魔是什么缓溅? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任蛇损,我火速辦了婚禮,結(jié)果婚禮上坛怪,老公的妹妹穿的比我還像新娘淤齐。我一直安慰自己,他們只是感情好袜匿,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布更啄。 她就那樣靜靜地躺著,像睡著了一般居灯。 火紅的嫁衣襯著肌膚如雪祭务。 梳的紋絲不亂的頭發(fā)上内狗,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音义锥,去河邊找鬼其屏。 笑死,一個胖子當(dāng)著我的面吹牛缨该,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播川背,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼贰拿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了熄云?” 一聲冷哼從身側(cè)響起膨更,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缴允,沒想到半個月后荚守,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡练般,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年矗漾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薄料。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡敞贡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出摄职,到底是詐尸還是另有隱情誊役,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布谷市,位于F島的核電站蛔垢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏迫悠。R本人自食惡果不足惜鹏漆,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望及皂。 院中可真熱鬧甫男,春花似錦、人聲如沸验烧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碍拆。三九已至若治,卻和暖如春慨蓝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背端幼。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工礼烈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人婆跑。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓此熬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滑进。 傳聞我的和親對象是個殘疾皇子犀忱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

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