TCP流量控制 擁塞控制

2021-09-17 07:34:05 字數 1072 閱讀 4267

如果傳送者傳送資料過快,接收者來不及接收,那麼就會有分組丟失。為了避免分組丟失,控制傳送者的傳送速度,使得接收者來得及接收,這就是流量控制。流量控制根本目的是防止分組丟失,它是構成tcp可靠性的一方面。

主要的方式就是接收方返回的 ack 中會包含自己的接收視窗的大小,並且利用大小來控制傳送方的資料傳送。

當傳送者收到了乙個視窗為0的應答,傳送者便停止傳送,等待接收者的下乙個應答。但是如果這個視窗不為0的應答在傳輸過程丟失,傳送者一直等待下去,而接收者以為傳送者已經收到該應答,等待接收新資料,這樣雙方就相互等待,從而產生死鎖。

為了避免流量控制引發的死鎖,tcp使用了持續計時器。每當傳送者收到乙個零視窗的應答後就啟動該計時器。時間一到便主動傳送報文詢問接收者的視窗大小。若接收者仍然返回零視窗,則重置該計時器繼續等待;若視窗不為0,則表示應答報文丟失了,此時重置傳送視窗後開始傳送,這樣就避免了死鎖的產生。

整個擁塞控制的流程如下圖:

(1)擁塞視窗cwnd初始化為1個報文段,慢開始門限初始值為16

(2)執行慢開始演算法,指數規律增長到第4輪,即cwnd=16=ssthresh,改為執行擁塞避免演算法,擁塞視窗按線性規律增長

(3)假定cwnd=24時,網路出現超時(擁塞),則更新後的ssthresh=12,cwnd重新設定為1,並執行慢開始演算法。當cwnd=12=ssthresh時,改為執行擁塞避免演算法

當傳送方連續收到三個重複確認時,就執行「乘法減小」演算法,把ssthresh門限減半(為了預防網路發生擁塞)。但是接下去並不執行慢開始演算法

考慮到如果網路出現擁塞的話就不會收到好幾個重複的確認,所以傳送方現在認為網路可能沒有出現擁塞。所以此時不執行慢開始演算法,而是將cwnd設定為ssthresh減半後的值,然後執行擁塞避免演算法,使cwnd緩慢增大。如下圖:tcp reno版本是目前使用最廣泛的版本。

注意:在採用快恢復演算法時,慢開始演算法只是在tcp連線建立時和網路出現超時時才使用

TCP流量控制 擁塞控制

什麼是流量控制?流量控制的目的?如果傳送者傳送資料過快,接收者來不及接收,那麼就會有分組丟失。為了避免分組丟失,控制傳送者的傳送速度,使得接收者來得及接收,這就是流量控制。流量控制根本目的是防止分組丟失,它是構成tcp可靠性的一方面。如何實現流量控制?由滑動視窗協議 連續arq協議 實現。滑動視窗協...

TCP 流量控制 擁塞控制

流量控制 流量控制是為了控制傳送方傳送速率,保證接收方來得接收。接收方傳送的確認報文中的視窗字段可以用來控制傳送方視窗大小,從而影響傳送方的傳送速率。將視窗字段設定為 0,則傳送方不能傳送資料。擁塞控制 如果網路出現擁塞,分組將會丟失,此時傳送方會繼續重傳,從而導致網路擁塞程度更高。因此當出現擁塞時...

tcp 擁塞控制 TCP流量控制與擁塞控制

流量控制 流量控制的定義 一條tcp連線每一側主機都為該連線設定了接收快取。當該tcp連線收到了正確的 按序的位元組後,他就將資料放入接收快取。相關聯的應用程序會從該快取中讀取資料。但不必是資料一到達就立即讀取。事實上,接收方也許正忙於其他任務,甚至要過很長時間後才讀取該資料。如果某個應用程序讀取比...