在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

TCP傳輸流量控制和擁塞避免方案

454398 ? 來(lái)源:博客園 ? 作者: lingjiango ? 2020-10-29 11:17 ? 次閱讀

先來(lái)了解2個(gè)TCP的概念:

MSS:Maximum Segment Size,TCP一次傳輸發(fā)送的最大數(shù)據(jù)段長(zhǎng)度。

RTT:Round-Trip Time,往返時(shí)延,表示從發(fā)送端發(fā)送數(shù)據(jù)開(kāi)始,到發(fā)送端收到來(lái)自接收端的確認(rèn)(接收端收到數(shù)據(jù)后便立即發(fā)送確認(rèn)),總共經(jīng)歷的時(shí)延。

TCP傳輸大塊數(shù)據(jù)時(shí),肯定需要進(jìn)行數(shù)據(jù)分段,而每個(gè)分段所能攜帶的最大數(shù)據(jù)就是1個(gè)MSS,假設(shè)大塊數(shù)據(jù)為100個(gè)MSS,那么發(fā)送方發(fā)送的方式大概有如下兩種:

1、 每次發(fā)送1個(gè),收到接收方確認(rèn)后,才發(fā)送下1個(gè);

2、 一口氣發(fā)送100個(gè),然后收到對(duì)方一起確認(rèn);

顯然,方式1中,一個(gè)RTT只能處理一個(gè)包,這樣的傳輸效率太低了。而方式2看似很美好,實(shí)際會(huì)存在兩個(gè)問(wèn)題,一個(gè)是接收方的接收窗口未必能一次性接收這么多數(shù)據(jù),另外一個(gè)是網(wǎng)絡(luò)的帶寬也不一定足夠大,容易出現(xiàn)丟包事故。前一個(gè)問(wèn)題就是標(biāo)題中的流量控制(Flow control),TCP采用的是滑動(dòng)窗口機(jī)制(Sliding window),后一個(gè)問(wèn)題就是標(biāo)題中的擁塞控制(Congestion control)。發(fā)送方的發(fā)送窗口或者說(shuō)網(wǎng)絡(luò)傳輸交互就取決于這兩個(gè)問(wèn)題的控制,誰(shuí)控制的更嚴(yán)格,誰(shuí)就占據(jù)了決定性因素,這也是為什么兩者總是一起出現(xiàn)一起被討論。

流量控制(Flow control):

TCP uses an end-to-end flow control protocol to avoid having the sender send data too fast for the TCP receiver to receive and process it reliably. Having a mechanism for flow control is essential in an environment where machines of diverse network speeds communicate.

TCP使用端到端流量控制協(xié)議來(lái)避免發(fā)送方發(fā)送數(shù)據(jù)太快,以致TCP接收方不能可靠地接收和處理數(shù)據(jù)。在不同網(wǎng)絡(luò)速度的機(jī)器進(jìn)行通信的環(huán)境中,具有流量控制機(jī)制至關(guān)重要。

圖一

圖一為通過(guò)Wireshark抓包192.168.2.1和192.168.2.198的交互截圖,可以看到有個(gè)標(biāo)記Win,這個(gè)標(biāo)記的含義就是接收端告訴發(fā)送端自己還有多少緩沖區(qū)可以接收數(shù)據(jù)。于是發(fā)送端就可以根據(jù)這個(gè)接收端的處理能力來(lái)發(fā)送數(shù)據(jù),而不會(huì)導(dǎo)致接收端處理不過(guò)來(lái)。

[TCP zerowindow]& [TCP window Full]

提到Win標(biāo)記,就順便談一下Wireshark的[TCP zerowindow]和[TCP window Full],當(dāng)Win=0時(shí),Wireshark就會(huì)打上TCP zerowindow,表示緩存區(qū)已滿,不能再接收數(shù)據(jù)了。當(dāng)Wireshark在一個(gè)包上打上TCP window Full,就表示這個(gè)包的發(fā)送方已經(jīng)把對(duì)方聲明的接收窗口耗盡了。兩者的共同特點(diǎn)都是傳輸暫停,前者的含義是發(fā)送方無(wú)法再接收數(shù)據(jù),后者表示發(fā)送方無(wú)法再發(fā)送數(shù)據(jù)。

