TCP的連接與斷開過(guò)程

HTTP 是無(wú)連接的沪哺,所以作為下層的 TCP 協(xié)議也是無(wú)連接的阿迈,雖然看似 TCP 將兩端連接了起來(lái)典蜕,但是其實(shí)只是兩端共同維護(hù)了一個(gè)狀態(tài)畦韭。

建立連接三次握手

在 TCP 協(xié)議中疼蛾,主動(dòng)發(fā)起請(qǐng)求的一端為客戶端,被動(dòng)連接的一端稱為服務(wù)端艺配。不管是客戶端還是服務(wù)端察郁,TCP 連接建立完后都能發(fā)送和接收數(shù)據(jù),所以 TCP 也是一個(gè)全雙工的協(xié)議转唉。

起初皮钠,兩端都為 CLOSED 狀態(tài)。在通信開始前赠法,雙方都會(huì)創(chuàng)建 TCB麦轰。 服務(wù)器創(chuàng)建完 TCB 后遍進(jìn)入 LISTEN 狀態(tài),此時(shí)開始等待客戶端發(fā)送數(shù)據(jù)。

  • 第一次握手
    客戶端向服務(wù)端發(fā)送連接請(qǐng)求報(bào)文段款侵。該報(bào)文段中包含自身的數(shù)據(jù)通訊初始序號(hào)末荐。請(qǐng)求發(fā)送后,客戶端便進(jìn)入 SYN-SENT 狀態(tài)新锈,x 表示客戶端的數(shù)據(jù)通信初始序號(hào)甲脏。
  • 第二次握手
    服務(wù)端收到連接請(qǐng)求報(bào)文段后,如果同意連接妹笆,則會(huì)發(fā)送一個(gè)應(yīng)答剃幌,該應(yīng)答中也會(huì)包含自身的數(shù)據(jù)通訊初始序號(hào),發(fā)送完成后便進(jìn)入 SYN-RECEIVED 狀態(tài)晾浴。
  • 第三次握手
    當(dāng)客戶端收到連接同意的應(yīng)答后负乡,還要向服務(wù)端發(fā)送一個(gè)確認(rèn)報(bào)文〖够耍客戶端發(fā)完這個(gè)報(bào)文段后便進(jìn)入ESTABLISHED 狀態(tài)抖棘,服務(wù)端收到這個(gè)應(yīng)答后也進(jìn)入 ESTABLISHED 狀態(tài),此時(shí)連接建立成功狸涌。

第三次握手可以包含數(shù)據(jù)切省,通過(guò) TCP 快速打開(TFO)技術(shù)。其實(shí)只要涉及到握手的協(xié)議帕胆,都可以使用類似 TFO 的方式朝捆,客戶端和服務(wù)端存儲(chǔ)相同 cookie,下次握手時(shí)發(fā)出 cookie 達(dá)到減少 RTT 的目的懒豹。

  • 為何兩次握手即可建立鏈接芙盘,還需要第三次握手?
    為了防止失效的連接請(qǐng)求報(bào)文段被服務(wù)端接收脸秽,從而產(chǎn)生錯(cuò)誤儒老。

斷開鏈接四次揮手

TCP 是全雙工的,在斷開連接時(shí)兩端都需要發(fā)送 FIN 和 ACK记餐。

  • 第一次揮手
    若客戶端 A 認(rèn)為數(shù)據(jù)發(fā)送完成驮樊,則它需要向服務(wù)端 B 發(fā)送連接釋放請(qǐng)求。
  • 第二次揮手
    B 收到連接釋放請(qǐng)求后片酝,會(huì)告訴應(yīng)用層要釋放 TCP 鏈接囚衔。然后會(huì)發(fā)送 ACK 包,并進(jìn)入 CLOSE_WAIT 狀態(tài)雕沿,表示 A 到 B 的連接已經(jīng)釋放练湿,不接收 A 發(fā)的數(shù)據(jù)了。但是因?yàn)?TCP 連接時(shí)雙向的晦炊,所以 B 仍舊可以發(fā)送數(shù)據(jù)給 A鞠鲜。
  • 第三次揮手
    B 如果此時(shí)還有沒(méi)發(fā)完的數(shù)據(jù)會(huì)繼續(xù)發(fā)送宁脊,完畢后會(huì)向 A 發(fā)送連接釋放請(qǐng)求,然后 B 便進(jìn)入 LAST-ACK 狀態(tài)贤姆。
  • 第四次揮手
    A 收到釋放請(qǐng)求后榆苞,向 B 發(fā)送確認(rèn)應(yīng)答,此時(shí) A 進(jìn)入 TIME-WAIT 狀態(tài)霞捡。該狀態(tài)會(huì)持續(xù) 2MSL(最大段生存期坐漏,指報(bào)文段在網(wǎng)絡(luò)中生存的時(shí)間,超時(shí)會(huì)被拋棄) 時(shí)間碧信,若該時(shí)間段內(nèi)沒(méi)有 B 的重發(fā)請(qǐng)求的話赊琳,就進(jìn)入 CLOSED 狀態(tài)。當(dāng) B 收到確認(rèn)應(yīng)答后砰碴,也便進(jìn)入 CLOSED 狀態(tài)躏筏。

