自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

網(wǎng)絡(luò) 通信技術(shù)
TCP 是一種雙向通信協(xié)議,這意味著任何一端都應(yīng)該能夠可靠地發(fā)送數(shù)據(jù),所以三次握手剛剛好。

TCP是 Internet 協(xié)議套件的主要協(xié)議之一,它位于應(yīng)用層和網(wǎng)絡(luò)層之間,用于提供可靠的連接服務(wù),是一種面向連接的通信協(xié)議,有助于通過網(wǎng)絡(luò)在不同設(shè)備之間交換消息。

提到TCP,那么一定就會提到TCP的三次握手,這個是TCP連接核心中的核心,那么TCP三次握手是怎么樣的過程,有什么優(yōu)秀的設(shè)計之處呢?

今天瑞哥帶您用圖解的形式好好的解釋一波,讓我們直接開始吧。

什么是TCP?

  • 英文全稱:Transmission Control Protocol
  • 中文名稱:傳輸控制協(xié)議

TCP是一種面向連接的協(xié)議,可確保將數(shù)據(jù)完整地傳送到其目的地,TCP 首先通過使用 TCP 三向握手與每個主機(jī)上的 TCP 端口建立會話,然后它以數(shù)據(jù)包的形式傳輸數(shù)據(jù),每個數(shù)據(jù)包都有一個序列號,當(dāng)在目的地收到數(shù)據(jù)包時,TCP 會向發(fā)送主機(jī)生成確認(rèn),如果未收到序列中的數(shù)據(jù)包,則發(fā)送主機(jī)上的 TCP 在一定時間間隔后重新傳輸數(shù)據(jù)包。

TCP三次握手

TCP 在建立和關(guān)閉兩個設(shè)備之間的連接期間會發(fā)生 3 次握手過程,也就是建立和關(guān)閉連接需要經(jīng)歷三個步驟,下面我們來詳細(xì)的了解一下這三個過程。

生活中的三次握手

我們先以生活中的例子形象的說明一下三次握手過程:

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

生活中的三次握手

小明想打電話給小美,但是不確定對方是不是小美,所以會經(jīng)歷以下過程:

  • 小明:你好,請問是小美嗎?【第一次握手】
  • 小美:是的,我是小美。【第二次握手】
  • 小明:好的,我知道你是小美了?!镜谌挝帐帧?/li>

經(jīng)歷三次握手后,小明可以可以很明確的確定對方就是小美,非常可靠!

假如只有一次握手,那么小明問完“你好,請問是小美嗎?”,小明壓根不確定對方有沒有收到這個問候,更不要談對方是否是小美了。

假如只有兩次握手,那么小明收到小美的“是的,我是小美?!钡幕貜?fù)后,小美是不知道小明是否收到她的回復(fù),所以接下來她不確定是否要跟電話中詢問她的人通信。

所以三次握手剛剛好。

專業(yè)角度的三次握手

下面我們來看下專業(yè)的三次握手。

三次握手涉及到的專業(yè)名詞

服務(wù)端:服務(wù)端是專用于運行服務(wù)以滿足其他計算機(jī)需求的物理計算機(jī)

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

客戶端-服務(wù)端

  • 客戶端:客戶端是訪問服務(wù)器提供的服務(wù)的計算機(jī)硬件設(shè)備或軟件
  • SYN:同步序列號(Synchronize Sequence Number),這是從客戶端到服務(wù)端的第一個數(shù)據(jù)包,可以描述為建立連接的請求,如果 SYN 為 1,則表示設(shè)備要建立安全連接,否則不。

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

SYN抓包

ACK:確認(rèn)(Acknowledgement),可以說是SYN的響應(yīng),如果 ACK 為 1,則設(shè)備已收到 SYN 消息并確認(rèn),否則沒有。

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

ACK抓包

三次握手步驟

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

三次握手步驟

第一步:客戶端將 SYN 標(biāo)志設(shè)置為 1 將消息發(fā)送到服務(wù)端。

第二步:服務(wù)端通過將 ACK 標(biāo)志設(shè)置為 1 來確認(rèn)客戶端請求。

第三步:客戶端收到來自服務(wù)端的同步(SYN)后,向服務(wù)端發(fā)送確認(rèn)(ACK)。

從客戶端得到(ACK)后,客戶端和服務(wù)端之間建立連接,現(xiàn)在數(shù)據(jù)可以在客戶端和服務(wù)器端之間傳輸。

更詳細(xì)的過程

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

三次握手更詳細(xì)的過程

第一步:TCP客戶端向服務(wù)端發(fā)送 TCP SYN 數(shù)據(jù)包來開始連接,數(shù)據(jù)包包含一個隨機(jī)序列號n,它表示客戶端應(yīng)傳輸?shù)臄?shù)據(jù)的序列號的開始。

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

第二步:服務(wù)端收到數(shù)據(jù)包,并用它的序列號(m)進(jìn)行響應(yīng),它的響應(yīng)還包括確認(rèn)號,即客戶端的序列號加 1,此處為n+1。

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

第三步:客戶端通過發(fā)送確認(rèn)號來響應(yīng)服務(wù)器,該確認(rèn)號是服務(wù)端的序列號加 1,此處為m+1.

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

TCP三次握手抓包分析

再多的理論不經(jīng)過實踐都是徒勞,所以驗證我們理論的最好的方式就是抓包看一下TCP三次握手過程。

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

TCP三次握手抓包分析

