TCP協(xié)議中的三次握手(連接)和四次揮手(斷開)

三次握手

TCP連接是通過三次握手來連接的

  • 第一次握手

當(dāng)客戶端向服務(wù)器發(fā)起連接請(qǐng)求報(bào)文段時(shí)瞻坝,客戶端會(huì)發(fā)送同步序列標(biāo)號(hào)SYN到服務(wù)器,在這里我們?cè)O(shè)SYN為m邦蜜,這時(shí)客戶端的狀態(tài)為SYN_SENT宏榕,等待服務(wù)器確認(rèn)。

  • 第二次握手

當(dāng)服務(wù)器收到客戶端發(fā)送的SYN后蒙秒,服務(wù)器要做的是確認(rèn)客戶端發(fā)送過來的SYN,在這里服務(wù)器發(fā)送確認(rèn)包ACK琴许,這里的ACK為m+1税肪,意思是說“我收到了你發(fā)送的SYN了”,同時(shí)榜田,服務(wù)器也會(huì)向客戶端發(fā)送一個(gè)SYN包益兄,這里我們?cè)O(shè)SYN為n。這時(shí)服務(wù)器的狀態(tài)為SYN_RECV箭券。
服務(wù)器端一共發(fā)送了SYNACK兩個(gè)包

  • 第三次握手

客戶端收到服務(wù)器發(fā)送的SYNACK包后净捅,需向服務(wù)器發(fā)送確認(rèn)包ACK“我也收到你發(fā)送的SYN了辩块,我這就給你發(fā)個(gè)確認(rèn)過去蛔六,然后我們即能合體了”,這里的ACK為n+1废亭,發(fā)送完畢后国章,客戶端和服務(wù)器的狀態(tài)為ESTABLISH,即TCP連接成功

在三次握手中豆村,客戶端和服務(wù)器端都發(fā)送兩個(gè)包SYNACK液兽,只不過服務(wù)器端的兩個(gè)包是一次性發(fā)過來的,客戶端的兩個(gè)包是分兩次發(fā)送的

image.png

四次揮手

當(dāng)客戶端和服務(wù)器通過三次握手建立了TCP連接以后掌动,當(dāng)數(shù)據(jù)傳送完畢四啰,肯定是要斷開TCP連接的啊宁玫。那對(duì)于TCP的斷開連接,這里就有了神秘的“四次揮手”

當(dāng)A端(主機(jī)1) 和B端(主機(jī)2)要斷開連接時(shí)柑晒,需要四次握手欧瘪,這里稱為四次揮手。

斷開連接請(qǐng)求可以由客戶端發(fā)出匙赞,也可以由服務(wù)器端發(fā)出佛掖,在這里我們稱A端向B端請(qǐng)求斷開連接。

  • 第一次揮手

A端向B端請(qǐng)求斷開連接時(shí)會(huì)向B端發(fā)送一個(gè)帶有FIN標(biāo)記的報(bào)文段罚屋,這里的FINFINish的意思,此時(shí)苦囱,主機(jī)1進(jìn)入FIN_WAIT_1狀態(tài)嗅绸;這表示主機(jī)1沒有數(shù)據(jù)要發(fā)送給主機(jī)2了脾猛;

  • 第二次揮手

B端收到A發(fā)送的FIN后,B段現(xiàn)在可能現(xiàn)在還有數(shù)據(jù)沒有傳完鱼鸠,所以B端并不會(huì)馬上向A端發(fā)送FIN猛拴,而是先發(fā)送一個(gè)確認(rèn)序號(hào)ACK意思是說“你發(fā)的斷開連接請(qǐng)求我收到了蚀狰,但是我現(xiàn)在還有數(shù)據(jù)沒有發(fā)完愉昆,請(qǐng)稍等一下唄”。 主機(jī)1進(jìn)入FIN_WAIT_2狀態(tài)麻蹋;

  • 第三次揮手

當(dāng)B端的事情忙完了跛溉,那么此時(shí)B端就可以斷開連接了,此時(shí)B端向A端發(fā)送FIN序號(hào)扮授,意思是這次可以斷開連接了芳室。同時(shí)主機(jī)2進(jìn)入LAST_ACK狀態(tài);

  • 第四次揮手

A端收到B端發(fā)送的FIN后刹勃,會(huì)向B端發(fā)送確認(rèn)ACK堪侯,然后主機(jī)1進(jìn)入TIME_WAIT狀態(tài);主機(jī)2收到主機(jī)1的ACK報(bào)文段以后荔仁,就關(guān)閉連接伍宦;此時(shí),主機(jī)1等待兩個(gè)MSL后依然沒有收到回復(fù)乏梁,則證明Server端已正常關(guān)閉次洼,那好,主機(jī)1也可以關(guān)閉連接了遇骑。