第三次揮手通過(guò)延遲確認(rèn)的技術(shù)(通常有時(shí)間限制,否則對(duì)方會(huì)誤認(rèn)為需要重傳)呈枉,可以將第二次和第三次揮手合并趁尼,延遲 ACK 包的發(fā)送。

  • 為什么 A 要進(jìn)入 TIME-WAIT 狀態(tài)猖辫,等待 2MSL 時(shí)間后才進(jìn)入 CLOSED 狀態(tài)酥泞?
    為了保證 B 能收到 A 的確認(rèn)應(yīng)答。若 A 發(fā)完確認(rèn)應(yīng)答后直接進(jìn)入 CLOSED 狀態(tài)啃憎,如果確認(rèn)應(yīng)答因?yàn)榫W(wǎng)絡(luò)問(wèn)題一直沒(méi)有到達(dá)芝囤,那么會(huì)造成 B 不能正常關(guān)閉。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辛萍,一起剝皮案震驚了整個(gè)濱河市悯姊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌叹阔,老刑警劉巖挠轴,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異耳幢,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)欧啤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門睛藻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人邢隧,你說(shuō)我怎么就攤上這事店印。” “怎么了倒慧?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵按摘,是天一觀的道長(zhǎng)包券。 經(jīng)常有香客問(wèn)我,道長(zhǎng)炫贤,這世上最難降的妖魔是什么溅固? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮兰珍,結(jié)果婚禮上侍郭,老公的妹妹穿的比我還像新娘。我一直安慰自己掠河,他們只是感情好亮元,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唠摹,像睡著了一般爆捞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上勾拉,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天煮甥,我揣著相機(jī)與錄音,去河邊找鬼望艺。 笑死苛秕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的找默。 我是一名探鬼主播艇劫,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惩激!你這毒婦竟也來(lái)了店煞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤风钻,失蹤者是張志新(化名)和其女友劉穎顷蟀,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骡技,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸣个,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了布朦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囤萤。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖是趴,靈堂內(nèi)的尸體忽然破棺而出涛舍,到底是詐尸還是另有隱情,我是刑警寧澤唆途,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布富雅,位于F島的核電站掸驱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏没佑。R本人自食惡果不足惜毕贼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望图筹。 院中可真熱鬧帅刀,春花似錦、人聲如沸远剩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瓜晤。三九已至锥余,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痢掠,已是汗流浹背驱犹。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留足画,地道東北人雄驹。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像淹辞,于是被迫代替她去往敵國(guó)和親医舆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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

  • 1象缀、TCP狀態(tài)linux查看tcp的狀態(tài)命令:1)蔬将、netstat -nat 查看TCP各個(gè)狀態(tài)的數(shù)量2)、lso...
    北辰青閱讀 9,423評(píng)論 0 11
  • 本篇結(jié)構(gòu): 前言 TCP報(bào)文首部格式 三次握手 四次揮手 wireshark抓包三次握手 wireshark抓包四...
    w1992wishes閱讀 8,290評(píng)論 0 57
  • 目錄 1.TCP相關(guān)機(jī)制 2.TCP首部格式 1.TCP三次握手 1.TCP四次揮手 一.TCP相關(guān)機(jī)制 TCP通...
    慕涵盛華閱讀 21,741評(píng)論 3 37
  • 目錄: TCP是什么TCP報(bào)文結(jié)構(gòu)TCP連接過(guò)程TCP狀態(tài)轉(zhuǎn)移TCP流量控制 —— 滑動(dòng)窗口TCP擁塞控制TCP可...
    Katou_Megumi閱讀 1,344評(píng)論 0 4
  • 時(shí)間:2018/01/25 看書用時(shí):2.5小時(shí) 所讀書目:《美麗新世界》 進(jìn)度:第一到五章 今天看了小小白連長(zhǎng)送...
    涼意的秋閱讀 158評(píng)論 2 3