0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TCP三次握手詳解

冬至子 ? 來(lái)源:清菡軟件測(cè)試 ? 作者:清菡軟件測(cè)試 ? 2023-07-10 17:14 ? 次閱讀

一、舉個(gè)例子

圖片

圖片來(lái)自網(wǎng)絡(luò)

類比兩個(gè)人初認(rèn)識(shí)的一個(gè)過(guò)程。比如一個(gè)男生初次認(rèn)識(shí)一個(gè)女生,男生第一次看到這個(gè)女生就一見(jiàn)鐘情,想要認(rèn)識(shí)女生。

男生給女生發(fā)了個(gè)求交往的消息,“我想要跟你做朋友,可不可以?”給這個(gè)求交往的消息打上標(biāo)簽,比如愛(ài)心,代表這個(gè)是求交往的消息。

女生回復(fù)“我收到你的消息(對(duì)收到消息的確認(rèn))。我同意跟你做朋友試試看?!边@個(gè)是女生的態(tài)度。在男生發(fā)完求交往后的一個(gè)確認(rèn)消息以及女生同意交往的消息。

這個(gè)是消息內(nèi)容以及消息性質(zhì)。男生收到女生的消息很開(kāi)心,再次確認(rèn)下我確實(shí)收到了你的確認(rèn)消息。也知道了女生同意試試看的態(tài)度。

這樣的一個(gè)交互之后,確認(rèn)消息的一個(gè)再次確認(rèn)消息。

結(jié)果:確認(rèn)關(guān)系了,可以正式交往了。后面再發(fā)送的消息就是他們作為男女朋友之后發(fā)的消息內(nèi)容了。

二、TCP三次握手詳解

1.TCP頭部的重要字段

圖片

圖片來(lái)自網(wǎng)絡(luò)

tcp三次握手跟這個(gè)過(guò)程就特別像。 現(xiàn)在是個(gè)客戶端,這邊是個(gè)百度服務(wù)器。這個(gè)客戶端想像百度服務(wù)器去取頁(yè)面、資源。首先要發(fā)起個(gè)tcp的鏈接請(qǐng)求。

首先要發(fā)一條請(qǐng)求鏈接的消息。請(qǐng)求鏈接的消息里面要包括一些什么內(nèi)容呢?這個(gè)需要再去詳細(xì)的看下tcp頭部了。

圖片

圖片來(lái)自網(wǎng)絡(luò)

要重視的是序號(hào)、確認(rèn)號(hào)、6個(gè)標(biāo)志位。

序號(hào):就是tcp數(shù)據(jù)包標(biāo)的編號(hào)。tcp數(shù)據(jù)包過(guò)大,tcp數(shù)據(jù)會(huì)在網(wǎng)絡(luò)中進(jìn)行分段。

太大了在網(wǎng)絡(luò)中是無(wú)法傳輸?shù)?,分成一小段一小段進(jìn)行傳輸。

分段,到達(dá)目的主機(jī)后進(jìn)行重組。比如分成了10段,每段要按順序重組,才能組成原來(lái)一樣的數(shù)據(jù)包。如果順序錯(cuò)了,數(shù)據(jù)包也不一樣了。

所以這個(gè)時(shí)候要對(duì)它進(jìn)行一個(gè)編號(hào),比如分成10段,分別是1,2,3,4....10,重組的時(shí)候,收到1的時(shí)候必須等2,收到2的時(shí)候必須等3,這個(gè)數(shù)據(jù)包依次過(guò)來(lái)依次重組,這樣保證數(shù)據(jù)能夠正確的組合起來(lái)。這個(gè)就是序號(hào)的作用。

確認(rèn)號(hào):就是確認(rèn)的一個(gè)序號(hào)。當(dāng)客戶端向服務(wù)器發(fā)起了一個(gè)鏈接的時(shí)候,客戶端會(huì)發(fā)起一個(gè)鏈接請(qǐng)求,客戶端發(fā)完鏈接請(qǐng)求之后,希望服務(wù)器能夠給一些回應(yīng)。

比如男生給女生發(fā)請(qǐng)求交往的消息,內(nèi)心很忐忑的希望女生也能夠回一個(gè)確認(rèn)消息。確認(rèn)消息里面會(huì)帶一個(gè)編號(hào)。這個(gè)編號(hào)就是這里說(shuō)的確認(rèn)號(hào)。

