32 tcp擁塞控制 慢開始

2021-08-19 16:25:05 字數 1549 閱讀 4968

前面講到了tcp在進行擁塞控制時的演算法:即慢開始,擁塞避免,快速重傳,快速恢復這四種演算法。那麼慢開始演算法是如何來感知網路是否擁塞,從而進行擁塞控制的?

首先雙方在建立tcp連線時,傳送方會維護乙個擁塞視窗(cwnd),擁塞視窗的大小是隨著網路擁塞程度而動態變化的,這樣的話傳送方就可以根據擁塞視窗的大小來感知網路是否擁塞,從而進行擁塞控制,也就是讓自己的傳送視窗等於擁塞視窗。

這樣做的原因是,如果網路出現擁塞,那麼tcp擁塞控制機制就會讓傳送方的擁塞視窗減小一些,讓傳送視窗等於擁塞視窗,也就是進行流量控制讓傳送方慢一點傳送資料;如果網路沒有出現擁塞,就會讓傳送方的擁塞視窗增大一些,讓傳送方快一點傳送資料。

比如,假設現在傳送方不考慮網路擁塞問題,連續傳送了20個分組,然後等待確認,如果網路擁塞的話,就會出現大量的丟包,進行重傳,這樣就浪費了頻寬。

為了盡量避免網路擁塞這種情況,最好是傳送方在傳送資料前,先測試一下當前網路狀況,然後再根據網路狀況,控制傳送資料流量,而不是在建立tcp連線時,直接使用接收方通知的視窗大小。

慢開始演算法的就是這樣做的:一開始先傳送少量的資料,測試一下網路是否擁塞,如果沒有出現丟包重傳,就再慢慢提高傳送速度。當出現丟包重傳時,就認為是網路擁塞,就放慢傳送速度,從而避免擁塞。

我們再通過下圖中的例子來介紹慢開始具體是如何進行擁塞控制的,為了方便,這裡我們假設:接收方的接收視窗有很大的空間,總是能接收到資料,傳送方的傳送視窗由網路擁塞程式來決定的,同時傳送的每個報文都必須單獨確認。

圖1-慢啟動演算法具體過程

首先雙方在建立tcp連線時,傳送方會維護乙個擁塞視窗(cwnd),並讓自己的傳送視窗等於擁塞視窗,然後接收方會通知傳送方其支援的最大報文段長度是100位元組,接收視窗為2000位元組,傳送方讓擁塞視窗的大小從乙個mss(mss又稱最大報文長度)報文開始,此時傳送方的傳送視窗大小為100位元組。

緩衝區中共有10個分組,每個分組100位元組,傳送方的傳送視窗移動到m1的位置,第一次傳送方為了測試網路狀況,傳送乙個m1分組並收到了接收方的確認m1,然後把cwnd增大到200位元組,並傳送了m2和m3分組。接收方收到後m2和m3後,返回了m2,m3確認。從上面來看,傳送方每收到乙個新報文的確認就調整擁塞視窗為原來的2倍(這裡說的確認是對多個報文的累積確認,注意,重傳報文的確認不算),因此傳送方在接收到2個確認後,擁塞視窗cwnd就設定為200 x 2 = 400位元組,這時傳送方的傳送視窗就可以傳送4個分組了。

這裡,我們使用的新名詞——輪次(圖中的綠色線表示每一次傳輸輪次),而乙個傳輸輪次所需的時間其實就是往返時間rtt(如上圖所示,連續傳送了m4,m5,m6,m7分組,並都收到確認的往返時間)。

另外,慢開始演算法中的「慢」其實是指tcp開始傳送資料時,為了避免出現網路擁塞,第一次只設定擁塞視窗cwnd為乙個分組,使傳送方在開始時只傳送乙個分組,目的是為了測試一下當前網路狀況,然後再逐步增加擁塞視窗cwnd。

關於慢開始演算法擁塞視窗cwnd初始設定值,rfc5681是這樣規定的:初始擁塞視窗cwnd設定為不超過2 - 4個smss(smss是傳送方的最大報文段)

TCP擁塞控制 慢開始與擁塞避免演算法

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

TCP擁塞控制 慢開始 擁塞避免 快重傳 快恢復

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

TCP擁塞控制慢開始演算法擁塞視窗的初始值

問題 擁塞控制慢開始演算法擁塞視窗的初始值是多少?根據rfc文件 iw,the initial value of cwnd,must be set using the following guidelines as an upper bound.if smss 2190 bytes iw 2 sms...