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

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

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

淺析C++基礎(chǔ)語法梳理之計(jì)算機(jī)網(wǎng)絡(luò)中傳輸管理(TCP)

C語言編程學(xué)習(xí)基地 ? 來源:C語言編程學(xué)習(xí)基地 ? 作者: C語言編程 ? 2021-10-26 10:17 ? 次閱讀

TCP 傳輸連接管理

因?yàn)?TCP 三次握手建立連接、四次揮手釋放連接很重要,所以附上《計(jì)算機(jī)網(wǎng)絡(luò)(第 7 版)-謝希仁》書中對此章的詳細(xì)描述:https://gitee.com/huihut/interview/raw/master/images/TCP-transport-connection-management.png

TCP 三次握手建立連接

2298daea-357f-11ec-82a8-dac502259ad0.png

【TCP 建立連接全過程解釋】

客戶端發(fā)送 SYN 給服務(wù)器,說明客戶端請求建立連接;

服務(wù)端收到客戶端發(fā)的 SYN,并回復(fù) SYN+ACK 給客戶端(同意建立連接);

客戶端收到服務(wù)端的 SYN+ACK 后,回復(fù) ACK 給服務(wù)端(表示客戶端收到了服務(wù)端發(fā)的同意報文);

服務(wù)端收到客戶端的 ACK,連接已建立,可以數(shù)據(jù)傳輸。

TCP 為什么要進(jìn)行三次握手?

【答案一】因?yàn)樾诺啦豢煽?,?TCP 想在不可靠信道上建立可靠地傳輸,那么三次通信是理論上的最小值。(而 UDP 則不需建立可靠傳輸,因此 UDP 不需要三次握手。)

【答案二】因?yàn)殡p方都需要確認(rèn)對方收到了自己發(fā)送的序列號,確認(rèn)過程最少要進(jìn)行三次通信。

【答案三】為了防止已失效的連接請求報文段突然又傳送到了服務(wù)端,因而產(chǎn)生錯誤。

TCP 四次揮手釋放連接

2303d3b8-357f-11ec-82a8-dac502259ad0.png

【TCP 釋放連接全過程解釋】

客戶端發(fā)送 FIN 給服務(wù)器,說明客戶端不必發(fā)送數(shù)據(jù)給服務(wù)器了(請求釋放從客戶端到服務(wù)器的連接);

服務(wù)器接收到客戶端發(fā)的 FIN,并回復(fù) ACK 給客戶端(同意釋放從客戶端到服務(wù)器的連接);

客戶端收到服務(wù)端回復(fù)的 ACK,此時從客戶端到服務(wù)器的連接已釋放(但服務(wù)端到客戶端的連接還未釋放,并且客戶端還可以接收數(shù)據(jù));

服務(wù)端繼續(xù)發(fā)送之前沒發(fā)完的數(shù)據(jù)給客戶端;

服務(wù)端發(fā)送 FIN+ACK 給客戶端,說明服務(wù)端發(fā)送完了數(shù)據(jù)(請求釋放從服務(wù)端到客戶端的連接,就算沒收到客戶端的回復(fù),過段時間也會自動釋放);

客戶端收到服務(wù)端的 FIN+ACK,并回復(fù) ACK 給客戶端(同意釋放從服務(wù)端到客戶端的連接);

服務(wù)端收到客戶端的 ACK 后,釋放從服務(wù)端到客戶端的連接。

TCP 為什么要進(jìn)行四次揮手?

【問題一】TCP 為什么要進(jìn)行四次揮手?/ 為什么 TCP 建立連接需要三次,而釋放連接則需要四次?

