衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

TCP三次握手詳解

冬至子 ? 來源:清菡軟件測試 ? 作者:清菡軟件測試 ? 2023-07-10 17:14 ? 次閱讀

一、舉個例子

圖片

圖片來自網絡

類比兩個人初認識的一個過程。比如一個男生初次認識一個女生,男生第一次看到這個女生就一見鐘情,想要認識女生。

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

女生回復“我收到你的消息(對收到消息的確認)。我同意跟你做朋友試試看。”這個是女生的態度。在男生發完求交往后的一個確認消息以及女生同意交往的消息。

這個是消息內容以及消息性質。男生收到女生的消息很開心,再次確認下我確實收到了你的確認消息。也知道了女生同意試試看的態度。

這樣的一個交互之后,確認消息的一個再次確認消息。

結果:確認關系了,可以正式交往了。后面再發送的消息就是他們作為男女朋友之后發的消息內容了。

二、TCP三次握手詳解

1.TCP頭部的重要字段

圖片

圖片來自網絡

tcp三次握手跟這個過程就特別像。 現在是個客戶端,這邊是個百度服務器。這個客戶端想像百度服務器去取頁面、資源。首先要發起個tcp的鏈接請求。

首先要發一條請求鏈接的消息。請求鏈接的消息里面要包括一些什么內容呢?這個需要再去詳細的看下tcp頭部了。

圖片

圖片來自網絡

要重視的是序號、確認號、6個標志位。

序號:就是tcp數據包標的編號。tcp數據包過大,tcp數據會在網絡中進行分段。

太大了在網絡中是無法傳輸的,分成一小段一小段進行傳輸。

分段,到達目的主機后進行重組。比如分成了10段,每段要按順序重組,才能組成原來一樣的數據包。如果順序錯了,數據包也不一樣了。

所以這個時候要對它進行一個編號,比如分成10段,分別是1,2,3,4....10,重組的時候,收到1的時候必須等2,收到2的時候必須等3,這個數據包依次過來依次重組,這樣保證數據能夠正確的組合起來。這個就是序號的作用。

確認號:就是確認的一個序號。當客戶端向服務器發起了一個鏈接的時候,客戶端會發起一個鏈接請求,客戶端發完鏈接請求之后,希望服務器能夠給一些回應。

比如男生給女生發請求交往的消息,內心很忐忑的希望女生也能夠回一個確認消息。確認消息里面會帶一個編號。這個編號就是這里說的確認號。

確認號存在于確認消息里面的。確認號是怎么編號的呢?序號是為了給數據包分段的時候為了方便給后面進行完整的數據重組。

確認號和序號有什么關系?確認號是依據序號來編得。

一個數據包發送過去,它的序號的編號是1。發到服務器那邊,服務器進行了一個回應,回應包也就是確認包里面有確認號。ack表示確認號。

確認號是上一個收到的包的序號加上1。表示服務器期望收到你的下一個包的序號。

6個標志位(狀態控制碼):目前只需要掌握4個,包括ACK(確認位)、RST(重置)、SYN、FIN。

標志位--信號燈,1--亮,0--滅。表示數據包的類型。標志位就是表示數據包的類型。

2.四個標志位

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

什么是確認消息?男生給女生發了一個求交往的消息,女生禮貌性的回了一個確認消息。這個就是一個確認消息,ACK這個標志位就會被置成1。

客戶端收到,就會認識這個包是個確認消息。

RST(重置):=1,表示這個消息釋放鏈接。TCP鏈接出現了錯誤--主機服務器崩潰,斷開鏈接,請重新建立鏈接。

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

2.確認接受鏈接的消息。

如果我這個消息是一個確認接受鏈接的消息,服務器這邊 收到客戶端一個發起鏈接的消息,然后我同意它發起鏈接,所以要進行一個確認。

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

FIN:終止。=1,表示發送報文結束了完畢,釋放這個鏈接。

RST是出現錯誤,不得不釋放鏈接,而FIN是用完了這個鏈接,用完了之后自然要釋放這個鏈接。FIN被置位了就表示TCP四次揮手要開始了。

