TCP狀態(tài)轉換圖狱从、TCP連接3次握手4次揮手

一 預備知識-兩將軍問題

? ? 兩將軍問題:紅藍兩軍作戰(zhàn),藍軍戰(zhàn)斗力強大榕堰,紅1軍或紅2軍與其單獨作戰(zhàn)都打不過藍軍竖慧,所以需要紅一軍與紅二軍聯(lián)合對藍軍發(fā)起進攻,紅軍1首先通知紅軍2明早10點發(fā)起總攻逆屡,如圖1-1圾旨,紅軍2接到消息需要回復“好的紅軍1,我已經收到你得消息魏蔗,確認明早10點發(fā)動總攻”砍的。因為消息傳遞路線必須經過藍軍營地,所以雙方傳遞消息的信使很有可能被藍軍俘獲莺治。為了確保消息的可靠性廓鞠,紅1、紅2雙方在發(fā)出一個消息之后都想得到對方的消息回執(zhí)谣旁。但是這會導致消息無線循環(huán)下去床佳,如圖1-2。那么如何解決這個可靠性的問題呢榄审,其實沒有辦法解決砌们,只要保證雙方各自都有一次成功的發(fā)送、回執(zhí)就可以了瘟判。



圖1-1 紅軍發(fā)送消息

圖1-2 無限回執(zhí)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

二 TCP連接的三次握手

? ? ?兩將軍問題也存在網絡世界里怨绣,客戶端、服務器建立連接不可能無限的確認下去拷获,只要保證客戶端和服務器分別對自己的收篮撑、發(fā)能力做一次確認即可,如下圖匆瓜。 客戶端和服務器分別對自己的收赢笨、發(fā)能力做一次確認至少需要3次握手未蝌。

圖2-1 TCP連接

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

?3次握手的具體過程、狀態(tài)如下:

(1)首先客戶端和服務器都處于CLOSED狀態(tài)茧妒。

(2)服務器處于LISTEN狀態(tài)萧吠,具體為服務器調用Socket、bind桐筏、listen函數(shù)纸型,進入阻塞狀態(tài)。

(3)客戶端發(fā)送SYN(同步序列編號)梅忌,發(fā)送完畢客戶端進入SYN_SENT狀態(tài)狰腌。

(4)服務端收到SYN,發(fā)送SYN+ASK牧氮,發(fā)送完畢進入SYN_RCVD狀態(tài)琼腔。

(5)客戶端收到服務端發(fā)來的SYN+ASK,發(fā)送服務端等待的ASK踱葛,發(fā)送完畢客戶端進入ESTABLISHED狀態(tài)丹莲,準備數(shù)據(jù)傳輸,到此客戶端已經滿足了對自己收發(fā)能力的一次驗證。

(6)服務端收到客戶端發(fā)來的ASK尸诽,與客戶端一樣甥材,到此服務端也已經滿足了對自己收發(fā)能力的一次驗證,所以也進入ESTABLISHED狀態(tài)性含,準備數(shù)據(jù)傳輸替废。

(7)準備開始傳輸數(shù)據(jù)

三 TCP斷開四次揮手



圖3-1 TCP斷開

TCP斷開連接有兩種情況或者說是場景慌申,1 客戶端先斷開連接丢早,當然也可能是服務器先斷開連接皆的,總之是一前一后。 2 雙方同時發(fā)起斷開連接操作究恤。下面分別介紹兩種場景:

? 場景一

(1)客戶端先發(fā)起斷開連接操作俭令,客戶端向服務端發(fā)送FIN,發(fā)送完畢客戶端進入FIN_WAIT_1狀態(tài)部宿。

(2)服務端收到客戶端發(fā)來的FIN抄腔,服務端發(fā)送ACK,發(fā)送完畢進入CLOSED_WAIT狀態(tài)理张。

(3)客戶端收到服務端的ACK回復赫蛇,客戶端進入FIN_WAIT_2狀態(tài),如果后面服務端沒有回應客戶端雾叭,在TCP協(xié)議層面來講悟耘,客戶端將永遠停留在這個狀態(tài)了,不過還好织狐,操作系統(tǒng)著這塊做了處理暂幼,有一個超時時間筏勒。

