TCP 協議是如何進行擁塞控制的?

2021-07-11 05:43:04 字數 923 閱讀 1014

tcp從客戶端每次傳送一次資料伺服器返回乙個確認,這樣效率非常的低,所以就有視窗這個概念,每一次最大報文段長度(mss)都是1024,設定視窗為2048的話第一次傳送1024(1~1024)後不等他的確認,再次傳送1024(1025~2048),而後服務端一次性確認之前的資料,ack序號為2049(之前總量加1,也就是下次的開始號),這個節省了開銷,增加了網路的吞吐量。

服務端和客戶端都有流量控制,服務端有接收視窗(rwnd),算出視窗大小加在tcp的首部視窗大小中,由於rwnd對網路無影響,這裡主要討論客戶端的流量控制,擁塞視窗(cwnd)。

tcp真正的傳送視窗為接受視窗和擁塞視窗的最小值。

1.(發多了)比如視窗為6倍1024,但是服務端只能接受4份1024,所以他的確認序號為4097,當客戶端搜到三次這個確認序號的時候,才知道自己發多了,之前發出去的5,6份需要重發,或者說補發。

2.(超時或者發丟了)比如從第乙份傳送成功,但是第二份和第三份丟失,剩下的三分成功,對於伺服器來說他只會確認第乙份的資料,所以ack序號為1025,當客戶端在指定(rto)時間都沒有收到第二份的確認的時候它才知道它的報文段丟失了,所以它需要從1025開始重發。(重複確認應答)

客戶端的擁塞視窗進過一次rtt後,也就是收到一次ack後擁塞視窗就翻倍,也就是指數型增長。

使正在進行慢啟動的擁塞視窗到達閥值後就成線性增長,當然對擁塞避免階段沒用。

1.(發多了)先把閾值設定為擁塞視窗一半,再把擁塞視窗設定為閾值大小,擁塞視窗為指數增加(慢啟動階段,雖然有慢字,但是是指數型增長,一點不慢)。

2.(超時或者發丟了)先把閾值設定為擁塞視窗一半,擁塞視窗為一,擁塞視窗為線性增加(擁塞避免階段)。

一段出現丟包,減半避讓,為其他tcp連線的客戶端提供避讓,建立公平性

TCP傳輸協議如何進行擁塞控制?

擁塞控制 擁塞現象是指到達通訊子網中某一部分的分組數量過多,使得該部分網路來不及處理,以致引起這部分乃至整個網路效能下降的現象,嚴重時甚至會導致網路通訊業務陷入停頓,即出現死鎖現象。這種現象跟公路網中經常所見的交通擁擠一樣,當節假日公路網中車輛大量增加時,各種走向的車流相互干擾,使每輛車到達目的地的...

TCP傳輸協議如何進行流量控制?

tcp流量控制,簡單來說就是讓 資料傳輸 端傳輸的速率不要太快,讓資料接收端來得及接收,利用滑動視窗機制可以很方便的在tcp連線上實現對 資料傳輸 端的流量控制。tcp的視窗單位是位元組,不是報文段,資料傳輸端的傳送視窗不能超過接收端給出的接收視窗的數值,流量控制的機制是控制丟包率,主要目的 讓資料...

TCP協議 擁塞控制演算法

網路擁塞控制演算法 tcp的擁塞控制主要原理依賴於乙個擁塞視窗來控制,在之前我們還討論過tcp還有乙個對端通告的接收視窗用於流量控制。視窗值得大小就代表能夠傳送出去的但還沒有接收到ack的最大資料報文段,顯然視窗越大那麼資料傳送的速度也就越快,但是也有越可能使得網路出現擁塞,如果視窗值為1,那麼就簡...