色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

一文看懂TCP三次握手工作原理

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2025-01-09 10:19 ? 次閱讀

1.TCP為什么三次握手而不是兩次握手

1.防止已失效的連接請求又傳送到服務器端,因而產生錯誤。

不幸的是, 這種解釋是不準確的,TCP 采用三次握手的原因其實非常簡單, 遠沒有大部分博客所描述的那樣云山霧繞。為了實現可靠數據傳輸,TCP 協議的通信雙方, 都必須維護一個序列號, 以標識發送出去的數據包中, 哪些是已經被對方收到的。三次握手的過程即是通信雙方相互告知序列號起始值, 并確認對方已經收到了序列號起始值的必經步驟。如果只是兩次握手, 至多只有連接發起方的起始序列號能被確認, 另一方選擇的序列號則得不到確認。

507827aa-cda6-11ef-9310-92fbcf53809c.png

位碼即tcp標志位,有6種標示:

① SYN(synchronous建立聯機);

ACK(acknowledgement 確認)

③ PSH(push傳送)

④ FIN(finish結束)

RST(reset重置)

⑥ URG(urgent緊急)

Sequence number(順序號碼) //Acknowledge number(確認號碼)

第一次握手:主機A發送位碼為SYN=1,隨機產生seq number=1234567的數據包到服務器,主機B由SYN=1知道,A要求建立聯機;

第二次握手,主機B收到請求后要確認聯機信息,向A發送ack number=(主機A的seq+1),SYN=1,ACK=1,隨機產生seq number=7654321的包;

第三次握手:主機A收到后檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ACK是否為1,若正確,主機A會再發送ack number=(主機B的seq+1),ACK=1,主機B收到后確認seq值與ACK=1則連接建立成功。

sequence number:表示的是我方(發送方)這邊,這個packet的數據部分的第一位應該在整個data stream中所在的位置。(注意這里使用的是“應該”。因為對于沒有數據的傳輸,如ACK,雖然它有一個seq,但是這次傳輸在整個data stream中是不占位置的。所以下一個實際有數據的傳輸,會依舊從上一次發送ACK的數據包的seq開始)

acknowledge number:表示的是期望的對方(接收方)的下一次sequence number是多少。

注意,SYN/FIN的傳輸,雖然沒有data,但是會讓下一次傳輸的packet seq增加一,但是,ACK的傳輸,不會讓下一次的傳輸packet seq加一。

5093f7dc-cda6-11ef-9310-92fbcf53809c.png

題外話

有一位讀者關注到了三次握手中, 序列號變化的問題, 讓筆者臨時想起了曾經困擾自己的一個問題

為什么三次握手最后一次握手中, 在上面的示意圖中回復的seq = x+1 。

acknowledgement number 的作用是向對方表示,我期待收到的下一個序號。如果你向對方回復了ack = 31, 代表著你已經收到了序號截止到30的數據,期待的下一個數據起點是31 。

TCP 協議規定SYN報文雖然不攜帶數據, 但是也要消耗1個序列號, 所以前兩次握手客戶端和服務端都需要向對方回復x+1 或y+1 。

50a88544-cda6-11ef-9310-92fbcf53809c.png

50bd8cbe-cda6-11ef-9310-92fbcf53809c.png

值得注意的是, 如上圖所說, 最后一次握手在默認不攜帶數據的情況下, 由于SYN 不是1 , 是不消耗序列號的。所以三次握手結束后, 客戶端下一個發送的報文中seq 依舊是x+1, 示意圖如下

50d257b6-cda6-11ef-9310-92fbcf53809c.png

注意到, 上圖第四步發送的seq 和第三次握手的seq 是一樣的, 體現了最后一次握手, 默認不消耗序列號的特點。

四次揮手

50f39782-cda6-11ef-9310-92fbcf53809c.png

四次握手是指終止TCP連接協議時,需要在客戶端和服務器之間發送四個包

第一次揮手:主動關閉方發送第一個包,其中FIN標志位為1,發送順序號seq為X。

第二次揮手:被動關閉方收到FIN包后發送第二個包,其中發送順序號seq為Z,接收順序號ack為X+1。

第三次揮手:被動關閉方再發送第三個包,其中FIN標志位為1,發送順序號seq為Y,接收順序號ack為X。

第四次揮手:主動關閉方發送第四個包,其中發送順序號為X,接收順序號為Y。至此,完成四次揮手。

