擁塞控制和流量控制

滑動(dòng)窗口的解釋:

答案截圖備份

擁塞控制窗口+慢啟動(dòng)+擁塞控制算法=擁塞控制

TCP特性使得每個(gè)TCP連接可以得到均等的帶寬。在多用戶環(huán)境下,一個(gè)用戶擁有越多TCP連接,獲得的帶寬越大。
具體來(lái)說(shuō):
這個(gè)涉及到了TCP的擁塞控制。
我們先看一下單TCP連接的擁塞控制。
這是一個(gè)TCP連接的發(fā)送窗口。


擁塞控制窗口

綠色部分為發(fā)送者已發(fā)送,且接收者已確認(rèn)(ACKed)。
黃色部分為發(fā)送者已發(fā)送,但接收者尚未確認(rèn)("in-flight")。
藍(lán)色部分為可用但尚未發(fā)送。
灰色部分為不可用。
所以在RTT(round-trip time,來(lái)回通訊延遲)不變的情況下,cwnd這個(gè)變量基本決定傳輸速率。


image

發(fā)送者總會(huì)試圖找到不丟包情況下的最大速率。按照TCP協(xié)議,在傳輸開(kāi)始之后,每接收到一個(gè)確認(rèn)(ACK)就會(huì)把cwnd這個(gè)變量增大一倍。所以TCP連接開(kāi)始之后應(yīng)該是這個(gè)樣子。
image

剛開(kāi)始的時(shí)候傳輸速率應(yīng)該是指數(shù)被增長(zhǎng)的,直到丟包發(fā)生。丟包會(huì)有兩種情況:
1.當(dāng)接收者發(fā)送給發(fā)送者的ACK丟失了,這時(shí)會(huì)觸發(fā)超時(shí)(timeout)。
2.當(dāng)發(fā)送者發(fā)送給接收者的數(shù)據(jù)包丟失了,發(fā)送者會(huì)收到接收者發(fā)來(lái)的重復(fù)ACK,如果發(fā)送者收到了3個(gè)重復(fù)的ACK,也會(huì)認(rèn)為發(fā)生了丟包。
具體對(duì)這兩種情況采取的措施略有不同,但粗略來(lái)說(shuō),變量cwnd會(huì)被減半,也就是說(shuō)傳輸速率減半。然后cwnd會(huì)再次增大,直到下次丟包發(fā)生。所以忽略最開(kāi)始,TCP的吞吐量應(yīng)該是這樣。
image

MTU,MSS,滑動(dòng)窗口,慢啟動(dòng),擁塞算法

https://www.zhihu.com/question/48454744/answer/110946313
車(chē)小胖的回答

滑動(dòng)窗口實(shí)現(xiàn)

https://www.zhihu.com/question/32255109

tcp流控和擁塞控制:

https://www.cnblogs.com/zlingh/p/6161088.html

tcp那些事

https://coolshell.cn/articles/11564.html

自我總結(jié):
擁塞控制依靠:慢啟動(dòng),擁塞控制算法,快速重傳,快速恢復(fù)
流量控制依靠:滑動(dòng)窗口

tcpnopush:一定會(huì)等到發(fā)送緩沖區(qū)>MSS才發(fā)送
tcpnodelay:delay模式是指(默認(rèn)開(kāi)啟) = 當(dāng)發(fā)送緩沖區(qū)的數(shù)據(jù)少于MSS時(shí)就等待其他包一起(>MSS)發(fā)送,除非收到了上一個(gè)包的ACK就會(huì)立即發(fā)送。當(dāng)tcpnodelay為on表示關(guān)閉這種行為

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 運(yùn)輸層協(xié)議概述 從通信和信息處理的角度看,運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是...
    srtianxia閱讀 2,759評(píng)論 0 2
  • 本篇文章主要是從運(yùn)輸層協(xié)議概述、UDP、TCP、可靠傳輸?shù)墓ぷ髟怼CP首部格式、TCP可靠傳輸?shù)膶?shí)現(xiàn)、TCP流...
    SeanMa閱讀 4,204評(píng)論 2 13
  • 六、TCP可靠傳輸?shù)膶?shí)現(xiàn) 首先介紹以字節(jié)為單位的滑動(dòng)窗口。為了講述可靠傳輸原理的方便,假定數(shù)據(jù)傳輸只在一個(gè)方向進(jìn)行...
    dmmy大印閱讀 2,181評(píng)論 0 1
  • 0. 基本要點(diǎn) 運(yùn)輸層是為相互通信的應(yīng)用進(jìn)程提供邏輯通信。 端口和套接字的意義 什么是無(wú)連接UDP 什么是面向連接...
    安安zoe閱讀 1,540評(píng)論 0 1
  • 直到今天我才真正的釋?xiě)蚜?。不為什么?突然明白了。這種感覺(jué)真可怕,我寧愿自己還是當(dāng)年的那個(gè)傻子??墒?,我連騙自己的謊...
    小八妞妞閱讀 286評(píng)論 0 0

友情鏈接更多精彩內(nèi)容