確認(rèn)號(hào)存在于確認(rèn)消息里面的。確認(rèn)號(hào)是怎么編號(hào)的呢?序號(hào)是為了給數(shù)據(jù)包分段的時(shí)候?yàn)榱朔奖憬o后面進(jìn)行完整的數(shù)據(jù)重組。

確認(rèn)號(hào)和序號(hào)有什么關(guān)系?確認(rèn)號(hào)是依據(jù)序號(hào)來(lái)編得。

一個(gè)數(shù)據(jù)包發(fā)送過(guò)去,它的序號(hào)的編號(hào)是1。發(fā)到服務(wù)器那邊,服務(wù)器進(jìn)行了一個(gè)回應(yīng),回應(yīng)包也就是確認(rèn)包里面有確認(rèn)號(hào)。ack表示確認(rèn)號(hào)。

確認(rèn)號(hào)是上一個(gè)收到的包的序號(hào)加上1。表示服務(wù)器期望收到你的下一個(gè)包的序號(hào)。

6個(gè)標(biāo)志位(狀態(tài)控制碼):目前只需要掌握4個(gè),包括ACK(確認(rèn)位)、RST(重置)、SYN、FIN。

標(biāo)志位--信號(hào)燈,1--亮,0--滅。表示數(shù)據(jù)包的類型。標(biāo)志位就是表示數(shù)據(jù)包的類型。

2.四個(gè)標(biāo)志位

ACK(確認(rèn)位)。=1,表示這個(gè)消息是一個(gè)確認(rèn)消息。

什么是確認(rèn)消息?男生給女生發(fā)了一個(gè)求交往的消息,女生禮貌性的回了一個(gè)確認(rèn)消息。這個(gè)就是一個(gè)確認(rèn)消息,ACK這個(gè)標(biāo)志位就會(huì)被置成1。

客戶端收到,就會(huì)認(rèn)識(shí)這個(gè)包是個(gè)確認(rèn)消息。

RST(重置):=1,表示這個(gè)消息釋放鏈接。TCP鏈接出現(xiàn)了錯(cuò)誤--主機(jī)服務(wù)器崩潰,斷開(kāi)鏈接,請(qǐng)重新建立鏈接。

SYN:同步,=1,表示這個(gè)消息是:1.一個(gè)發(fā)起鏈接的消息。男生向女生發(fā)起的第一個(gè)求交往的消息,就是一個(gè)發(fā)起鏈接的消息。

2.確認(rèn)接受鏈接的消息。

如果我這個(gè)消息是一個(gè)確認(rèn)接受鏈接的消息,服務(wù)器這邊 收到客戶端一個(gè)發(fā)起鏈接的消息,然后我同意它發(fā)起鏈接,所以要進(jìn)行一個(gè)確認(rèn)。

這兩種情況都需要把SYN位置成1。

FIN:終止。=1,表示發(fā)送報(bào)文結(jié)束了完畢,釋放這個(gè)鏈接。

RST是出現(xiàn)錯(cuò)誤,不得不釋放鏈接,而FIN是用完了這個(gè)鏈接,用完了之后自然要釋放這個(gè)鏈接。FIN被置位了就表示TCP四次揮手要開(kāi)始了。

不管是客戶端還是服務(wù)器收到tcp的報(bào)文,檢查標(biāo)記號(hào),標(biāo)記位是什么狀態(tài),表示當(dāng)前的報(bào)文是一個(gè)什么樣的類型。

3.TCP三次握手

圖片

圖片來(lái)自網(wǎng)絡(luò)

客戶端要向服務(wù)器端發(fā)送一個(gè)請(qǐng)求鏈接的消息。標(biāo)志位SYN=1,表示一個(gè)發(fā)起鏈接的消息時(shí),這個(gè)SYN位一定置成1。

每個(gè)包都有一個(gè)序號(hào),所以序號(hào)用seq來(lái)表示,seq=j,表示當(dāng)前的序號(hào)是j。

是一個(gè)SYN包,是我要向服務(wù)器發(fā)起一個(gè)鏈接請(qǐng)求。這個(gè)是客戶端向服務(wù)器發(fā)起的第一個(gè)數(shù)據(jù)包。也是三次握手的第一次握手。

服務(wù)器收到了客戶端的包,服務(wù)器給客戶端回的消息是一個(gè)確認(rèn)消息。

標(biāo)志位:ACK位置1,表示它是一個(gè)確認(rèn)消息。SYN位置1,客戶端發(fā)起鏈接,服務(wù)器確認(rèn)接受鏈接的消息。