不管是客戶端還是服務器收到tcp的報文,檢查標記號,標記位是什么狀態,表示當前的報文是一個什么樣的類型。

3.TCP三次握手

圖片

圖片來自網絡

客戶端要向服務器端發送一個請求鏈接的消息。標志位SYN=1,表示一個發起鏈接的消息時,這個SYN位一定置成1。

每個包都有一個序號,所以序號用seq來表示,seq=j,表示當前的序號是j。

是一個SYN包,是我要向服務器發起一個鏈接請求。這個是客戶端向服務器發起的第一個數據包。也是三次握手的第一次握手。

服務器收到了客戶端的包,服務器給客戶端回的消息是一個確認消息。

標志位:ACK位置1,表示它是一個確認消息。SYN位置1,客戶端發起鏈接,服務器確認接受鏈接的消息。

ack(確認號):根據序號來進行表示的,序號是1,確認號是1+1,表示服務器期望收到的下一個包的序號。所以確認號是j+1。

表示收到了序為j的這個包,并且希望得到下一個包的序號是j+1。

這個包,自己的序號是seq=k。

客戶端收到服務器的確認消息,需要再次給它發送一個確認消息。

這個確認消息里面,標志位里面:ACK肯定置1。也不是發起請求的一個消息,也不是確認接受請求的一個消息,所以SYN這個位置是不會被置位的。

ack(確認號)=k+1

收到序號為k的這個包,并且進行一個確認,期待下一個包的序號是k+1,到此為止就是tcp三次握手的一個完整過程。

后續才是這個基礎上的數據發送報文。

必須要建立這個三次握手的基礎上才有后續的數據發送報文。

四、總結

服務器和客戶端在握手中的狀態 :首先,三次握手之前,客戶端和服務器端都是處于關閉狀態。

然后客戶端發起了第一個SYN包,想要去跟服務器建立鏈接。

發完SYN包之后就變成syn_sent狀態,就是把syn發完了的狀態。服務器在收到syn包之前變成監聽狀態。

開始聽下誰會給我發送消息。收到客戶端的syn包之后,變成syn_Revd的狀態。

回了一個syn,ack。客戶端收到syn,ack之后變成建立鏈接的狀態,它認為我收到之后,我這個鏈接就已經建立好了。并且我給它發送了一個ack包,服務器收到ack包后也建立鏈接了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    16448

    瀏覽量

    179475
  • SYN
    SYN
    +關注

    關注

    0

    文章

    9

    瀏覽量

    8211
  • 狀態機
    +關注

    關注

    2

    文章

    492

    瀏覽量

    27649
  • RST
    RST
    +關注

    關注

    0

    文章

    31

    瀏覽量

    7425
  • TCP通信
    +關注

    關注

    0

    文章

    146

    瀏覽量

    4292