回過(guò)頭來(lái)再來(lái)說(shuō)滑動(dòng)窗口。

圖二截取自《TCP/IP詳解》

圖三取自參考資料

圖四取自參考資料

圖二和圖三可以知道接收方會(huì)通知發(fā)送方當(dāng)前已接收到的信息和可用窗口信息。

圖三和圖四可以看出來(lái)窗口滑動(dòng)的過(guò)程。

總結(jié):TCP的流量控制由滑動(dòng)窗口來(lái)實(shí)現(xiàn)的,滑動(dòng)窗口控制流量取決于接收方的窗口大小。

擁塞控制(Congestion control):

流量控制是端到端的交互,如果只是局域網(wǎng)內(nèi)的兩臺(tái)設(shè)備交互,我想通過(guò)滑動(dòng)窗口大概能控制得不差,但是實(shí)際網(wǎng)絡(luò)的情況非常復(fù)雜,發(fā)送方和接收方之間還有路由器和交換機(jī),網(wǎng)絡(luò)傳輸線路又復(fù)雜,這個(gè)時(shí)候就需要擁塞控制。

擁塞控制主要有四個(gè)算法慢啟動(dòng)、擁塞避免、快速重傳和快速恢復(fù)。

慢啟動(dòng):

討論慢啟動(dòng)算法先來(lái)了解下?lián)砣翱诘母拍睿@是慢啟動(dòng)算法為T(mén)CP發(fā)送方新增的窗口,congestion window,簡(jiǎn)稱cwnd。對(duì)應(yīng)上文,發(fā)送方取擁塞窗口和滑動(dòng)窗口的最小值作為發(fā)送上限,即誰(shuí)嚴(yán)格誰(shuí)起決定因素。

1、 連接建立開(kāi)始,發(fā)送方不了解網(wǎng)絡(luò)的情況,cwnd初始化比較小的值,RFC建議2-4個(gè)MSS,具體視MSS的大小而定;

If (MSS <= 1095 bytes)

then win <= 4 * MSS;

If (1095 bytes < MSS < 2190 bytes)

then win <= 4380;

If (2190 bytes <= MSS)

then win <= 2 * MSS; 摘自rfc3390.

2、 如果發(fā)送出去的包都被ACK,說(shuō)明還未到達(dá)擁塞點(diǎn),則增加擁塞窗口,RFC建議的是每收到n個(gè)ACK,則cwnd新增n個(gè)MSS,呈指數(shù)關(guān)系增長(zhǎng),雖然這個(gè)過(guò)程看似比較快,但是基數(shù)比較低,所以被稱為“慢啟動(dòng)”。

擁塞避免:

其實(shí)慢啟動(dòng)除了維護(hù)了cwnd,還維護(hù)了慢啟動(dòng)臨界值ssthresh,一般將ssthresh設(shè)置為65535字節(jié)。在cwnd<=ssthresh時(shí),還是處于慢啟動(dòng)環(huán)節(jié),一旦>ssthresh,開(kāi)始進(jìn)入擁塞避免。

RFC建議擁塞避免環(huán)節(jié),無(wú)論一個(gè)RTT可以收到多少個(gè)ACK,每一次確認(rèn)都只新增1個(gè)MSS,呈線性關(guān)系增長(zhǎng),避免快速的觸碰到網(wǎng)絡(luò)擁塞點(diǎn)。

圖五取自參考資料

快速重傳和快速恢復(fù):