ack(確認(rèn)號(hào)):根據(jù)序號(hào)來(lái)進(jìn)行表示的,序號(hào)是1,確認(rèn)號(hào)是1+1,表示服務(wù)器期望收到的下一個(gè)包的序號(hào)。所以確認(rèn)號(hào)是j+1。

表示收到了序?yàn)閖的這個(gè)包,并且希望得到下一個(gè)包的序號(hào)是j+1。

這個(gè)包,自己的序號(hào)是seq=k。

客戶端收到服務(wù)器的確認(rèn)消息,需要再次給它發(fā)送一個(gè)確認(rèn)消息。

這個(gè)確認(rèn)消息里面,標(biāo)志位里面:ACK肯定置1。也不是發(fā)起請(qǐng)求的一個(gè)消息,也不是確認(rèn)接受請(qǐng)求的一個(gè)消息,所以SYN這個(gè)位置是不會(huì)被置位的。

ack(確認(rèn)號(hào))=k+1

收到序號(hào)為k的這個(gè)包,并且進(jìn)行一個(gè)確認(rèn),期待下一個(gè)包的序號(hào)是k+1,到此為止就是tcp三次握手的一個(gè)完整過(guò)程。

后續(xù)才是這個(gè)基礎(chǔ)上的數(shù)據(jù)發(fā)送報(bào)文。

必須要建立這個(gè)三次握手的基礎(chǔ)上才有后續(xù)的數(shù)據(jù)發(fā)送報(bào)文。

四、總結(jié)

服務(wù)器和客戶端在握手中的狀態(tài) :首先,三次握手之前,客戶端和服務(wù)器端都是處于關(guān)閉狀態(tài)。

然后客戶端發(fā)起了第一個(gè)SYN包,想要去跟服務(wù)器建立鏈接。

發(fā)完SYN包之后就變成syn_sent狀態(tài),就是把syn發(fā)完了的狀態(tài)。服務(wù)器在收到syn包之前變成監(jiān)聽(tīng)狀態(tài)。

開(kāi)始聽(tīng)下誰(shuí)會(huì)給我發(fā)送消息。收到客戶端的syn包之后,變成syn_Revd的狀態(tài)。