如圖,主機(jī)172.16.16.128:2826和主機(jī)212.58.226.142:80建立三次握手過程:

  • 第一步:主機(jī)172.16.16.128:2826向主機(jī)212.58.226.142:80發(fā)送[SYN] Seq=0
  • 第二步:主機(jī)212.58.226.142:80向主機(jī)172.16.16.128:2826發(fā)送[SYN,ACK] Seq=0,Ack=1
  • 第三步:主機(jī)172.16.16.128:2826向主機(jī)212.58.226.142:80發(fā)送[ACK] Seq=1,Ack=1

這就是詳細(xì)的三次握手報文,我覺得此時此刻,大家可以打開自己的wireshark抓包工具盡情的體驗一下TCP三次握手的神奇之處了。

TCP窗口

大家在看上圖中的wireshark抓包截圖的時候,肯定注意到了Win=8192的字眼,這個就是TCP窗口。

客戶端向服務(wù)端發(fā)送一堆數(shù)據(jù),然后服務(wù)端驗證所有數(shù)據(jù)包級別的校驗和并發(fā)送一個ACK數(shù)據(jù)包,表明一切數(shù)據(jù)都已正確接收。

如果沒有收到所有內(nèi)容,則需要重新傳輸部分或全部數(shù)據(jù),每個設(shè)備都維護(hù)一個所有數(shù)據(jù)的緩沖區(qū),以防需要再次發(fā)送,接收到 ACK 數(shù)據(jù)包意味著設(shè)備可以將舊數(shù)據(jù)從緩沖區(qū)中清除。

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

TCP 窗口

TCP 窗口就是在接收到 ACK 之前可以發(fā)送的最大字節(jié)數(shù)。

如果網(wǎng)絡(luò)不可靠,最好將TCP 窗口設(shè)置小一點,這樣,如果出現(xiàn)問題,就不必重新傳輸非常大的數(shù)據(jù)。

TCP還有一個絕佳的設(shè)計,那就是滑動窗口,即設(shè)備可以動態(tài)更改窗口大小,在擁塞時將窗口縮小,在正常時將窗口放大。

其他參數(shù)

抓包截圖中不僅僅有TCP 窗口,還有其他的參數(shù):

  • MSS(Maximum Segment Size),最大段大小。
  • WS(Windows Scaling),用于控制最大 TCP 接收窗口大小。

TCP為什么不能二次握手建立連接

我們要知道Server 和 Client 想要建立連接,必須滿足以下四個條件:

  • 服務(wù)端需要確認(rèn)服務(wù)端可以從客戶端接收數(shù)據(jù)包
  • 客戶端需要確認(rèn)客戶端可以從服務(wù)端接收數(shù)據(jù)包
  • 客戶端需要確認(rèn)服務(wù)端可以從客戶端接收數(shù)據(jù)包
  • 服務(wù)端需要確認(rèn)客戶端可以從服務(wù)端接收數(shù)據(jù)包

四個條件看起來很繞,其實說白了就是:

圖解網(wǎng)絡(luò):TCP三次握手背后的原理,為啥兩次握手不可以?

  • 小明問:“你好,請問時小美嗎?”:發(fā)送成功后,小明確定可以他從小美接收信息,驗證了第一個條件【服務(wù)端需要確認(rèn)服務(wù)端可以從客戶端接收數(shù)據(jù)包】
  • 小美回:“是的,我是小美”:發(fā)送成功后,小美確定她可以從小明接收信息,也能確認(rèn)小明可以從她這邊接收信息,驗證了第二、第三個條件【客戶端需要確認(rèn)客戶端可以從服務(wù)端接收數(shù)據(jù)包】【客戶端需要確認(rèn)服務(wù)端可以從客戶端接收數(shù)據(jù)包】
  • 小明回:“好的,我知道你是小美了”:發(fā)送成功后,小明確定可以小美可以從他這邊接收信息,驗證了四個條件【服務(wù)端需要確認(rèn)客戶端可以從服務(wù)端接收數(shù)據(jù)包】

TCP 是一種雙向通信協(xié)議,這意味著任何一端都應(yīng)該能夠可靠地發(fā)送數(shù)據(jù),所以三次握手剛剛好。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2021-04-30 13:32:17

TCP三次握手網(wǎng)絡(luò)協(xié)議

2019-05-14 10:09:06

TCP連接握手

2024-10-16 08:38:37

TCP編號信息

2022-10-10 07:34:36

TCP三次握手區(qū)塊鏈

2021-07-26 08:08:56

TCPIP網(wǎng)絡(luò)協(xié)議

2021-09-09 08:47:57

TCP三次握手協(xié)議

2018-10-15 08:06:33

TCP握手原理

2018-07-05 14:25:01

TCP握手原理

2023-09-07 16:46:54

TCP數(shù)據(jù)傳遞

2015-10-13 09:42:52

TCP網(wǎng)絡(luò)協(xié)議

2020-12-08 06:34:16

TCP握手SYN 報文

2023-03-06 15:43:56

2024-01-12 08:23:11

TCPACK服務(wù)器

2023-10-24 15:22:09

TCPUDP

2019-06-12 11:26:37

TCP三次握手四次揮手

2021-01-29 06:11:08

TCP通信三次握手

2021-05-18 12:27:40

TCP控制協(xié)議

2024-10-09 20:54:16

2024-04-03 11:40:58

SYN服務(wù)器序號

2022-07-07 09:00:17

TCP 連接HTTP 協(xié)議
點贊
收藏

51CTO技術(shù)棧公眾號