TCP是 Internet 協議套件的主要協議之一,它位于應用層和網絡層之間,用于提供可靠的連接服務,是一種面向連接的通信協議,有助于通過網絡在不同設備之間交換消息。
提到TCP,那么一定就會提到TCP的三次握手,這個是TCP連接核心中的核心,那么TCP三次握手是怎么樣的過程,有什么優秀的設計之處呢?
今天瑞哥帶您用圖解的形式好好的解釋一波,讓我們直接開始吧。
【資料圖】
TCP是一種面向連接的協議,可確保將數據完整地傳送到其目的地,TCP 首先通過使用 TCP 三向握手與每個主機上的 TCP 端口建立會話,然后它以數據包的形式傳輸數據,每個數據包都有一個序列號,當在目的地收到數據包時,TCP 會向發送主機生成確認,如果未收到序列中的數據包,則發送主機上的 TCP 在一定時間間隔后重新傳輸數據包。
TCP三次握手TCP 在建立和關閉兩個設備之間的連接期間會發生 3 次握手過程,也就是建立和關閉連接需要經歷三個步驟,下面我們來詳細的了解一下這三個過程。
生活中的三次握手我們先以生活中的例子形象的說明一下三次握手過程:
生活中的三次握手
小明想打電話給小美,但是不確定對方是不是小美,所以會經歷以下過程:
小明:你好,請問是小美嗎?【第一次握手】小美:是的,我是小美?!镜诙挝帐帧啃∶鳎汉玫?,我知道你是小美了?!镜谌挝帐帧?p>經歷三次握手后,小明可以可以很明確的確定對方就是小美,非??煽?!假如只有一次握手,那么小明問完“你好,請問是小美嗎?”,小明壓根不確定對方有沒有收到這個問候,更不要談對方是否是小美了。
假如只有兩次握手,那么小明收到小美的“是的,我是小美?!钡幕貜秃?,小美是不知道小明是否收到她的回復,所以接下來她不確定是否要跟電話中詢問她的人通信。
所以三次握手剛剛好。
專業角度的三次握手下面我們來看下專業的三次握手。
三次握手涉及到的專業名詞服務端:服務端是專用于運行服務以滿足其他計算機需求的物理計算機
客戶端-服務端
客戶端:客戶端是訪問服務器提供的服務的計算機硬件設備或軟件SYN:同步序列號(Synchronize Sequence Number),這是從客戶端到服務端的第一個數據包,可以描述為建立連接的請求,如果 SYN 為 1,則表示設備要建立安全連接,否則不。SYN抓包
ACK:確認(Acknowledgement),可以說是SYN的響應,如果 ACK 為 1,則設備已收到 SYN 消息并確認,否則沒有。
ACK抓包
三次握手步驟三次握手步驟
第一步:客戶端將 SYN 標志設置為 1 將消息發送到服務端。
第二步:服務端通過將 ACK 標志設置為 1 來確認客戶端請求。
第三步:客戶端收到來自服務端的同步(SYN)后,向服務端發送確認(ACK)。
從客戶端得到(ACK)后,客戶端和服務端之間建立連接,現在數據可以在客戶端和服務器端之間傳輸。
更詳細的過程三次握手更詳細的過程
第一步:TCP客戶端向服務端發送 TCP SYN 數據包來開始連接,數據包包含一個隨機序列號n,它表示客戶端應傳輸的數據的序列號的開始。
第二步:服務端收到數據包,并用它的序列號(m)進行響應,它的響應還包括確認號,即客戶端的序列號加 1,此處為n+1。
第三步:客戶端通過發送確認號來響應服務器,該確認號是服務端的序列號加 1,此處為m+1.
TCP三次握手抓包分析
再多的理論不經過實踐都是徒勞,所以驗證我們理論的最好的方式就是抓包看一下TCP三次握手過程。
TCP三次握手抓包分析
如圖,主機172.16.16.128:2826和主機212.58.226.142:80建立三次握手過程:
第一步:主機172.16.16.128:2826向主機212.58.226.142:80發送[SYN] Seq=0第二步:主機212.58.226.142:80向主機172.16.16.128:2826發送[SYN,ACK] Seq=0,Ack=1第三步:主機172.16.16.128:2826向主機212.58.226.142:80發送[ACK] Seq=1,Ack=1這就是詳細的三次握手報文,我覺得此時此刻,大家可以打開自己的wireshark抓包工具盡情的體驗一下TCP三次握手的神奇之處了。
TCP窗口大家在看上圖中的wireshark抓包截圖的時候,肯定注意到了Win=8192的字眼,這個就是TCP窗口。
客戶端向服務端發送一堆數據,然后服務端驗證所有數據包級別的校驗和并發送一個ACK數據包,表明一切數據都已正確接收。
如果沒有收到所有內容,則需要重新傳輸部分或全部數據,每個設備都維護一個所有數據的緩沖區,以防需要再次發送,接收到 ACK 數據包意味著設備可以將舊數據從緩沖區中清除。
TCP 窗口
TCP 窗口就是在接收到 ACK 之前可以發送的最大字節數。
如果網絡不可靠,最好將TCP 窗口設置小一點,這樣,如果出現問題,就不必重新傳輸非常大的數據。
TCP還有一個絕佳的設計,那就是滑動窗口,即設備可以動態更改窗口大小,在擁塞時將窗口縮小,在正常時將窗口放大。
其他參數抓包截圖中不僅僅有TCP 窗口,還有其他的參數:
MSS(Maximum Segment Size),最大段大小。WS(Windows Scaling),用于控制最大 TCP 接收窗口大小。TCP為什么不能二次握手建立連接我們要知道Server 和 Client 想要建立連接,必須滿足以下四個條件:
服務端需要確認服務端可以從客戶端接收數據包客戶端需要確認客戶端可以從服務端接收數據包客戶端需要確認服務端可以從客戶端接收數據包服務端需要確認客戶端可以從服務端接收數據包四個條件看起來很繞,其實說白了就是:
小明問:“你好,請問時小美嗎?”:發送成功后,小明確定可以他從小美接收信息,驗證了第一個條件【服務端需要確認服務端可以從客戶端接收數據包】小美回:“是的,我是小美”:發送成功后,小美確定她可以從小明接收信息,也能確認小明可以從她這邊接收信息,驗證了第二、第三個條件【客戶端需要確認客戶端可以從服務端接收數據包】【客戶端需要確認服務端可以從客戶端接收數據包】小明回:“好的,我知道你是小美了”:發送成功后,小明確定可以小美可以從他這邊接收信息,驗證了四個條件【服務端需要確認客戶端可以從服務端接收數據包】TCP 是一種雙向通信協議,這意味著任何一端都應該能夠可靠地發送數據,所以三次握手剛剛好。
X 關閉
X 關閉
- 1轉轉集團發布2022年二季度手機行情報告:二手市場“飄香”
- 2充電寶100Wh等于多少毫安?鐵路旅客禁止、限制攜帶和托運物品目錄
- 3好消息!京東與騰訊續簽三年戰略合作協議 加強技術創新與供應鏈服務
- 4名創優品擬通過香港IPO全球發售4100萬股 全球發售所得款項有什么用處?
- 5亞馬遜云科技成立量子網絡中心致力解決量子計算領域的挑戰
- 6京東綠色建材線上平臺上線 新增用戶70%來自下沉市場
- 7網紅淘品牌“七格格”chuu在北京又開一家店 潮人新寵chuu能紅多久
- 8市場競爭加劇,有車企因經營不善出現破產、退網、退市
- 9北京市市場監管局為企業紓困減負保護經濟韌性
- 10市場監管總局發布限制商品過度包裝標準和第1號修改單