超時重傳指的是,發送數據包在一定的時間周期內沒有收到相應的ACK,等待一定的時間,超時之后就認為這個數據包丟失,就會重新發送。這個等待時間被稱為RTO.

深入討論:

1、為什么建立連接協議是三次握手,而關閉連接卻是四次握手呢?

建立連接時,ACK和SYN可以放在一個報文里來發送。而關閉連接時,被動關閉方可能還需要發送一些數據后,再發送FIN報文表示同意現在可以關閉連接了,所以它這里的ACK報文和FIN報文多數情況下都是分開發送的。

2、為什么TIME_WAIT狀態還需要等2MSL后才能返回到CLOSED狀態?

兩個存在的理由:1、無法保證最后發送的ACK報文會一定被對方收到,所以需要重發可能丟失的ACK報文。2、關閉鏈接一段時間后可能會在相同的IP地址和端口建立新的連接,為了防止舊連接的重復分組在新連接已經終止后再現。2MSL足以讓分組最多存活msl秒被丟棄。

3、為什么必須是三次握手,不能用兩次握手進行連接?

記住服務器的資源寶貴不能浪費! 如果在斷開連接后,第一次握手請求連接的包才到會使服務器打開連接,占用資源而且容易被惡意攻擊!防止攻擊的方法,縮短服務器等待時間。兩次握手容易死鎖。如果服務器的應答分組在傳輸中丟失,將不知道S建立什么樣的序列號,C認為連接還未建立成功,將忽略S發來的任何數據分組,只等待連接確認應答分組。而S在發出的分組超時后,重復發送同樣的分組。這樣就形成了死鎖。

鏈接:https://www.cnblogs.com/my-first-blog-lgz/p/14788810.html

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

    關注

    12

    文章

    9295

    瀏覽量

    85866
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1378

    瀏覽量

    79198

原文標題:深度解析TCP三次握手工作原理

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    講的TCP三次握手和四揮手

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

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

    三次而不是兩或四。 首先,我們需要了解TCP種面向連接的協議。在進行數據傳輸之前,發送端和接收端需要建立
    的頭像 發表于 02-04 11:03 ?753次閱讀

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

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

    TCP三次握手的詳細過程

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

    TCP三次握手協議的作用

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

    TCP三次握手的基本原理

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

    TCP三次握手與UDP的區別

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

    TCP三次握手安全性分析

    TCP三次握手的基本過程 TCP三次握手的過
    的頭像 發表于 01-03 18:10 ?521次閱讀

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

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

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

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

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

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

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

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

    如何監測TCP三次握手過程

    在計算機網絡中,傳輸控制協議(TCP)是確保數據可靠傳輸的關鍵協議之TCP通過三次握手過程來建立兩個端點之間的連接,這個過程對于網絡通信
    的頭像 發表于 01-06 09:20 ?198次閱讀
    主站蜘蛛池模板: 日本福利片午夜免费观着 | 少妇高潮惨叫久久久久久电影 | 漂亮的保姆3中文版完整版 漂亮的保姆3集电影免费观看中文 | 日日啪无需播放器 | 小柔的性放荡羞辱日记动漫 | jizzjizz3d动漫 | 亚洲精品视频在线播放 | 好大的太粗好深BL | 麻豆精品传媒一二三区 | 久久久久久久久久毛片精品美女 | 首页 国产 亚洲 中文字幕 | 香蕉鱼视频观看在线视频下载 | 桃花在线观看播放 | 岳打开双腿开始配合日韩视频 | 亚洲AV成人片色在线观看网站 | 久久视频这有精品63在线国产 | 99re6久久在热线视频 | 成人永久免费视频网站在线观看 | 亚洲成av人影院 | 日韩欧美视频一区二区在线观看 | 青青草国产自偷拍 | 亚洲最大日夜无码中文字幕 | 亚洲精品乱码8久久久久久日本 | 泡妞高手在都市完整版视频免费 | 午夜伦4480yy妇女久久 | 国产一区二区三区四区五在线观看 | 黑人巨摘花破女处 | YELLOW日本免费观看播放 | 国产精品女主播主要上线 | ava云直播| 精品性影院一区二区三区内射 | 久久亚洲网站 | 涩涩爱涩涩电影网站 | 夜夜骑夜夜欢 | 在线成人精品国产区免费 | 欧美特黄三级成人 | 黑人巨大两根一起挤进欧美 | 亚洲高清视频一区 | 日本亚洲精品无码区国产电影 | 任你躁精品一区二区三区 | 第一次处破女18分钟免费 |