【答案一】因?yàn)?TCP 是全雙工模式,客戶端請求關(guān)閉連接后,客戶端向服務(wù)端的連接關(guān)閉(一二次揮手),服務(wù)端繼續(xù)傳輸之前沒傳完的數(shù)據(jù)給客戶端(數(shù)據(jù)傳輸),服務(wù)端向客戶端的連接關(guān)閉(三四次揮手)。所以 TCP 釋放連接時服務(wù)器的 ACK 和 FIN 是分開發(fā)送的(中間隔著數(shù)據(jù)傳輸),而 TCP 建立連接時服務(wù)器的 ACK 和 SYN 是一起發(fā)送的(第二次握手),所以 TCP 建立連接需要三次,而釋放連接則需要四次。

【問題二】為什么 TCP 連接時可以 ACK 和 SYN 一起發(fā)送,而釋放時則 ACK 和 FIN 分開發(fā)送呢?(ACK 和 FIN 分開是指第二次和第三次揮手)

【答案二】因?yàn)榭蛻舳苏埱筢尫艜r,服務(wù)器可能還有數(shù)據(jù)需要傳輸給客戶端,因此服務(wù)端要先響應(yīng)客戶端 FIN 請求(服務(wù)端發(fā)送 ACK),然后數(shù)據(jù)傳輸,傳輸完成后,服務(wù)端再提出 FIN 請求(服務(wù)端發(fā)送 FIN);而連接時則沒有中間的數(shù)據(jù)傳輸,因此連接時可以 ACK 和 SYN 一起發(fā)送。

【問題三】為什么客戶端釋放最后需要 TIME-WAIT 等待 2MSL 呢?

【答案三】

(1)為了保證客戶端發(fā)送的最后一個 ACK 報文能夠到達(dá)服務(wù)端。若未成功到達(dá),則服務(wù)端超時重傳 FIN+ACK 報文段,客戶端再重傳 ACK,并重新計(jì)時。

(2)防止已失效的連接請求報文段出現(xiàn)在本連接中。TIME-WAIT 持續(xù) 2MSL 可使本連接持續(xù)的時間內(nèi)所產(chǎn)生的所有報文段都從網(wǎng)絡(luò)中消失,這樣可使下次連接中不會出現(xiàn)舊的連接報文段。

TCP 有限狀態(tài)機(jī)

TCP 有限狀態(tài)機(jī)圖片

23806d6a-357f-11ec-82a8-dac502259ad0.png

今天的分享就到這里了,大家要好好學(xué)C++喲~

編輯:jq

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

    關(guān)注

    8

    文章

    1324

    瀏覽量

    78759
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2085

    瀏覽量

    73304
  • 服務(wù)端
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    6947

