面試題 TCP的擁塞控制

2021-09-19 10:19:04 字數 2037 閱讀 8393

在某段時間內,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的效能就要變壞。這種情況就稱為擁塞。簡單的說擁塞產生的原因有兩點:(1)接收方容量不夠(2)網路內部有瓶頸

擁塞控制就是防止過多的資料注入到網路中,這樣可以使網路中的路由器或鏈路不致過載。

檢測網路擁塞的指標是:由於缺少快取空間而被丟棄的分組的百分數、平均佇列長度、超時重傳的分組數、平均分組時延、分組時延的標準差等,這些指標的上公升都標誌著擁塞的增長。

可以使用這種方法來檢測,在路由**的分組中保留乙個位元或字段,用該位元或字段的值表示網路有沒有擁塞或產生了擁塞。也可以由一些主機或路由器週期性的發出探測分組,以詢問擁塞是否發生。

(1)收到重複的ack。傳送的包可能有些丟失,但是接收方沒有接收到,而傳送方由於傳送視窗還可以傳送,還在繼續發,而接收方由於沒有收到丟失的那個包,只能不斷請求傳送那個包對應的序列號。

(2)出現了超時。當網路發生擁塞的時,路由器就要丟棄分組。因此只要傳送方沒有按時收到應當到達的確認報文,也就是說,只要出現了超時,就可以猜想網路可能出現了擁塞。(現在通訊線路的傳輸質量一般都很好,因傳輸出差錯而丟棄分組的概率都很小,遠小於1%)(這也是傳送方如何知道網路發生了擁塞的方法)

tcp進行擁塞控制的四種演算法:慢開始、擁塞避免、快速重傳、快速恢復。

擁塞視窗的大小取決於網路的擁塞程度,並且在動態的變化,傳送方讓自己的傳送視窗等於擁塞視窗。傳送方控制擁塞視窗的原則是:只要網路沒有出現擁塞,擁塞視窗就可以再增大一些,以便把更多的分組傳送出去,這樣就可以提高網路的利用率,但只要網路出現擁塞或可能出現擁塞,就必須把視窗減小一些,以減少注入到網路中的分組數,以便緩解網路出現的擁塞。

慢開始演算法思想:當主機開始傳送資料時,由於並不清楚網路的負荷情況,如果立即把大量資料位元組注入到網路,那麼就有可能引起網路發生擁塞,所以由小到大逐漸增大傳送視窗,也就是由小到大逐漸增大擁塞視窗數值,試探一下網路的擁塞情況。慢開始規定,在傳送方每收到乙個新的報文段的確認後,擁塞視窗的值就增大1,剛開始我們先設定擁塞視窗值為1,傳送方收到乙個新的確認報文之後,cwnd變為2,傳送方接收到兩個新的確認報文之後cwnd加2變成。即擁塞視窗的增長每次都是收到確認報文段數量的2倍。為了防止擁塞視窗增長多大引起網路阻塞,為其設定了乙個慢啟動門限,當到達門限時,就進入到擁塞避免階段

擁塞避免演算法的思路:不再以指數形式增長擁塞視窗,而是每經過乙個往返時間rtt就將傳送方的擁塞視窗+1,使其增長緩慢,按照線性方式增長,如果發生網路擁塞,比如丟包時,就將慢啟動門限設為原來的一半,然後將擁塞視窗設定為1,開始執行慢啟動演算法。

快速重傳演算法思想:快速重傳要求接收方不要等待自己傳送資料時才進行捎帶確認,而是要立即傳送確認,即使收到了失序的報文段也要立即發出對已收到的報文段的重複確認。快速重傳規定,傳送方只要一連線收到3個重複確認,就知道接收方確實沒有收到該報文段,因而應當立即進行重傳,這樣就不會出現超時,傳送方也就不會誤認為出現了網路擁塞。使用快速重傳可以使整個網路的吞吐量提高約20%。快速重傳後進入快速恢復。

快速恢復的思想:將慢啟動門限值設定為原來的一半,然後將擁塞視窗設定為現在的慢啟動的門限值,不再執行慢啟動而是直接進入擁塞避免階段。使傳送視窗成線性方式增長。【也有的快速恢復實現是把快速恢復時的擁塞視窗cwnd值再增大一些(即3個報文段長度),即等於新的門限值+3個報文段長度。這樣做的理由是,既然傳送方收到3個重複的確認,就表明3個分組已經離開了網路。這3個分組不再消耗網路的資源,而是停留在接收方的緩衝區種(接收方傳送出了3個重複確認就證明了這個事實)。可見現在網路中並不是堆積了分組,而是減少了3個分組。因此可以適當的把擁塞視窗擴大些】

注:在擁塞避免階段,擁塞視窗是按照線性規律增大的,這常稱為加法增大ai。而一旦出現超時或3個確認重複,就要把門限值設定為當前擁塞視窗值得一半,並大大減小擁塞視窗的數值。這稱為「乘法減小」md,二者合併就是aimd演算法

快速重傳對應的**

tcp擁塞控制 TCP 面試系列之擁塞控制

tcp 面試系列第六彈,tcp 擁塞控制的一般性原理。擁塞的定義。在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的效能就要變壞。這種情況就叫做擁塞。擁塞常常趨於惡化。舉個例子,如果乙個路由器沒有足夠的快取空間,它就會丟棄一些新到的分組。但當分組被丟棄時,傳送這一分組的源點就...

TCP擁塞控制

擁塞控制就是防止過多的資料注入到網路中,這樣可以使網路中的路由器或鏈路不致過載,擁塞控制要做的都有個前提,就是網路能夠承受現有的網路負荷。擁塞控制是個全域性性的過程。幾種擁塞控制方法 慢開始 擁塞避免 快重傳 快恢復 1.慢開始和擁塞避免 傳送方維持乙個叫做擁塞視窗的狀態變數,擁塞視窗取決於網路的擁...

TCP擁塞控制

計算機網路中的頻寬 交換結點中的快取和處理機等,都是網路的資源。在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的效能就會變壞。這種情況就叫做擁塞。擁塞控制就是防止過多的資料注入網路中,這樣可以使網路中的路由器或鏈路不致過載。擁塞控制是乙個全域性性的過程,和流量控制不同,流量...