TCP協(xié)議:三次握手、四次揮手

1. 背景

雖說以前學(xué)習(xí)計算機網(wǎng)絡(luò)的時候晶通,學(xué)習(xí)過了璃氢,但為了更好地學(xué)習(xí)一些物聯(lián)網(wǎng)協(xié)議(MQTT),需要重新復(fù)習(xí)一下狮辽。

2. OSI 7層模型

  • OSI(Open System Interconnect ---開放式系統(tǒng)互聯(lián))一也,是 ISO(國際標(biāo)準(zhǔn)化組織)組織在1985年研究的 網(wǎng)絡(luò)互連模型,旨在擬定一個標(biāo)準(zhǔn)來規(guī)范網(wǎng)絡(luò)連接喉脖。
  • OSI 7層:分別為 物理層椰苟、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層树叽、傳輸層舆蝴、會話層、表示層题诵、應(yīng)用層。
  • 使用原則
    1> 數(shù)據(jù)發(fā)送時從上至下封裝性锭,收到數(shù)據(jù)包后從下至上解包;
    2> 數(shù)據(jù)只能逐層傳輸草冈,不能跳層瓮增;
    3> 分層思想:每一層可以使用下層提供的服務(wù)接口(并不關(guān)心下層如何實現(xiàn)),并向上層提供服務(wù)哩俭。
    4>

3. TCP/IP 4層模型

TCP/IP 參考了OSI模型绷跑,將 最上的3層(應(yīng)用層凡资、表示層、會話層) 視為 應(yīng)用層讳苦, 由 將 最下的2層(數(shù)據(jù)鏈路層带膜、物理層)視為 數(shù)據(jù)鏈路層。所以TCP/IP 簡化為 4層模型鸳谜。


OSI-7層模型 與 TCP/IP-4層模型

4. TCP 和 UDP 協(xié)議

TCP(Transmission Control Protocol 式廷,傳輸控制協(xié)議)UDP(User Datagram Protocol ,用戶數(shù)據(jù)報協(xié)議) 是傳輸層中的兩種協(xié)議蝗肪。
我們平時 網(wǎng)絡(luò)傳輸文件蠕趁、視頻會議等 都要通過這兩種協(xié)議進行數(shù)據(jù)傳輸。

TCP 與 UDP 對比

正如上圖介紹的俺陋,TCP 是面向連接的、可靠的诱咏、基于字節(jié)流程 的協(xié)議缴挖,那么TCP 是如何 建立連接斷開連接 呢?

4.1 三次握手

三次握手-建立TCP連接

說明:
在傳輸數(shù)據(jù)前苟鸯,兩臺主機需要通過三次會話建立連接棚点,這個過程我們稱為三次握手。

第一次握手:客戶端向服務(wù)端請求建立連接乙濒,
SYN=1(建立連接)卵蛉,
seq=x(序列號)么库,
客戶端進入SYN_SENT狀態(tài)。

第二次握手:服務(wù)端向客戶端返回確認(rèn)并請求建立連接葡缰,
SYN=1(建立連接)忱反,
ACK=1 (已收到),
ack=x+1(確認(rèn)號為收到的序列號加一)温算,
seq=y(序列號),
服務(wù)端進入SYN_RCVD狀態(tài)茄茁。

第三次握手:客戶端向服務(wù)端發(fā)送確認(rèn)報文,
ACK=1 (已收到)巩割,
ack=y+1(確認(rèn)號為收到的序列號加一),
seq=x+1(序列號)愈犹,
三次握手完成以后闻丑,2個主機之間,就可以傳輸數(shù)據(jù)啦~

4.2 三次握手-必要性

  • 常見回答:因為三次握手才能保證雙方具有接收和發(fā)送的能力梆掸。
    第一次握手SYN---服務(wù)端得知-客戶端有發(fā)送的能力酸钦;
    第二次握手SYN、ACK---客戶端得知-服務(wù)端有接收與發(fā)送的能力卑硫;
    第三次握手ACK---服務(wù)端得知-客戶端有接收的能力。
  • 深入剖析-三次握手的必要性:
    1> 三次握手才可以阻止重復(fù)歷史連接的初始化(主要原因)
    2> 三次握手才可以同步雙方的初始序列號
    3> 三次握手才可以避免資源浪費入挣。


    避免歷史重復(fù)連接

4.3 四次揮手