MSL是Maximum Segment Lifetime卖毁,最大報(bào)文段生存時(shí)間,2個(gè)MSL是報(bào)文段發(fā)送和接收的最長(zhǎng)時(shí)間质蕉。

image.png

三次握手(連接)和四次揮手(斷開)

image.png

兩次握手可以么势篡?

TCP連接時(shí)是三次握手翩肌,那么兩次握手可行嗎?

在《計(jì)算機(jī)網(wǎng)絡(luò)》中是這樣解釋的:已失效的連接請(qǐng)求報(bào)文段”的產(chǎn)生在這樣一種情況下:client發(fā)出的第一個(gè)連接請(qǐng)求報(bào)文段并沒有丟失禁悠,而是在某個(gè)網(wǎng)絡(luò)結(jié)點(diǎn)長(zhǎng)時(shí)間的滯留了念祭,以致延誤到連接釋放以后的某個(gè)時(shí)間才到達(dá)server。本來這是一個(gè)早已失效的報(bào)文段碍侦。但server收到此失效的連接請(qǐng)求報(bào)文段后粱坤,就誤認(rèn)為是client再次發(fā)出的一個(gè)新的連接請(qǐng)求。于是就向client發(fā)出確認(rèn)報(bào)文段瓷产,同意建立連接站玄。假設(shè)不采用“三次握手”,那么只要server發(fā)出確認(rèn)濒旦,新的連接就建立了株旷。由于現(xiàn)在client并沒有發(fā)出建立連接的請(qǐng)求,因此不會(huì)理睬server的確認(rèn)尔邓,也不會(huì)向server發(fā)送ACK包晾剖。這樣就會(huì)白白浪費(fèi)資源。

而經(jīng)過三次握手梯嗽,客戶端和服務(wù)器都有應(yīng)有答齿尽,這樣可以確保TCP正確連接。

為什么TCP連接是三次灯节,揮手確是四次循头?

在TCP連接中,服務(wù)器端的SYN和ACK向客戶端發(fā)送是一次性發(fā)送的炎疆,而在斷開連接的過程中卡骂,B端向A端發(fā)送的ACK和FIN是是分兩次發(fā)送的。因?yàn)樵贐端接收到A端的FIN后磷雇,B端可能還有數(shù)據(jù)要傳輸偿警,所以先發(fā)送ACK,等B端處理完自己的事情后就可以發(fā)送FIN斷開連接了唯笙。

為什么在第四次揮手后會(huì)有2個(gè)MSL的延時(shí)螟蒸?

前文說到

MSL是Maximum Segment Lifetime,最大報(bào)文段生存時(shí)間崩掘,2個(gè)MSL是報(bào)文段發(fā)送和接收的最長(zhǎng)時(shí)間七嫌。

假定網(wǎng)絡(luò)不可靠,那么第四次發(fā)送的ACK可能丟失苞慢,即B端無法收到這個(gè)ACK诵原,如果B端收不到這個(gè)確認(rèn)ACK,B端會(huì)定時(shí)向A端重復(fù)發(fā)送FIN,直到B端收到A的確認(rèn)ACK绍赛。所以這個(gè)2MSL就是用來處理這個(gè)可能丟失的ACK的蔓纠。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吗蚌,隨后出現(xiàn)的幾起案子腿倚,更是在濱河造成了極大的恐慌,老刑警劉巖蚯妇,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敷燎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡箩言,警方通過查閱死者的電腦和手機(jī)硬贯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陨收,“玉大人饭豹,你說我怎么就攤上這事∥废牛” “怎么了墨状?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵卫漫,是天一觀的道長(zhǎng)菲饼。 經(jīng)常有香客問我,道長(zhǎng)列赎,這世上最難降的妖魔是什么宏悦? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮包吝,結(jié)果婚禮上饼煞,老公的妹妹穿的比我還像新娘。我一直安慰自己诗越,他們只是感情好砖瞧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嚷狞,像睡著了一般块促。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上床未,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天竭翠,我揣著相機(jī)與錄音,去河邊找鬼薇搁。 笑死斋扰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播传货,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼屎鳍,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了问裕?” 一聲冷哼從身側(cè)響起哥艇,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎僻澎,沒想到半個(gè)月后貌踏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窟勃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年祖乳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秉氧。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡眷昆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出汁咏,到底是詐尸還是另有隱情亚斋,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布攘滩,位于F島的核電站帅刊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏漂问。R本人自食惡果不足惜赖瞒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚤假。 院中可真熱鬧栏饮,春花似錦、人聲如沸磷仰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灶平。三九已至伺通,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間民逼,已是汗流浹背泵殴。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拼苍,地道東北人笑诅。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓调缨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吆你。 傳聞我的和親對(duì)象是個(gè)殘疾皇子弦叶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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