TCP視窗控制 流量控制 擁塞控制

2021-10-03 15:46:50 字數 2617 閱讀 5003

tcp以1個段為單位,每發乙個資料段進行一次ack確認應答的處理,這樣的傳輸方式由乙個缺點,就是包的往返時間越長通訊的效能越差。

解決這個問題,提高速度,tcp引入了視窗控制這個概念。具體做法就是連續傳送上限為視窗大小的資料,然後再乙個乙個ack確認。即使在往返時間較長的情況下,它也能控制網路效能的下降,提高速率。

指無需等待確認應答而可以繼續傳送資料的最大值。如上圖視窗大小為4個段。

收到確認應答的情況下,將視窗滑動到確認應答中的序號的位置。這樣可以順序地將多個段同時傳送提高通訊效能。

再視窗控制中,出現段丟失怎麼辦呢?

情況一:a向b發資料,a的資料已經傳送到b端,b返回確認應答訊號ack未能到達a端情況下,是不需要進行重發的。

情況2:a發資料到b,如果a發的資料丟失沒有達到b端,接收端b會返回沒收到資料的ack給傳送端a,來告訴a端接收資料失敗,要重新傳送。

因此,在視窗比較大,又出現報文丟失的情況下,同乙個序號的確認應答將會被重複不斷地返回,而傳送端如果連續3次收到同乙個確認應答,將會重新傳送資料段。

接收端在收到資料報時候會做一些處理會消耗點時間,甚至在高負荷的情況(緩衝區滿了)下無法接收任何資料。如此一來,接收方只能把收到的資料報丟掉,大量的丟包會極大著浪費網路資源,就會觸發重發機制,從而導致網路流量的無端浪費。

為了防止這種情況出現,tcp提供了一種機制可以讓傳送端根據接收端的實際接收能力控制傳送的資料量。控制傳送方的傳送速率,讓接收方與傳送方處於一種動態平衡的狀態。

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

具體做法:

接收端向傳送端通知自己接收資料的大小,於是傳送端會傳送不超過這個限度的資料,該大小限度就是視窗大小。

注意:視窗大小由接收方決定

tcp首部中有乙個字段用來通知視窗大小

步驟:1.通訊雙方主機上都分別有乙個「傳送視窗」和乙個「接收視窗」

2.tcp連線階段,雙方協商視窗尺寸

3.傳送方根據協商的結果,傳送符合視窗尺寸的資料字節流,並等待對方的確認,等待確認機制

4.傳送方根據確認資訊,改變視窗的尺寸

視窗探測:如果接收端返回的視窗大小為0,即傳送端會停止傳送資料。要等接收到返回視窗大小不為0的ack(更新通知),傳送端才會繼續傳送資料。

為了避免更新通知在傳送途中丟失而導致傳送端和接收端都處於互相等待狀態中。傳送端會是不是傳送乙個叫視窗探測的資料,來查詢接收端的(更新通知)ack應答。

有了tcp的視窗控制,收發主機之間即使不再以乙個資料段為單位傳送ack確認應答,是以連續傳送大量的ack應答資料報。然而,如果再通訊剛開始時就傳送大量的資料,也有可能引發其他問題。

一般來說,網路的不穩定會導致網路出現擁堵的情況,在網路擁堵時,如果突然傳送乙個較大的資料,極有可能導致整個網路的癱瘓。

tcp為了防止該問題的出席那,在通訊一開始就會通過乙個叫慢開始的演算法得出瓶頸值(max),再對傳送資料量進行控制。

擁塞視窗:即在傳送端設定乙個視窗結構,根據網路的擁塞情況,動態調整該視窗大小,傳送端只能傳送小於滑動視窗和擁塞視窗的資料,在傳送端設定的這個視窗就是擁塞視窗。

方法一:慢開始 + 擁塞控制: 

①開始設定擁塞視窗大小為1,每次能正常收到ack應答,就把擁塞視窗就加倍(慢開始),直到不能正常收到ack應答,確定慢啟動閥值sthresh。

②再線性增加(擁塞控制),直到不能正常收到ack應答,確認瓶頸值(max)

③再把sthresh調小,調為max值的一半,即ssthresh = max / 2

④迴圈①和②,只不過是知道ssthresh的值

方法二:快重傳 + 快恢復

當tcp通訊開始後,網路吞吐量會逐漸上公升,但是隨著網路擁堵的發生,吞吐量頁會急速下降。於是會再次靜茹吞吐量慢慢上公升的過程。

注意:

「擁塞控制」並非指完全能夠避免了擁塞。利用以上的措施要完全避免網路擁塞還是不可能的。

「擁塞控制」是說在擁塞避免階段將擁塞視窗控制為按線性規律增長,使網路比較不容易出現擁塞。

TCP流量控制 擁塞控制

如果傳送者傳送資料過快,接收者來不及接收,那麼就會有分組丟失。為了避免分組丟失,控制傳送者的傳送速度,使得接收者來得及接收,這就是流量控制。流量控制根本目的是防止分組丟失,它是構成tcp可靠性的一方面。主要的方式就是接收方返回的 ack 中會包含自己的接收視窗的大小,並且利用大小來控制傳送方的資料傳...

TCP流量控制 擁塞控制

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

TCP 流量控制 擁塞控制

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