四次揮手-關(guān)閉TCP連接

說明:
第一次揮手:客戶端向服務(wù)端請求斷開連接径筏,
FIN=1(斷開連接),
seq=u(序列號)滋恬,
客戶端進入FIN_WAIT_1狀態(tài)。

第二次揮手:服務(wù)端向客戶端返回確認(rèn)報文带斑,
ACK=1 (已收到)勋拟,
ack=u+1(確認(rèn)號為收到的序列號加一),
seq=v(序列號)挂滓,
服務(wù)端進入CLOSE_WAIT狀態(tài)啸胧,客戶端進入FIN_WAIT_2狀態(tài)。

第三次揮手:服務(wù)端完成數(shù)據(jù)傳輸后吓揪,向客戶端發(fā)送斷開連接請求所计,
FIN=1(斷開連接),
ACK=1 (已收到)叭首,
ack=u+1(確認(rèn)號為收到的序列號加一)踪栋,
seq=w(序列號),
服務(wù)端進入LAST_ACK狀態(tài)眷唉。

第四次揮手:客戶端向服務(wù)端返回確認(rèn)報文囤官,
ACK=1 (已收到),
ack=w+1(確認(rèn)號為收到的序列號加一)党饮,
seq=u+1(序列號),
客戶端進入TIME_WAIT狀態(tài)饲常,服務(wù)端進入CLOSED狀態(tài)贝淤。
特殊說明:客戶端處于TIME_WAIT狀態(tài)時熊楼,TCP連接還未釋放掉,等待2個MSL(Maximum Segment Lifetime鲫骗,最大段生命周期)的時長后,客戶端進入CLOSE狀態(tài)枕磁。

4.4 思考

四次揮手結(jié)束后术吝,客戶端為什么沒有立刻關(guān)閉呢?
答:為了確保第四次揮手 ACK到達(dá)服務(wù)端沦寂。
場景1:
第四次揮手淘衙,客戶端發(fā)送的ACK確認(rèn)報文丟失了,未能到達(dá)服務(wù)端彤守。
因為服務(wù)端在規(guī)定時間內(nèi)未收到最后的確認(rèn)消息具垫,會重新進行第三次揮手請求斷開連接,客戶端重新發(fā)送確認(rèn)消息筝蚕,如下圖所示:

第四次揮手ACK丟失饰及,重試第三次揮手

場景2:
如果超過2個MSL,客戶端未重新收到斷開連接的請求燎含,說明四次揮手順利完成,可以斷開連接了绘梦。
客戶端從TIME_WAIT狀態(tài) 進入 CLOSED狀態(tài)。

5. 文章參考

1. 三次握手钝诚,四次揮手榄棵,原來TCP這么有禮貌!;
2. TCP面試題:為什么是三次握手疹鳄?不是兩次、四次垫蛆? ;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腺怯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子虑乖,更是在濱河造成了極大的恐慌晾虑,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異惑芭,居然都是意外死亡,警方通過查閱死者的電腦和手機逃沿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門幻锁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哄尔,“玉大人,你說我怎么就攤上這事岭接【视瑁” “怎么了啃沪?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵创千,是天一觀的道長。 經(jīng)常有香客問我追驴,道長,這世上最難降的妖魔是什么戒良? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任冠摄,我火速辦了婚禮,結(jié)果婚禮上沃呢,老公的妹妹穿的比我還像新娘拆挥。我一直安慰自己,他們只是感情好纸兔,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布汉矿。 她就那樣靜靜地躺著,像睡著了一般奈揍。 火紅的嫁衣襯著肌膚如雪赋续。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天蛾绎,我揣著相機與錄音,去河邊找鬼秘通。 笑死,一個胖子當(dāng)著我的面吹牛第股,可吹牛的內(nèi)容都是我干的话原。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涉馅,長吁一口氣:“原來是場噩夢啊……” “哼黄虱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晤揣,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤朱灿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后跪楞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侣灶,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年淋叶,在試婚紗的時候發(fā)現(xiàn)自己被綠了伪阶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片处嫌。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡熏迹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情墓猎,我是刑警寧澤赚楚,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站左胞,受9級特大地震影響举户,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜俭嘁,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一供填、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捕虽,春花似錦、人聲如沸房揭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蓬痒。三九已至漆羔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間演痒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工惦蚊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹦锋。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓莉掂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親巫湘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

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