網(wǎng)絡(luò)基礎(chǔ) - TCP(戀愛和分手解說版)

此心光明罢荡,亦復(fù)何言

TCP建立連接時三次握手,斷開時為何4次握手的自我理解:(面試常問)

1
2
3

現(xiàn)在來說明為何分手要4次
因為連接時,調(diào)用socket的connect函數(shù)發(fā)送SYN包区赵,而服務(wù)器端只是accept一下,就一次發(fā)送了SYN和ACK標(biāo)志位漱受,而到了斷開連接時大家都要調(diào)用各自的close函數(shù)結(jié)束這段socket(騷)戀情骡送,所以兩次close分別觸發(fā)了兩次FIN包昂羡,導(dǎo)致沒有和ACK合并為一個包,所以握手3次摔踱,分手要4次虐先。

下面來正經(jīng)的蛹批,TCP/IP協(xié)議三次握手與四次握手流程解析


4
5

三次握手

所謂三次握手(Three-Way Handshake)即建立TCP連接腐芍,就是指建立一個TCP連接時甸赃,需要客戶端和服務(wù)端總共發(fā)送3個包以確認連接的建立冗酿。在socket編程中裁替,這一過程由客戶端執(zhí)行connect來觸發(fā)弱判,整個流程如下圖所示:


6
7

四次揮手

三次握手耳熟能詳昌腰,四次揮手估計就...遭商,所謂四次揮手(Four-Way Wavehand)即終止TCP連接劫流,就是指斷開一個TCP連接時祠汇,需要客戶端和服務(wù)端總共發(fā)送4個包以確認連接的斷開。在socket編程中诗力,這一過程由客戶端或服務(wù)端任一方執(zhí)行close來觸發(fā)我抠,整個流程如下圖所示:


8

由于TCP連接時全雙工的圈澈,因此康栈,每個方向都必須要單獨進行關(guān)閉喷橙,這一原則是當(dāng)一方完成數(shù)據(jù)發(fā)送任務(wù)后贰逾,發(fā)送一個FIN來終止這一方向的連接疙剑,收到一個FIN只是意味著這一方向上沒有數(shù)據(jù)流動了言缤,即不會再收到數(shù)據(jù)了,但是在這個TCP連接上仍然能夠發(fā)送數(shù)據(jù)轿曙,直到這一方向也發(fā)送了FIN导帝。首先進行關(guān)閉的一方將執(zhí)行主動關(guān)閉您单,而另一方則執(zhí)行被動關(guān)閉睹限,上圖描述的即是如此。

9

上面是一方主動關(guān)閉染服,另一方被動關(guān)閉的情況柳刮,實際中還會出現(xiàn)同時發(fā)起主動關(guān)閉的情況秉颗,具體流程如下圖:


10

流程和狀態(tài)在上圖中已經(jīng)很明了了,在此不再贅述菇怀,可以參考前面的四次揮手解析步驟

思考:
為什么建立連接是三次握手爱沟,而關(guān)閉連接卻是四次揮手呢呼伸?
答:
這是因為服務(wù)端在LISTEN狀態(tài)下括享,收到建立連接請求的SYN報文后奶浦,把ACK和SYN放在一個報文里發(fā)送給客戶端。

而關(guān)閉連接時隙咸,當(dāng)收到對方的FIN報文時沐悦,僅僅表示對方不再發(fā)送數(shù)據(jù)了但是還能接收數(shù)據(jù),己方也未必全部數(shù)據(jù)都發(fā)送給對方了五督,所以己方可以立即close藏否,也可以發(fā)送一些數(shù)據(jù)給對方后,再發(fā)送FIN報文給對方來表示同意現(xiàn)在關(guān)閉連接充包,因此,己方ACK和FIN一般都會分開發(fā)送淆储。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冠场,一起剝皮案震驚了整個濱河市碴裙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖办铡,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焙蹭,死亡現(xiàn)場離奇詭異孔厉,居然都是意外死亡拯钻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門撰豺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粪般,“玉大人,你說我怎么就攤上這事凡橱⌒∽鳎” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵稼钩,是天一觀的道長顾稀。 經(jīng)常有香客問我,道長坝撑,這世上最難降的妖魔是什么静秆? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任粮揉,我火速辦了婚禮,結(jié)果婚禮上抚笔,老公的妹妹穿的比我還像新娘扶认。我一直安慰自己,他們只是感情好塔沃,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布蝠引。 她就那樣靜靜地躺著,像睡著了一般蛀柴。 火紅的嫁衣襯著肌膚如雪螃概。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天鸽疾,我揣著相機與錄音吊洼,去河邊找鬼。 笑死制肮,一個胖子當(dāng)著我的面吹牛冒窍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播豺鼻,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼综液,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了儒飒?” 一聲冷哼從身側(cè)響起谬莹,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎桩了,沒想到半個月后附帽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡井誉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年蕉扮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颗圣。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡喳钟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出在岂,到底是詐尸還是另有隱情荚藻,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布洁段,位于F島的核電站,受9級特大地震影響共郭,放射性物質(zhì)發(fā)生泄漏祠丝。R本人自食惡果不足惜疾呻,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望写半。 院中可真熱鬧岸蜗,春花似錦、人聲如沸叠蝇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悔捶。三九已至铃慷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜕该,已是汗流浹背犁柜。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留堂淡,地道東北人馋缅。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像绢淀,于是被迫代替她去往敵國和親萤悴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

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

  • 最近在惡補計算機網(wǎng)絡(luò)方面的知識皆的,之前對于TCP的三次握手和四次分手也是模模糊糊覆履,對于其中的細節(jié)更是渾然不知,最近看...
    微醺歲月閱讀 9,531評論 4 128
  • 1祭务、TCP狀態(tài)linux查看tcp的狀態(tài)命令:1)内狗、netstat -nat 查看TCP各個狀態(tài)的數(shù)量2)、lso...
    北辰青閱讀 9,423評論 0 11
  • 個人認為义锥,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記柳沙,這雖然只是...
    貳零壹柒_fc10閱讀 5,054評論 0 8
  • 1.這篇文章不是本人原創(chuàng)的,只是個人為了對這部分知識做一個整理和系統(tǒng)的輸出而編輯成的拌倍,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,065評論 6 174
  • 18.1 引言 TCP是一個面向連接的協(xié)議赂鲤。無論哪一方向另一方發(fā)送數(shù)據(jù)之前,都必須先在雙方之間建立一條連接柱恤。本章將...
    張芳濤閱讀 3,381評論 0 13