TCP三次握手和四次揮手

TCP重要字段



TCP報(bào)文格式

1.序號(hào):Seq序號(hào)漾峡,占32位深夯,用來標(biāo)識(shí)從TCP源端口向目的端口發(fā)送的字節(jié)流弱卡,發(fā)起方發(fā)送數(shù)據(jù)時(shí)對(duì)此進(jìn)行標(biāo)記

2.確認(rèn)序號(hào):Ack序號(hào)乃正,占32位,只有ACK標(biāo)志位為1時(shí)婶博,確認(rèn)序號(hào)字段才有效瓮具,Ack=Seq+1

3.標(biāo)志位:共6個(gè),即URG、ACK搭综、PSH垢箕、RST、SYN兑巾、FIN

①URG:緊急指針(urgent pointer)有效

②ACK:確認(rèn)序號(hào)有效

③PSH:接收方應(yīng)該盡快將這個(gè)報(bào)文交給應(yīng)用層

④RST:重置連接

⑤SYN:發(fā)起一個(gè)新連接

⑥FIN:釋放一個(gè)連接

PS:ACK和Ack不是同一個(gè)東西条获,確認(rèn)方Ack=發(fā)起方Seq+1,兩端配對(duì)


三次握手概念


三次握手為的是什么蒋歌?TCP連接帅掘。為什么叫三次握手?需要客戶端和服務(wù)端總共發(fā)送3個(gè)包以建立連接堂油。為什么要三次握手才行修档??jī)纱位蛘咚拇尾恍袉幔咳绻麅纱挝帐值脑?客戶端有可能因?yàn)榫W(wǎng)絡(luò)阻塞等原因會(huì)發(fā)送多個(gè)請(qǐng)求報(bào)文,這時(shí)服務(wù)器就會(huì)建立連接,浪費(fèi)掉許多服務(wù)器的資源府框。沒有必要握第四次握手吱窝,舉個(gè)例子,A和B打電話迫靖,A說:你聽得到我說話嗎院峡?B說:我聽到了,你聽得到我說話嗎系宜?A說:聽到了照激,@#!¥%&*....如果此時(shí)盹牧,B再問“你能聽到嗎”這就顯得多余了


三次握手流程


在socket編程中俩垃,這一過程由客戶端執(zhí)行connect來觸發(fā)

第一次握手:建立連接時(shí),客戶端發(fā)送syn包(syn=j)到服務(wù)器汰寓,并進(jìn)入SYN_SENT狀態(tài)口柳,等待服務(wù)器確認(rèn)

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶端的SYN(ack=j+1)有滑,同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k)跃闹,即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RCVD狀態(tài)

第三次握手:客戶端收到服務(wù)器的SYN+ACK包俺孙,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢掷贾,客戶端和服務(wù)器進(jìn)入ESTABLISHED(TCP連接成功)狀態(tài)睛榄,完成三次握手


四次揮手概念


四次揮手是做什么的?釋放TCP連接想帅。為什么建立連接是三次握手场靴,而關(guān)閉連接卻是四次揮手呢?因?yàn)楫?dāng)Server端收到Client端的SYN連接請(qǐng)求報(bào)文后,可以直接發(fā)送SYN+ACK報(bào)文旨剥。其中ACK報(bào)文是用來應(yīng)答的咧欣,SYN報(bào)文是用來同步的。但是關(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ā)送。故需要四步握手


四次揮手流程


第一次揮手:當(dāng)主機(jī)A的應(yīng)用程序通知TCP數(shù)據(jù)已經(jīng)發(fā)送完畢時(shí)膏秫,TCP向主機(jī)B發(fā)送一個(gè)帶有FIN附加標(biāo)記的報(bào)文段

第二次揮手:主機(jī)B收到這個(gè)FIN報(bào)文段之后右遭,并不立即用FIN報(bào)文段回復(fù)主機(jī)A,而是先向主機(jī)A發(fā)送一個(gè)確認(rèn)序號(hào)ACK缤削,同時(shí)通知自己相應(yīng)的應(yīng)用程序:對(duì)方要求關(guān)閉連接(先發(fā)送ACK的目的是為了防止在這段時(shí)間內(nèi)窘哈,對(duì)方重傳FIN報(bào)文段)

第三次揮手:主機(jī)B的應(yīng)用程序告訴TCP:我要徹底的關(guān)閉連接,TCP向主機(jī)A送一個(gè)FIN報(bào)文段

第四次揮手:主機(jī)A收到這個(gè)FIN報(bào)文段后僻他,向主機(jī)B發(fā)送一個(gè)ACK表示連接徹底釋放


TCP建立和釋放圖解



關(guān)于TIME_WAIT


然按道理宵距,四個(gè)報(bào)文都發(fā)送完畢,我們可以直接進(jìn)入CLOSE狀態(tài)了吨拗,但是我們必須假想網(wǎng)絡(luò)是不可靠的满哪,有可能最后一個(gè)ACK丟失。所以TIME_WAIT狀態(tài)就是用來重發(fā)可能丟失的ACK報(bào)文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末劝篷,一起剝皮案震驚了整個(gè)濱河市哨鸭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌娇妓,老刑警劉巖像鸡,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異哈恰,居然都是意外死亡只估,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門着绷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛔钙,“玉大人,你說我怎么就攤上這事荠医∮跬眩” “怎么了桑涎?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)兼贡。 經(jīng)常有香客問我攻冷,道長(zhǎng),這世上最難降的妖魔是什么遍希? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任等曼,我火速辦了婚禮,結(jié)果婚禮上孵班,老公的妹妹穿的比我還像新娘涉兽。我一直安慰自己,他們只是感情好篙程,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布枷畏。 她就那樣靜靜地躺著,像睡著了一般虱饿。 火紅的嫁衣襯著肌膚如雪拥诡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天氮发,我揣著相機(jī)與錄音渴肉,去河邊找鬼。 笑死爽冕,一個(gè)胖子當(dāng)著我的面吹牛仇祭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播颈畸,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼乌奇,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了眯娱?” 一聲冷哼從身側(cè)響起礁苗,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎徙缴,沒想到半個(gè)月后试伙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡于样,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年疏叨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片穿剖。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蚤蔓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出携御,到底是詐尸還是另有隱情昌粤,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布啄刹,位于F島的核電站涮坐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏誓军。R本人自食惡果不足惜袱讹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昵时。 院中可真熱鬧捷雕,春花似錦、人聲如沸壹甥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)句柠。三九已至浦译,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溯职,已是汗流浹背精盅。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谜酒,地道東北人叹俏。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像僻族,于是被迫代替她去往敵國(guó)和親粘驰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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