TCP的三次握手铝宵、四次揮手

第一次握手:建立連接時打掘,客戶端發(fā)送syn包(syn=j)到服務(wù)器华畏,并進入SYN_SENT狀態(tài),等待服務(wù)器確認(rèn)尊蚁;SYN:同步序列編號(Synchronize Sequence Numbers)亡笑。

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1)横朋,同時自己也發(fā)送一個SYN包(syn=k)仑乌,即SYN+ACK包,此時服務(wù)器進入SYN_RECV狀態(tài)琴锭;

第三次握手:客戶端收到服務(wù)器的SYN+ACK包晰甚,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢决帖,客戶端和服務(wù)器進入ESTABLISHED(TCP連接成功)狀態(tài)厕九,完成三次握手。

完成三次握手地回,客戶端與服務(wù)器開始傳送數(shù)據(jù)扁远,在上述過程中,還有一些重要的概念:

未連接隊列

三次握手協(xié)議中刻像,服務(wù)器維護一個未連接隊列畅买,該隊列為每個客戶端的SYN包(syn=j)開設(shè)一個條目,該條目表明服務(wù)器已收到SYN包细睡,并向客戶發(fā)出確認(rèn)谷羞,正在等待客戶的確認(rèn)包。這些條目所標(biāo)識的連接在服務(wù)器處于SYN_RECV狀態(tài)纹冤,當(dāng)服務(wù)器收到客戶的確認(rèn)包時洒宝,刪除該條目,服務(wù)器進入ESTABLISHED狀態(tài)萌京。

關(guān)閉TCP連接:改進的三次握手

對于一個已經(jīng)建立的連接雁歌,TCP使用改進的三次握手來釋放連接(使用一個帶有FIN附加標(biāo)記的報文段)。TCP關(guān)閉連接的步驟如下:

第一步知残,當(dāng)主機A的應(yīng)用程序通知TCP數(shù)據(jù)已經(jīng)發(fā)送完畢時靠瞎,TCP向主機B發(fā)送一個帶有FIN附加標(biāo)記的報文段(FIN表示英文finish)。

第二步求妹,主機B收到這個FIN報文段之后乏盐,并不立即用FIN報文段回復(fù)主機A,而是先向主機A發(fā)送一個確認(rèn)序號ACK制恍,同時通知自己相應(yīng)的應(yīng)用程序:對方要求關(guān)閉連接(先發(fā)送ACK的目的是為了防止在這段時間內(nèi)父能,對方重傳FIN報文段)。

第三步净神,主機B的應(yīng)用程序告訴TCP:我要徹底的關(guān)閉連接何吝,TCP向主機A送一個FIN報文段溉委。

第四步,主機A收到這個FIN報文段后爱榕,向主機B發(fā)送一個ACK表示連接徹底釋放瓣喊。

為什么要采用三次握手,兩次不行嗎黔酥?

痹迦活計時器:

設(shè)想有這樣的情況:客戶端已主動與服務(wù)器建立了TCP連接,但后來客戶端的主機突然出現(xiàn)故障跪者。

通常設(shè)為2小時棵帽。若2小時沒有收到客戶端的數(shù)據(jù),服務(wù)器就發(fā)送一個探測報文段坑夯,以后則每隔75分鐘發(fā)送一次岖寞。若一連發(fā)送10個探測報文段后仍無客戶端的響應(yīng),服務(wù)器就認(rèn)為客戶端出現(xiàn)了故障柜蜈,接著就關(guān)閉這個連接仗谆。

為什么連接的時候是三次握手,關(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ā)送黎棠。故需要四步握手。

為什么TIME_WAIT狀態(tài)需要經(jīng)過2MSL(最大報文段生存時間)才能返回到CLOSE狀態(tài)镰绎?

答:雖然按道理脓斩,四個報文都發(fā)送完畢,我們可以直接進入CLOSE狀態(tài)了畴栖,但是我們必須假象網(wǎng)絡(luò)是不可靠的随静,有可以最后一個ACK丟失。所以TIME_WAIT狀態(tài)就是用來重發(fā)可能丟失的ACK報文吗讶。

文章轉(zhuǎn)自:http://blog.csdn.net/qq_18425655

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末燎猛,一起剝皮案震驚了整個濱河市叼丑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扛门,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纵寝,死亡現(xiàn)場離奇詭異论寨,居然都是意外死亡,警方通過查閱死者的電腦和手機爽茴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門葬凳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人室奏,你說我怎么就攤上這事火焰。” “怎么了胧沫?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵昌简,是天一觀的道長。 經(jīng)常有香客問我绒怨,道長纯赎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任南蹂,我火速辦了婚禮犬金,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘六剥。我一直安慰自己晚顷,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布疗疟。 她就那樣靜靜地躺著该默,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秃嗜。 梳的紋絲不亂的頭發(fā)上权均,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音锅锨,去河邊找鬼叽赊。 笑死,一個胖子當(dāng)著我的面吹牛必搞,可吹牛的內(nèi)容都是我干的必指。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼恕洲,長吁一口氣:“原來是場噩夢啊……” “哼塔橡!你這毒婦竟也來了梅割?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤葛家,失蹤者是張志新(化名)和其女友劉穎户辞,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體癞谒,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡底燎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了弹砚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片双仍。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖桌吃,靈堂內(nèi)的尸體忽然破棺而出朱沃,到底是詐尸還是另有隱情,我是刑警寧澤茅诱,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布逗物,位于F島的核電站,受9級特大地震影響瑟俭,放射性物質(zhì)發(fā)生泄漏敬察。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一尔当、第九天 我趴在偏房一處隱蔽的房頂上張望莲祸。 院中可真熱鬧,春花似錦椭迎、人聲如沸锐帜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缴阎。三九已至,卻和暖如春简软,著一層夾襖步出監(jiān)牢的瞬間蛮拔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工痹升, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留建炫,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓疼蛾,卻偏偏與公主長得像肛跌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

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