進(jìn)入擁塞避免之后,最終還是會(huì)碰到擁塞點(diǎn),發(fā)送方此時(shí)遲遲得不到確認(rèn),當(dāng)然得不到確認(rèn)也有可能是因?yàn)檠舆t確認(rèn)導(dǎo)致的。發(fā)送方此時(shí)決定等待一段時(shí)間,如果一段時(shí)間后還是得不到確認(rèn),就發(fā)起重傳,這個(gè)過(guò)程叫做超時(shí)重傳。從發(fā)出原始包到重傳該包的時(shí)間叫做RTO(Retransmission TimeOut)。

進(jìn)入超時(shí)重傳后,RFC建議將cwnd設(shè)置為1個(gè)MSS,而對(duì)于ssthresh,RFC5681建議的是發(fā)生擁塞時(shí)未被ACK的數(shù)據(jù)量的1/2,但必須大于等于2個(gè)MSS。然后重新進(jìn)入慢啟動(dòng)環(huán)節(jié)。超時(shí)重傳因?yàn)樾枰却齊TO之后才能進(jìn)入新的恢復(fù)環(huán)節(jié),所以對(duì)網(wǎng)絡(luò)性能的影響是比較大的。所以各路大神又想到了一個(gè)新的方式,看能否無(wú)需等待RTO,就發(fā)起重傳,這種方式叫做快速重傳。快速重傳規(guī)定在收到3個(gè)及以上重復(fù)ACK時(shí)就觸發(fā)重傳,不再進(jìn)入慢啟動(dòng)環(huán)節(jié),然后直接進(jìn)入擁塞避免,這個(gè)就是快速恢復(fù)算法。為什么是3個(gè)?因?yàn)?-2個(gè)重復(fù)ACK,很有可能是亂序,只有在3個(gè)及以上的時(shí)候才是有可能丟包了。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1398

    瀏覽量

    80445
  • 網(wǎng)絡(luò)傳輸
    +關(guān)注

    關(guān)注

    0

    文章

    143

    瀏覽量

    17910
  • 擁塞
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    9529
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    信而泰PFC/ECN流量測(cè)試方案:打造智能無(wú)損網(wǎng)絡(luò)的關(guān)鍵利器

    導(dǎo)語(yǔ):AI算力爆發(fā)的背后,如何保障網(wǎng)絡(luò)“零丟包”? 在當(dāng)今數(shù)據(jù)中心網(wǎng)絡(luò)中,隨著AI、高性能計(jì)算(HPC)和分布式存儲(chǔ)等應(yīng)用的飛速發(fā)展,網(wǎng)絡(luò)的無(wú)損傳輸能力變得至關(guān)重要。PFC(基于優(yōu)先級(jí)的流量控制
    的頭像 發(fā)表于 03-13 09:53 ?404次閱讀
    信而泰PFC/ECN<b class='flag-5'>流量</b>測(cè)試<b class='flag-5'>方案</b>:打造智能無(wú)損網(wǎng)絡(luò)的關(guān)鍵利器

    智能流量控制器產(chǎn)品說(shuō)明書(shū)

    FS0021 系列智能流量控制器用于流量控制和調(diào)節(jié),由超聲波流量計(jì)、無(wú)極變速球閥、 顯示屏和主控模塊組成。根據(jù)用戶所需流速,由超聲波流量計(jì)實(shí)時(shí)反饋數(shù)據(jù),對(duì)球閥進(jìn)行快 速調(diào)節(jié),實(shí)現(xiàn)按需求
    發(fā)表于 02-27 13:55 ?0次下載

    TCP協(xié)議的性能測(cè)試與評(píng)估方法

    的、基于字節(jié)流的傳輸層通信協(xié)議。它通過(guò)三次握手建立連接,使用序列號(hào)和確認(rèn)應(yīng)答機(jī)制保證數(shù)據(jù)的有序傳輸,并通過(guò)滑動(dòng)窗口機(jī)制控制數(shù)據(jù)流量,以避免網(wǎng)
    的頭像 發(fā)表于 01-22 10:03 ?1248次閱讀

    TCP協(xié)議的安全性分析

    使用確認(rèn)機(jī)制來(lái)確保數(shù)據(jù)段被正確接收。如果一個(gè)段丟失,發(fā)送方將重新發(fā)送該段。 流量控制TCP使用窗口大小來(lái)控制發(fā)送方發(fā)送數(shù)據(jù)的速率,以避免接收方被過(guò)多的數(shù)據(jù)淹沒(méi)。
    的頭像 發(fā)表于 01-22 09:48 ?566次閱讀

    什么是TCP協(xié)議及其工作原理

    協(xié)議之一。它提供了一種可靠的、有序的、基于字節(jié)流的數(shù)據(jù)傳輸服務(wù)。TCP協(xié)議的主要特點(diǎn)包括: 面向連接 :在數(shù)據(jù)傳輸之前,TCP需要在通信雙方之間建立一個(gè)連接。 可靠
    的頭像 發(fā)表于 01-22 09:41 ?988次閱讀

    AI模型部署邊緣設(shè)備的奇妙之旅:邊緣端設(shè)備的局域網(wǎng)視頻流傳輸方案

    擁塞控制TCP還包含了一系列算法來(lái)避免網(wǎng)絡(luò)擁堵,例如慢啟動(dòng)、擁塞避免、快重傳和快恢復(fù)等。
    發(fā)表于 01-04 14:32

    TCP-UART數(shù)據(jù)透?jìng)骷夹g(shù),居然如此簡(jiǎn)單!

    連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它主要用于在不可靠的網(wǎng)絡(luò)環(huán)境中提供穩(wěn)定的數(shù)據(jù)傳輸服務(wù),確保數(shù)據(jù)能夠按照順序、無(wú)錯(cuò)誤地到達(dá)接收端。 TCP通過(guò)三次握手建立連接,使用滑動(dòng)窗口進(jìn)行流量控
    的頭像 發(fā)表于 12-30 16:46 ?560次閱讀
    <b class='flag-5'>TCP</b>-UART數(shù)據(jù)透?jìng)骷夹g(shù),居然如此簡(jiǎn)單!

    TCP-UART透?jìng)魇纠齸看完就會(huì)源碼開(kāi)放!

    連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它主要用于在不可靠的網(wǎng)絡(luò)環(huán)境中提供穩(wěn)定的數(shù)據(jù)傳輸服務(wù),確保數(shù)據(jù)能夠按照順序、無(wú)錯(cuò)誤地到達(dá)接收端。 TCP通過(guò)三次握手建立連接,使用滑動(dòng)窗口進(jìn)行流量控
    的頭像 發(fā)表于 12-30 16:43 ?566次閱讀
    <b class='flag-5'>TCP</b>-UART透?jìng)魇纠齸看完就會(huì)源碼開(kāi)放!

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-

    還是猶如沒(méi)有任何間隔的數(shù)據(jù)流發(fā)送給接收端。TCP 為提供可靠性傳輸,實(shí)行“順序控制”或“重發(fā)控制”機(jī)制。此外還具備“流控制
    發(fā)表于 11-11 14:17

    飛凌嵌入式ElfBoard ELF 1板卡-網(wǎng)絡(luò)編程示例之網(wǎng)絡(luò)基礎(chǔ)知識(shí)

    還是猶如沒(méi)有任何間隔的數(shù)據(jù)流發(fā)送給接收端。TCP 為提供可靠性傳輸,實(shí)行“順序控制”或“重發(fā)控制”機(jī)制。此外還具備“流控制
    發(fā)表于 11-09 14:37

    Air780E之TCP應(yīng)用,你了解嗎?

    的數(shù)據(jù)傳輸服務(wù),確保數(shù)據(jù)能夠按照順序、無(wú)錯(cuò)誤地到達(dá)接收端。TCP通過(guò)三次握手建立連接,使用滑動(dòng)窗口進(jìn)行流量控制,以及通過(guò)校驗(yàn)和、確認(rèn)應(yīng)答、超時(shí)重傳等機(jī)制來(lái)保證數(shù)據(jù)的可靠性。它是互聯(lián)網(wǎng)協(xié)議套件(
    的頭像 發(fā)表于 11-04 14:30 ?567次閱讀
    Air780E之<b class='flag-5'>TCP</b>應(yīng)用,你了解嗎?

    質(zhì)量流量控制器在生物發(fā)酵行業(yè)的應(yīng)用

    氣體質(zhì)量流量控制器在工業(yè)中應(yīng)用廣泛,尤其對(duì)氣體流量要求高的行業(yè)至關(guān)重要。愛(ài)拓利MFC300 MFC330系列能精確調(diào)節(jié)生物發(fā)酵過(guò)程中的氣體,提升生產(chǎn)效率和產(chǎn)品質(zhì)量,廣泛應(yīng)用于生物發(fā)酵行業(yè)。 氣體
    的頭像 發(fā)表于 10-08 15:39 ?412次閱讀

    氣體質(zhì)量流量控制

    ? ? ?? 氣體質(zhì)量流量控制器 (MFC)的由來(lái) ?主要源于工業(yè)過(guò)程中對(duì)氣體流量精確控制和測(cè)量的需求。隨著工業(yè)技術(shù)的發(fā)展,特別是在石油化工、冶金、制藥等行業(yè),對(duì)氣體流量的精確
    的頭像 發(fā)表于 09-24 10:36 ?929次閱讀
    氣體質(zhì)量<b class='flag-5'>流量控制</b>器

    流量控制器在風(fēng)力發(fā)電場(chǎng)中的風(fēng)速調(diào)節(jié)與發(fā)電效率優(yōu)化技術(shù)研究

    在風(fēng)力發(fā)電場(chǎng)中,流量控制器是一種關(guān)鍵的技術(shù),用于優(yōu)化風(fēng)機(jī)的運(yùn)行,提高發(fā)電效率。流量控制器通過(guò)調(diào)節(jié)風(fēng)機(jī)葉片的角度或者其他參數(shù),使得風(fēng)機(jī)能夠在不同風(fēng)速條件下保持最佳的運(yùn)行狀態(tài),從而提高發(fā)電效率和風(fēng)
    的頭像 發(fā)表于 08-01 15:32 ?600次閱讀

    如何使用AT指令集實(shí)現(xiàn)硬件流量控制

    我嘗試使用 AT 指令集實(shí)現(xiàn)硬件流量控制。我已將主機(jī)控制器連接到 ESP8266 12S。 引腳 13 似乎一切正常,但引腳 15 看起來(lái)像是被拉下來(lái)并且永遠(yuǎn)不會(huì)改變它的狀態(tài),我無(wú)法
    發(fā)表于 07-16 07:23
    主站蜘蛛池模板: 美女黄色毛片 | 精品香港经典三级在线看 | 午夜dy888理论在线播放 | 四虎影院www | 欧美成人全部费免网站 | 日本一视频一区视频二区 | 日本高清视频成人网www | 亚洲福利秒拍一区二区 | 18满xo影院视频免费体验区 | 我想看一级播放片一级的 | 一级毛片 在线播放 | 成人观看网站a | 国产免费成人在线视频 | 久青草视频免费视频播放线路1 | 亚洲精品国产自在久久出水 | 午夜影院免费在线观看 | 久久999 | 色网站在线视频 | 夜夜操操| 久久国产精品自在自线 | 亚洲黄色官网 | 韩国理伦片在线观看2828 | 米奇777色狠狠8888影视 | 国产呦系列呦交 | 亚洲精品456人成在线 | 日本视频www色 | 综合激情在线 | 狠狠色噜噜狠狠狠狠999米奇 | 中国一级黄色毛片 | 天天综合天天做天天综合 | 日本a级影院 | 欧美一级日韩一级亚洲一级 | 成人三级电影在线观看 | 一级片a | 美女天天操 | 色多多免费在线观看 | 成人亚洲欧美在线电影www色 | 国产亚洲一区二区在线观看 | 曰本裸色私人影院噜噜噜影院 | 亚洲精品视频免费 | 超h 高h 污肉男男 |