(4)此時TCP連接進入半關閉狀態(tài),即客戶端主旺嬉,服務端從的這條線路已經關閉管行,不過服務端主,客戶端從的這條線路還處于打開狀態(tài)邪媳。

(5)服務端向客戶端發(fā)送FIN捐顷,發(fā)送完畢,服務端進入LAST_ASK狀態(tài)雨效。

(6)客戶端收到服務端的FIN后回復服務端ACK套菜,回復完畢進入TIME_WAIT狀態(tài),為什么要進入這個狀態(tài)设易?因為第6步是客戶端的最后一條回復,服務端很有可能收不到蛹头,收不到服務端就會重發(fā)顿肺,所以客戶端還要等待一會。

(7)服務端收到客戶端的ACK回復之后渣蜗,不再做響應屠尊,回到初始的CLOSED狀態(tài),在連接池中等待下一次的復用耕拷。

(8)客戶端保持TIME_WAIT狀態(tài)讼昆,超時之后同樣進入CLOSED狀態(tài)。

?場景二

(1)客戶端骚烧、服務器雙方同時發(fā)送FIN浸赫,雙方同時進入FIN_WAIT_1狀態(tài)

(2)雙方都接到了對方的ACK,此時雙方都會進入CLOSING狀態(tài)赃绊。

(3)雙方同時進入TIME_WAIT狀態(tài)既峡,為什么要進入這個狀態(tài)而不是直接進入CLOSED狀態(tài)呢?假設客戶端和服務端本次是第X次建立連接碧查、關閉連接运敢。如果立即關閉,隨后建立第X+1次連接忠售,建立連接成功之后传惠,第X次的丟包的數(shù)據(jù)有可能繞了一大圈又回來了,那就會出現(xiàn)數(shù)據(jù)錯誤稻扬,為了避免這種情況所以要進入TIME_WAIT狀態(tài)卦方,以保證舊連接的數(shù)據(jù)不會再回來。

(4)TIME_WAIT超時之后泰佳,雙雙進入CLOSED狀態(tài)愿汰。


四 TCP狀態(tài)圖

圖4-1 TCP狀態(tài)圖

有了上面對TCP連接3次握手4次揮手的介紹困后,再來理解TCP的狀態(tài)圖就不困難了,無非就是對TCP連接3次握手4次揮手過程的打包概述而已衬廷。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末摇予,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吗跋,更是在濱河造成了極大的恐慌侧戴,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跌宛,死亡現(xiàn)場離奇詭異酗宋,居然都是意外死亡,警方通過查閱死者的電腦和手機疆拘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門蜕猫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人哎迄,你說我怎么就攤上這事回右。” “怎么了漱挚?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵翔烁,是天一觀的道長。 經常有香客問我旨涝,道長蹬屹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任白华,我火速辦了婚禮慨默,結果婚禮上,老公的妹妹穿的比我還像新娘弧腥。我一直安慰自己业筏,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布鸟赫。 她就那樣靜靜地躺著蒜胖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抛蚤。 梳的紋絲不亂的頭發(fā)上台谢,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音岁经,去河邊找鬼朋沮。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的樊拓。 我是一名探鬼主播纠亚,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼筋夏!你這毒婦竟也來了蒂胞?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤条篷,失蹤者是張志新(化名)和其女友劉穎骗随,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赴叹,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡鸿染,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了乞巧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涨椒。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绽媒,靈堂內的尸體忽然破棺而出蚕冬,到底是詐尸還是另有隱情,我是刑警寧澤些椒,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站掸刊,受9級特大地震影響免糕,放射性物質發(fā)生泄漏。R本人自食惡果不足惜忧侧,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一石窑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚓炬,春花似錦松逊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至驯击,卻和暖如春烁兰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背徊都。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工沪斟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暇矫。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓主之,卻偏偏與公主長得像择吊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子槽奕,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355