TCP UDP 詳解 - 了解 (二)

接上文

TCP 屬于傳輸層協(xié)議肺然,是面向有連接蔫缸,可靠的流協(xié)議。面對有連接這個特性狰挡,TCP 就有建立連接和斷開連接的過程捂龄。我們分別了解建立連接和斷開連接的流程以及當(dāng)中的一些疑問。

TCP 建立連接和斷開連接流程

首先我們來看下這張經(jīng)典的流程圖:

借鑒自-小時(shí)光茶社

握手過程可以簡化為下面的四次交互:

1.Client 端首先發(fā)送一個 SYN 包加叁,告訴 Server 端我的初始序列號是 X倦沧;Client 端進(jìn)入了 SYN-SENT(同步已發(fā)送狀態(tài))狀態(tài)。

2.Server 端收到 SYN 包后回復(fù)給 Client 一個 ACK 確認(rèn)包它匕,告訴 Client 說我收到了展融;Server 端進(jìn)入了SYN-RCVD(同步收到)狀態(tài)。

3.接著 Server 端也需要告訴 Client 端自己的初始序列號豫柬,于是 Server 也發(fā)送一個 SYN 包告訴 Client 我的初始序列號是Y告希;

4.Client 端收到后,回復(fù) Server 一個 ACK 確認(rèn)包說我知道了烧给。之后 Client 和 Server 進(jìn)入ESTABLISHED(已建立連接)狀態(tài)燕偶。

重點(diǎn):Server 的 ACK 確認(rèn)包和接下來的 SYN 包合成一個SYN ACK包一起發(fā)送的,沒必要分別單獨(dú)發(fā)送础嫡,這樣子三次握手在進(jìn)行最少次交互的情況下完成了兩端的資源分配和初始化序列號的交換指么。

揮手過程詳解


TCP 的三次握手改成兩次握手可以嗎?

不可以榴鼎,一句話伯诬,主要防止已經(jīng)失效的連接請求報(bào)文突然又傳送到了服務(wù)器,從而產(chǎn)生錯誤巫财。

如果使用的是兩次握手建立連接盗似,假設(shè)有這樣一種場景,客戶端發(fā)送了第一個請求連接并且沒有丟失平项,只是因?yàn)樵诰W(wǎng)絡(luò)結(jié)點(diǎn)中滯留的時(shí)間太長了赫舒,由于TCP的客戶端遲遲沒有收到確認(rèn)報(bào)文,以為服務(wù)器沒有收到闽瓢,此時(shí)重新向服務(wù)器發(fā)送這條報(bào)文号阿,此后客戶端和服務(wù)器經(jīng)過兩次握手完成連接,傳輸數(shù)據(jù)鸳粉,然后關(guān)閉連接扔涧。此時(shí)此前滯留的那一次請求連接,網(wǎng)絡(luò)通暢了到達(dá)了服務(wù)器届谈,這個報(bào)文本該是失效的枯夜,但是,兩次握手的機(jī)制將會讓客戶端和服務(wù)器再次建立連接艰山,這將導(dǎo)致不必要的錯誤和資源的浪費(fèi)湖雹。

如果采用的是三次握手,就算是那一次失效的報(bào)文傳送過來了曙搬,服務(wù)端接受到了那條失效報(bào)文并且回復(fù)了確認(rèn)報(bào)文摔吏,但是客戶端不會再次發(fā)出確認(rèn)鸽嫂。由于服務(wù)器收不到確認(rèn),就知道客戶端并沒有請求連接征讲。

TCP 四次揮手能不能變成三次揮手呢据某?

答案是可能的。

TCP是全雙工通信诗箍,Client 在自己已經(jīng)不會在有新的數(shù)據(jù)要發(fā)送給 Server 后癣籽,可以發(fā)送 FIN 信號告知 Server,這邊已經(jīng)終止 Client 到對端 Server 那邊的數(shù)據(jù)傳輸滤祖。但是筷狼,這個時(shí)候?qū)Χ?Server 可以繼續(xù)往 Client 這邊發(fā)送數(shù)據(jù)包。于是匠童,兩端數(shù)據(jù)傳輸?shù)慕K止在時(shí)序上是獨(dú)立并且可能會相隔比較長的時(shí)間埂材,這個時(shí)候就必須最少需要2+2 = 4 次揮手來完全終止這個連接。但是汤求,如果Server在收到Client的FIN包后楞遏,在也沒數(shù)據(jù)需要發(fā)送給Client了,那么對Client的ACK包和Server自己的FIN包就可以合并成為一個包發(fā)送過去首昔,這樣四次揮手就可以變成三次了(似乎linux協(xié)議棧就是這樣實(shí)現(xiàn)的)寡喝。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市勒奇,隨后出現(xiàn)的幾起案子预鬓,更是在濱河造成了極大的恐慌,老刑警劉巖赊颠,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件格二,死亡現(xiàn)場離奇詭異,居然都是意外死亡竣蹦,警方通過查閱死者的電腦和手機(jī)顶猜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痘括,“玉大人长窄,你說我怎么就攤上這事「倬” “怎么了挠日?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長翰舌。 經(jīng)常有香客問我嚣潜,道長,這世上最難降的妖魔是什么椅贱? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任懂算,我火速辦了婚禮只冻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘计技。我一直安慰自己喜德,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布酸役。 她就那樣靜靜地躺著,像睡著了一般驾胆。 火紅的嫁衣襯著肌膚如雪涣澡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天丧诺,我揣著相機(jī)與錄音入桂,去河邊找鬼。 笑死驳阎,一個胖子當(dāng)著我的面吹牛抗愁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呵晚,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蜘腌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了饵隙?” 一聲冷哼從身側(cè)響起撮珠,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎金矛,沒想到半個月后芯急,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驶俊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年娶耍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饼酿。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡榕酒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出故俐,到底是詐尸還是另有隱情奈应,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布购披,位于F島的核電站杖挣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏刚陡。R本人自食惡果不足惜惩妇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一株汉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧歌殃,春花似錦乔妈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至波材,卻和暖如春股淡,著一層夾襖步出監(jiān)牢的瞬間序目,已是汗流浹背懒震。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工脏毯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赦邻,地道東北人肥卡。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓恨诱,卻偏偏與公主長得像拔恰,于是被迫代替她去往敵國和親话侄。 傳聞我的和親對象是個殘疾皇子玖绿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

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