原文標(biāo)題:C++基礎(chǔ)語法梳理:計(jì)算機(jī)網(wǎng)絡(luò)丨傳輸管理(TCP)

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)服務(wù)器晶振SG3225HBN(X1G005141000500)

    計(jì)算機(jī)網(wǎng)絡(luò)服務(wù)器,穩(wěn)定和高性能的時鐘源對于數(shù)據(jù)處理和網(wǎng)絡(luò)通信的準(zhǔn)確性至關(guān)重要,SG3225HBN晶振(型號X1G005141000500)憑借其高頻率穩(wěn)定性、低相位噪聲、高抗干擾能力以及
    發(fā)表于 09-05 10:05 ?0次下載

    計(jì)算機(jī)網(wǎng)絡(luò)中常見的默認(rèn)端口號及其用途

    網(wǎng)絡(luò)工程領(lǐng)域,了解和掌握默認(rèn)端口號是至關(guān)重要的。端口號是計(jì)算機(jī)網(wǎng)絡(luò)中最基本的概念之一,用于標(biāo)識特定的網(wǎng)絡(luò)服務(wù)或應(yīng)用程序。本文將詳細(xì)介紹常見的默認(rèn)端口號及其用途,幫助網(wǎng)絡(luò)工程師更好地理
    的頭像 發(fā)表于 08-13 16:33 ?482次閱讀

    一文了解TCP/IP協(xié)議

    TCP/IP協(xié)議是現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)通信的基礎(chǔ),是互聯(lián)網(wǎng)及局域網(wǎng)廣泛使用的一套協(xié)議。TCP/IP協(xié)議集包括許多協(xié)議,其中最重要的是傳輸控制協(xié)議(TCP
    的頭像 發(fā)表于 08-07 15:38 ?376次閱讀
    一文了解<b class='flag-5'>TCP</b>/IP協(xié)議

    計(jì)算機(jī)網(wǎng)絡(luò)的三種通信方式

    計(jì)算機(jī)網(wǎng)絡(luò)的三種通信方式,即單工通信、半雙工通信和全雙工通信,是理解和設(shè)計(jì)高效網(wǎng)絡(luò)架構(gòu)的基礎(chǔ)。每種通信方式都有其獨(dú)特的特性、應(yīng)用場景及優(yōu)缺點(diǎn)。以下是對這三種通信方式的詳細(xì)分析,旨在提供深入的理解。
    的頭像 發(fā)表于 08-07 15:00 ?841次閱讀

    什么是計(jì)算機(jī)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)?主要的拓?fù)浣Y(jié)構(gòu)有哪些?

    計(jì)算機(jī)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)是指計(jì)算機(jī)網(wǎng)絡(luò)各個節(jié)點(diǎn)(包括計(jì)算機(jī)、服務(wù)器、路由器等)之間連接的方式和形式。拓?fù)浣Y(jié)構(gòu)可以影響到網(wǎng)絡(luò)的性能、可靠性和擴(kuò)展
    的頭像 發(fā)表于 01-31 10:40 ?1341次閱讀

    計(jì)算機(jī)網(wǎng)絡(luò)路由器和交換機(jī)的區(qū)別

    計(jì)算機(jī)網(wǎng)絡(luò),路由器和交換機(jī)是兩種常用的網(wǎng)絡(luò)設(shè)備,它們在網(wǎng)絡(luò)起著重要的作用。雖然它們的功能有一些重疊,但也存在一些關(guān)鍵的區(qū)別。本文將詳細(xì)介
    的頭像 發(fā)表于 01-14 11:28 ?799次閱讀

    電話交換機(jī)和計(jì)算機(jī)網(wǎng)絡(luò)交換機(jī)的區(qū)別是什么呢?

    語音信號,實(shí)現(xiàn)電話系統(tǒng)的連接和通信控制。它能夠?qū)㈦娫捫盘枏囊粭l線路傳輸到另一條線路,實(shí)現(xiàn)電話用戶之間的互聯(lián)互通,并提供基本的電話通信功能。 計(jì)算機(jī)網(wǎng)絡(luò)交換機(jī)是一種專門用于局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)的數(shù)據(jù)交換設(shè)備。它通
    的頭像 發(fā)表于 01-09 11:29 ?1104次閱讀

    東莞計(jì)算機(jī)網(wǎng)絡(luò)工程包括哪些?

    計(jì)算機(jī)網(wǎng)絡(luò)工程是指設(shè)計(jì)、建立和管理計(jì)算機(jī)與設(shè)備之間的連接和通信系統(tǒng)的過程。網(wǎng)絡(luò)工程包括哪些內(nèi)容呢?廣東東莞網(wǎng)絡(luò)工程公司表示它涵蓋了網(wǎng)絡(luò)規(guī)劃、
    的頭像 發(fā)表于 12-27 17:47 ?568次閱讀

    計(jì)算機(jī)網(wǎng)絡(luò)的通信子網(wǎng)主要有哪些功能?

    計(jì)算機(jī)網(wǎng)絡(luò)的通信子網(wǎng)主要負(fù)責(zé)數(shù)據(jù)的傳輸、處理、轉(zhuǎn)換和交換,以及提供相關(guān)的網(wǎng)絡(luò)控制協(xié)議、通信控制軟件和通信設(shè)備等功能,同時還對網(wǎng)絡(luò)進(jìn)行
    的頭像 發(fā)表于 12-15 17:27 ?1283次閱讀

    通信子網(wǎng)在計(jì)算機(jī)網(wǎng)絡(luò)的地位和作用

    通信子網(wǎng)在計(jì)算機(jī)網(wǎng)絡(luò)扮演著至關(guān)重要的角色。它是實(shí)現(xiàn)網(wǎng)絡(luò)內(nèi)和網(wǎng)絡(luò)間數(shù)據(jù)通信的關(guān)鍵基礎(chǔ)設(shè)施,為上層應(yīng)用提供了通用的通信接口和協(xié)議。同時,它也是促進(jìn)信息交流和知識共享的重要平臺。未來,隨著
    的頭像 發(fā)表于 12-15 17:15 ?596次閱讀

    如何選擇傳輸層協(xié)議?TCP和UDP的優(yōu)缺點(diǎn)和適用場合

    如何選擇傳輸層協(xié)議?TCP和UDP的優(yōu)缺點(diǎn)和適用場合? 傳輸層協(xié)議是計(jì)算機(jī)網(wǎng)絡(luò)的重要組成部分,它負(fù)責(zé)在主機(jī)之間
    的頭像 發(fā)表于 12-11 11:42 ?801次閱讀

    計(jì)算機(jī)網(wǎng)絡(luò)的通信子網(wǎng):架構(gòu)、協(xié)議與技術(shù)簡介

    計(jì)算機(jī)網(wǎng)絡(luò),通信子網(wǎng)是負(fù)責(zé)實(shí)現(xiàn)主機(jī)之間以及主機(jī)與終端之間數(shù)據(jù)傳輸的核心部分。它由一系列硬件設(shè)備和通信協(xié)議組成,為上層應(yīng)用提供可靠、高效和透明的數(shù)據(jù)傳輸服務(wù)。本文將詳細(xì)介紹通信子網(wǎng)的
    的頭像 發(fā)表于 12-07 17:42 ?831次閱讀

    計(jì)算機(jī)網(wǎng)絡(luò)中速率和帶寬的區(qū)別

    才能達(dá)到的數(shù)據(jù)傳送的速率,然而在現(xiàn)實(shí)生活是達(dá)不到的。 帶寬,在計(jì)算機(jī)網(wǎng)絡(luò)中用來表示網(wǎng)絡(luò)的通信線路傳送數(shù)據(jù)的能力,因此網(wǎng)絡(luò)帶寬表示在單位時間內(nèi)從網(wǎng)絡(luò)
    發(fā)表于 11-27 16:29

    計(jì)算機(jī)網(wǎng)絡(luò)中速率和帶寬的區(qū)別

    才能達(dá)到的數(shù)據(jù)傳送的速率,然而在現(xiàn)實(shí)生活是達(dá)不到的。 帶寬,在計(jì)算機(jī)網(wǎng)絡(luò)中用來表示網(wǎng)絡(luò)的通信線路傳送數(shù)據(jù)的能力,因此網(wǎng)絡(luò)帶寬表示在單位時間內(nèi)從網(wǎng)絡(luò)
    發(fā)表于 11-01 15:04

    基于HK32MCU南瑞微機(jī)繼電保護(hù)器,實(shí)現(xiàn)電力系統(tǒng)計(jì)算機(jī)網(wǎng)絡(luò)控制管理

    基于HK32MCU南瑞微機(jī)繼電保護(hù)器,實(shí)現(xiàn)電力系統(tǒng)計(jì)算機(jī)網(wǎng)絡(luò)控制管理
    的頭像 發(fā)表于 10-26 17:13 ?550次閱讀
    基于HK32MCU南瑞微機(jī)繼電保護(hù)器,實(shí)現(xiàn)電力系統(tǒng)<b class='flag-5'>計(jì)算機(jī)網(wǎng)絡(luò)</b>控制<b class='flag-5'>管理</b>