回了一個(gè)syn,ack??蛻舳耸盏絪yn,ack之后變成建立鏈接的狀態(tài),它認(rèn)為我收到之后,我這個(gè)鏈接就已經(jīng)建立好了。并且我給它發(fā)送了一個(gè)ack包,服務(wù)器收到ack包后也建立鏈接了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16419

    瀏覽量

    178803
  • SYN
    SYN
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    8204
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    492

    瀏覽量

    27600
  • RST
    RST
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    7404
  • TCP通信
    +關(guān)注

    關(guān)注

    0

    文章

    146

    瀏覽量

    4260
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    講一講的TCP三次握手和四揮手

    如果你學(xué)過(guò)網(wǎng)絡(luò)基礎(chǔ)知識(shí),那么你一定對(duì)TCP三次握手不陌生。今天我想用通俗的話來(lái)給大家講一講TCP三次握手
    的頭像 發(fā)表于 02-03 10:43 ?2761次閱讀
    講一講的<b class='flag-5'>TCP</b><b class='flag-5'>三次</b><b class='flag-5'>握手</b>和四<b class='flag-5'>次</b>揮手

    TCP三次握手的過(guò)程描述

    本文檔主要描述TCP三次握手的過(guò)程,一個(gè)完整的三次握手也就是 請(qǐng)求---應(yīng)答---再次確認(rèn)
    發(fā)表于 03-02 15:37 ?8次下載

    如何使用WireShark進(jìn)行TCP三次握手

    WireShark是一種非常方便的網(wǎng)絡(luò)抓包工具,下面演示,使用WireShark來(lái)抓取TCP三次握手過(guò)程。
    的頭像 發(fā)表于 11-01 09:50 ?2183次閱讀

    說(shuō)說(shuō)TCP三次握手的過(guò)程?為什么是三次而不是兩、四?

    說(shuō)說(shuō)TCP三次握手的過(guò)程?為什么是三次而不是兩、四? T
    的頭像 發(fā)表于 02-04 11:03 ?726次閱讀

    簡(jiǎn)述TCP協(xié)議的三次握手機(jī)制

    TCP(Transmission Control Protocol,傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它主要用于在IP網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)傳輸。TCP協(xié)議的三次握手
    的頭像 發(fā)表于 08-16 10:57 ?1142次閱讀

    TCP三次握手的詳細(xì)過(guò)程

    TCP(傳輸控制協(xié)議)三次握手是一種在互聯(lián)網(wǎng)上建立一個(gè)可靠的、有序的和錯(cuò)誤檢測(cè)能力的連接的方法。這個(gè)過(guò)程確保了兩個(gè)設(shè)備(通常是客戶端和服務(wù)器)在數(shù)據(jù)傳輸開(kāi)始之前能夠相互確認(rèn)對(duì)方的存在和狀態(tài)。以下
    的頭像 發(fā)表于 01-03 17:11 ?347次閱讀

    TCP三次握手協(xié)議的作用

    在計(jì)算機(jī)網(wǎng)絡(luò)中,數(shù)據(jù)的傳輸需要在發(fā)送方和接收方之間建立一個(gè)穩(wěn)定的連接,以確保數(shù)據(jù)的完整性和順序。TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,它通過(guò)三次握手協(xié)議來(lái)建立
    的頭像 發(fā)表于 01-03 17:15 ?328次閱讀

    TCP三次握手的基本原理

    在計(jì)算機(jī)網(wǎng)絡(luò)中,TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它確保了數(shù)據(jù)在網(wǎng)絡(luò)中傳輸?shù)目煽啃院晚樞蛐?。為了建立兩個(gè)網(wǎng)絡(luò)實(shí)體之間的通信,TCP使用一種稱為“三次
    的頭像 發(fā)表于 01-03 17:25 ?481次閱讀

    TCP三次握手與UDP的區(qū)別

    、連接管理、可靠性、效率等方面有著顯著的區(qū)別。 1. TCP三次握手 TCP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。在數(shù)據(jù)傳輸之前,T
    的頭像 發(fā)表于 01-03 17:35 ?385次閱讀

    TCP三次握手安全性分析

    TCP(傳輸控制協(xié)議)的三次握手是建立可靠連接的重要機(jī)制,它確保了通信雙方在數(shù)據(jù)傳輸前的連接狀態(tài)是可靠和準(zhǔn)確的。然而,從安全性的角度來(lái)分析,TCP
    的頭像 發(fā)表于 01-03 18:10 ?497次閱讀

    TCP三次握手的網(wǎng)絡(luò)抓包分析

    在計(jì)算機(jī)網(wǎng)絡(luò)中,TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。TCP通過(guò)三次握手過(guò)程建立兩個(gè)通信實(shí)體之間的連接,確保數(shù)據(jù)傳輸?shù)目煽啃院晚樞蛐浴?
    的頭像 發(fā)表于 01-06 09:05 ?189次閱讀

    TCP三次握手與連接建立的關(guān)系

    在計(jì)算機(jī)網(wǎng)絡(luò)中,TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它負(fù)責(zé)在兩個(gè)主機(jī)之間建立、維護(hù)和終止連接,確保數(shù)據(jù)的可靠傳輸。TCP連接的建立過(guò)程是通過(guò)三次握手
    的頭像 發(fā)表于 01-06 09:09 ?196次閱讀

    TCP三次握手的常見(jiàn)問(wèn)題及解決方案

    TCP三次握手(Three-way Handshake)是TCP(傳輸控制協(xié)議)建立連接時(shí)的一個(gè)過(guò)程,它確保了兩個(gè)端點(diǎn)在開(kāi)始通信之前都準(zhǔn)備好了。這個(gè)過(guò)程包括
    的頭像 發(fā)表于 01-06 09:11 ?268次閱讀

    TCP三次握手與負(fù)載均衡的配置

    在計(jì)算機(jī)網(wǎng)絡(luò)中,TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它通過(guò)三次握手(Three-way Handshake)建立連接,確保數(shù)據(jù)的可靠傳輸。而負(fù)載均衡(Load
    的頭像 發(fā)表于 01-06 09:15 ?195次閱讀

    如何監(jiān)測(cè)TCP三次握手過(guò)程

    在計(jì)算機(jī)網(wǎng)絡(luò)中,傳輸控制協(xié)議(TCP)是確保數(shù)據(jù)可靠傳輸?shù)年P(guān)鍵協(xié)議之一。TCP通過(guò)三次握手過(guò)程來(lái)建立兩個(gè)端點(diǎn)之間的連接,這個(gè)過(guò)程對(duì)于網(wǎng)絡(luò)通信的穩(wěn)定性和安全性至關(guān)重要。
    的頭像 發(fā)表于 01-06 09:20 ?184次閱讀