收藏 人收藏

    評論

    相關推薦

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

    如果你學過網絡基礎知識,那么你一定對TCP三次握手不陌生。今天我想用通俗的話來給大家講一講TCP三次握手
    的頭像 發表于 02-03 10:43 ?2781次閱讀
    講一講的<b class='flag-5'>TCP</b><b class='flag-5'>三次</b><b class='flag-5'>握手</b>和四<b class='flag-5'>次</b>揮手

    TCP三次握手的過程描述

    本文檔主要描述TCP三次握手的過程,一個完整的三次握手也就是 請求---應答---再次確認
    發表于 03-02 15:37 ?8次下載

    如何使用WireShark進行TCP三次握手

    WireShark是一種非常方便的網絡抓包工具,下面演示,使用WireShark來抓取TCP三次握手過程。
    的頭像 發表于 11-01 09:50 ?2199次閱讀

    說說TCP三次握手的過程?為什么是三次而不是兩、四

    說說TCP三次握手的過程?為什么是三次而不是兩、四T
    的頭像 發表于 02-04 11:03 ?773次閱讀

    簡述TCP協議的三次握手機制

    TCP(Transmission Control Protocol,傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它主要用于在IP網絡中進行數據傳輸。TCP協議的三次握手
    的頭像 發表于 08-16 10:57 ?1212次閱讀

    TCP三次握手的詳細過程

    TCP(傳輸控制協議)三次握手是一種在互聯網上建立一個可靠的、有序的和錯誤檢測能力的連接的方法。這個過程確保了兩個設備(通常是客戶端和服務器)在數據傳輸開始之前能夠相互確認對方的存在和狀態。以下
    的頭像 發表于 01-03 17:11 ?393次閱讀

    TCP三次握手協議的作用

    在計算機網絡中,數據的傳輸需要在發送方和接收方之間建立一個穩定的連接,以確保數據的完整性和順序。TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,它通過三次握手協議來建立
    的頭像 發表于 01-03 17:15 ?360次閱讀

    TCP三次握手的基本原理

    在計算機網絡中,TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它確保了數據在網絡中傳輸的可靠性和順序性。為了建立兩個網絡實體之間的通信,TCP使用一種稱為“三次
    的頭像 發表于 01-03 17:25 ?518次閱讀

    TCP三次握手與UDP的區別

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

    TCP三次握手安全性分析

    TCP(傳輸控制協議)的三次握手是建立可靠連接的重要機制,它確保了通信雙方在數據傳輸前的連接狀態是可靠和準確的。然而,從安全性的角度來分析,TCP
    的頭像 發表于 01-03 18:10 ?548次閱讀

    TCP三次握手的網絡抓包分析

    在計算機網絡中,TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。TCP通過三次握手過程建立兩個通信實體之間的連接,確保數據傳輸的可靠性和順序性。
    的頭像 發表于 01-06 09:05 ?238次閱讀

    TCP三次握手與連接建立的關系

    在計算機網絡中,TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它負責在兩個主機之間建立、維護和終止連接,確保數據的可靠傳輸。TCP連接的建立過程是通過三次握手
    的頭像 發表于 01-06 09:09 ?232次閱讀

    TCP三次握手的常見問題及解決方案

    TCP三次握手(Three-way Handshake)是TCP(傳輸控制協議)建立連接時的一個過程,它確保了兩個端點在開始通信之前都準備好了。這個過程包括
    的頭像 發表于 01-06 09:11 ?339次閱讀

    TCP三次握手與負載均衡的配置

    在計算機網絡中,TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它通過三次握手(Three-way Handshake)建立連接,確保數據的可靠傳輸。而負載均衡(Load
    的頭像 發表于 01-06 09:15 ?233次閱讀

    如何監測TCP三次握手過程

    在計算機網絡中,傳輸控制協議(TCP)是確保數據可靠傳輸的關鍵協議之一。TCP通過三次握手過程來建立兩個端點之間的連接,這個過程對于網絡通信的穩定性和安全性至關重要。
    的頭像 發表于 01-06 09:20 ?218次閱讀
    百家乐好赌吗| 百家乐官网二号博彩正网| 百家乐官网视频麻将下载| KTV百家乐官网的玩法技巧和规则 王子百家乐官网的玩法技巧和规则 | 大发888游戏平台46| 游戏机百家乐官网下载| 德州扑克游戏| 淮南市| 百家乐官网技巧网址| 百家乐冼牌机| 赌博百家乐官网赢不了| 24山灶位吉凶歌| 澳门百家乐怎么下载| 百家乐官网真钱路怎么看| 百家乐虚拟视频| 大发888破解| 百家乐官网视频游戏会员| 南京百家乐的玩法技巧和规则| 蒙城县| 威尼斯人娱乐代理注| 百家乐官网唯一能长期赢钱的方法| 瑞丽市| 凯斯网百家乐官网的玩法技巧和规则 | 宝马百家乐的玩法技巧和规则| 亚洲百家乐官网博彩的玩法技巧和规则 | 平台百家乐的区别| 豪华百家乐官网人桌| 精英娱乐城开户| 百家乐图形的秘密破解| 百家乐赌博现金网| 百家乐官网六合彩| 正网皇冠开户| 网络博彩| 百家乐智能软件| 百家乐代理博彩正网| 真人百家乐官网是啥游戏| 百家乐号破| 8运24山风水图解| 赌场百家乐官网的玩法技巧和规则 | 百家乐官网免费路单| 克拉克百家乐试玩|