原因瞻讽,TIME_WAIT作用

TCP連接的端點

TCP連接的端點是套接字(socket)。
socket=(IP地址:端口號)

TCP的首部

如下圖所示艘刚,TCP的首部最少有20個字節(jié) ,后面還有4n個字節(jié)是可選的截珍。
首部的主要包含:

  • 源端口和目的端口 各占2個字節(jié)
  • 序號 4字節(jié) 共2^32攀甚,到頭后從0開始。表示本次發(fā)送的數(shù)據(jù)的第一個字節(jié)的編號岗喉。TCP傳送的字節(jié)流對每一個字節(jié)編號秋度。
  • 確認號 占4字節(jié) 是期望收到的對方下一個報文段的第一個數(shù)據(jù)字節(jié)的序號
  • 數(shù)據(jù)偏移 占4位 數(shù)據(jù)起始地址和報文起始地址的距離,實際指出首部長度
  • 確認ACK 僅當ACK=1時確認號字段才有效钱床。TCP協(xié)議規(guī)定荚斯,當連接建立后,ACK必須為1
  • 同步SYN 在建立連接時使用 當SYN=1而ACK=0時查牌,表明這是一個連接請求報文段事期。而對方接受時會回復SYN=1,ACK=1纸颜。因此SYN=1表示這是一個連接請求會連接接受報文段(第一和第二次握手)
  • 終止 FIN 當FIN=1時兽泣,表明此報文段的發(fā)送方的數(shù)據(jù)已經(jīng)發(fā)送完畢,并要求釋放運輸連接
  • 窗口 占2字節(jié) 表示允許對方發(fā)送數(shù)據(jù)的最大字節(jié)數(shù)
  • 檢驗和
  • 緊急指針
image

TCP三次握手過程

image

三次握手涉及到TCP首部的胁孙,同步為SYN唠倦,確認位ACK称鳞,序號seq,請求號ack.

假設A是客戶端牵敷,B是服務端胡岔。
首先,B處于監(jiān)聽狀態(tài)枷餐,等待客戶端的連接請求

第一次:
A向B發(fā)送SYN=1靶瘸,ACK=0,選擇一個初始序號seq=x

第二次:
B向A發(fā)送SYN=1,ACK=1,確認號ack=x+1 , 同樣選擇一個序號seq = y

第三次:
A向B發(fā)送ACK=1毛肋,seq = x+1, ack=y+1

B收到A的確認后怨咪,連接建立

為什么需要三次握手

第三次握手是為了防止失效的連接請求到底服務器,讓服務器錯誤地打開連接润匙,白白浪費資源诗眨。

假設客戶端發(fā)送的第一次請求在網(wǎng)絡中滯留,客戶端得到不到相應后就會重新發(fā)送請求建立連接孕讳。假設第一次無效的連接匠楚,很久后又到達了服務器,假設只有兩次握手厂财,則這時服務的就會進入連接建立狀態(tài)芋簿,而客戶端卻認為這次請求是無效的,服務的還傻傻地等等數(shù)據(jù)的到來璃饱,浪費了資源与斤。如果有三次握手,客戶端會忽略服務的第二次握手的請求荚恶,使得連接不會建立撩穿,避免了資源浪費。

TCP四次揮手

image

TCP的四次揮手主要涉及首部的FIN谒撼,ACK食寡,序號,確認號
假設是客戶端A首先向服務的B請求接受連接
第一次:A向B發(fā)送報文廓潜,首部FIN=1抵皱,序號seq=u。A進入FIN_WAIT_1狀態(tài)
第二次:B收到A的請求茉帅,發(fā)送報文叨叙,首部seq=v,ack=u+1堪澎,ACK=1 擂错。進入close_wait狀態(tài)
第三次:B的數(shù)據(jù)發(fā)送完畢,發(fā)送報文樱蛤,首部 ack=u+1钮呀,seq = w剑鞍,ACK=1,F(xiàn)IN=1爽醋。進入LAST_ACK狀態(tài)
第四次:A收到B的斷開請求蚁署,發(fā)送報文 ,首部ack=w+1蚂四,seq=u+1光戈,ACK=1。進入TIME_WAIT狀態(tài)
B收到第四次握手信息后進入close狀態(tài)

A發(fā)送第四次握手后遂赠,等等2MSL久妆,進入CLOSE狀態(tài)

為什么需要四次握手

因為客戶端發(fā)送FIN連接請求釋放連接后,服務器接受請求后進入CLOSE_WAIT狀態(tài)跷睦,這個狀態(tài)就是為了讓服務段發(fā)送還沒有發(fā)送完的數(shù)據(jù)筷弦,發(fā)送完成后再發(fā)送FIN信號。

TIME_WAIT

客戶端收到服務的釋放連接的請求后抑诸,不是立馬進入CLOSE狀態(tài)烂琴,而是還要再等待2MSL。理由是:

  • 確保最后一個確認報文能夠到達蜕乡。如果沒能到達奸绷,服務端就會會重發(fā)FIN請求釋放連接。等待一段時間沒有收到重發(fā)就說明服務的已經(jīng)CLOSE了异希。如果有重發(fā)健盒,則客戶端再發(fā)送一次LAST ack信號
  • 等待一段時間是為了讓本連接持續(xù)時間內所產(chǎn)生的所有報文都從網(wǎng)絡中消失绒瘦,使得下一個新的連接不會出現(xiàn)舊的連接請求報文
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末称簿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惰帽,更是在濱河造成了極大的恐慌憨降,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件该酗,死亡現(xiàn)場離奇詭異授药,居然都是意外死亡,警方通過查閱死者的電腦和手機呜魄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門悔叽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人爵嗅,你說我怎么就攤上這事娇澎。” “怎么了睹晒?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵趟庄,是天一觀的道長括细。 經(jīng)常有香客問我,道長戚啥,這世上最難降的妖魔是什么奋单? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮猫十,結果婚禮上览濒,老公的妹妹穿的比我還像新娘。我一直安慰自己拖云,他們只是感情好匾七,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著江兢,像睡著了一般昨忆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杉允,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天邑贴,我揣著相機與錄音,去河邊找鬼叔磷。 笑死拢驾,一個胖子當著我的面吹牛,可吹牛的內容都是我干的改基。 我是一名探鬼主播繁疤,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秕狰!你這毒婦竟也來了稠腊?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鸣哀,失蹤者是張志新(化名)和其女友劉穎架忌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體我衬,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡叹放,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了挠羔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片井仰。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖破加,靈堂內的尸體忽然破棺而出俱恶,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布速那,位于F島的核電站俐银,受9級特大地震影響,放射性物質發(fā)生泄漏端仰。R本人自食惡果不足惜捶惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荔烧。 院中可真熱鬧吱七,春花似錦、人聲如沸鹤竭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臀稚。三九已至吝岭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吧寺,已是汗流浹背窜管。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留稚机,地道東北人幕帆。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像赖条,于是被迫代替她去往敵國和親失乾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容