TCP的流量控制和擁塞控制詳解

2021-10-04 04:03:50 字數 2391 閱讀 3139

目錄

tcp的流量控制和擁塞控制詳解

1、流量控制

1.1 為什麼要進行流量控制

1.2 如何控制

2、擁塞控制

2.1 概述

2.2 **

雙方在通訊的時候,傳送方的速率與接收方的速率是不一定相等,如果傳送方的傳送速率太快,會導致接收方處理不過來,這時候接收方只能把處理不過來的資料存在快取區里(失序的資料報也會被存放在快取區里)。

如果快取區滿了傳送方還在瘋狂著傳送資料,接收方只能把收到的資料報丟掉,大量的丟包會極大著浪費網路資源,因此,我們需要控制傳送方的傳送速率,讓接收方與傳送方處於一種動態平衡才好。

對傳送方傳送速率的控制,我們稱之為流量控制

由圖中可知,tcp三次流量控制分別是,第一次視窗大小由400減到300,第二次減到100,第三次減到0。

tcp連線的一方如果收到零視窗通知,就會啟動堅持計時器。若堅持計時器的時間到期,就會傳送乙個零視窗控測報文段,收到報文段的一方就重新設定堅持計時器

為了提高網路利用率,降低丟包率,並保證網路資源對每條資料流的公平性,這就是擁塞控制。

擁塞控制包括四部分:慢啟動、擁塞避免、快速重傳、快速恢復

傳送端向網路一次連續寫入的資料量,我們稱為swnd(send window,傳送視窗).但是傳送端最終以tcp報文段來傳送資料,所以swnd的大小限制了能連續傳送的tcp報文段數量。這些tcp報文段的最大長度(僅資料部分)稱為smss(sender maximum segment size,傳送者最大段大小),其值一般等於mss。

傳送端需要合理的選擇swnd的大小,如果swnd太小,會引起明顯的網路延遲;反之,如果swnd太大,則容易導致網路擁塞。所以還需要引入乙個稱為擁塞視窗cwnd(congestion window,cwnd)的狀態變數

(1)慢開始

傳送方維持乙個擁塞視窗cwnd的狀態變數。它的大小取決於網路的擁塞程度,並且在動態的變化,傳送方會讓自己的傳送視窗等於這個擁塞視窗。

傳送方控制擁塞視窗的原則是:

慢開始演算法:因為不清楚網路狀況,所以需要進行試探,將傳送視窗逐漸增大,也就是逐漸增大擁塞視窗的數值。在剛開始傳送的時候,先把擁塞視窗cwnd設定為最大報文段mss,每收到乙個對新報文段的確認後,就把擁塞視窗最多增加乙個mss數值。這種逐步增大的方法可以使分組注入到網路的速率更加合理。【指數增長】

例外,為了防止擁塞視窗過大引起網路擁塞,我們需要設定乙個慢開始門限ssthreth狀態變數,

當cwnd < ssthreth時,使用慢開始演算法;

當cwnd > ssthrerth時,使用擁塞控制演算法;

如果兩者相等,兩個都可以使用。

慢開始的「慢」並不是指cwnd增長速率慢而是說在tcp開始傳送報文時,先設定cwnd=1,使傳送端開始時只傳送乙個報文段進行探測

(2)擁塞避免

就是讓擁塞視窗緩慢增大,即每經過乙個往返時間rtt就使cwnd+1,這種線性增長的速率慢很多

只要傳送方判斷出網路擁塞,不論是在慢開始還是擁塞控制階段,都要把慢開始門限值設定為出現擁塞時傳送端視窗大小的一半,但不能小於2。然後把cwnd重新置為1,執行慢開始演算法。門限值減半,cwnd重置為1,做目的是減少傳送到網路中的分組數,使得發生擁塞的路由器能夠有時間能把佇列中積壓的分組處理掉。

傳送端判斷網路擁塞的依據:

(3)快重傳

快重傳演算法要求接收方每收到乙個失序的報文段後就立即發出重複確認,而不要等到自己傳送資料時才進行捎帶確認。傳送方只要一連收到3個同樣的確認報文就應當立即重傳資料報,不必等待報文段的重傳計時器到期。

(4)快恢復

把慢開始門限減半,「乘法減小」,將cwnd設定為新的慢開始門限值,繼續執行擁塞避免演算法,「加法增大」

TCP流量控制和擁塞控制

1 利用滑動視窗實現流量控制 如果傳送方把資料傳送得過快,接收方可能會來不及接收,這就會造成資料的丟失。所謂流量控制就是讓傳送方的傳送速率不要太快,要讓接收方來得及接收。利用滑動視窗機制可以很方便地在tcp連線上實現對傳送方的流量控制。2 設a向b傳送資料。在連線建立時,b告訴了a 我的接收視窗是 ...

TCP擁塞控制和流量控制

tcp作為面向連線的提供全雙工可靠服務協議,具有差錯控制 擁塞控制和流量控制等功能。此處所謂的擁塞控制和流量控制,就是將傳送端傳送能力 接收端接收資訊的能力以及當前的網路環境參與考慮,在網路擁塞情況嚴重或者接收端接收能力有限的情況下,減緩或暫停訊息傳送,當情況改善時,增強訊息傳送能力,加上超時 丟失...

TCP擁塞控制和流量控制

tcp作為面向連線的提供全雙工可靠服務協議,具有差錯控制 擁塞控制和流量控制等功能。此處所謂的擁塞控制和流量控制,就是將傳送端傳送能力 接收端接收資訊的能力以及當前的網路環境參與考慮,在網路擁塞情況嚴重或者接收端接收能力有限的情況下,減緩或暫停訊息傳送,當情況改善時,增強訊息傳送能力,加上超時 丟失...