TCP流量控制與擁塞控制

2021-10-23 14:33:11 字數 1441 閱讀 1463

**大神部落格

什麼是流量控制,目的,

如果傳送者傳送資料過快,接收者來不及接收,那麼就會有分組丟失。為了避免分組丟失,控制傳送者的傳送速度,使得接收者來得及接收,這就是流量控制。

流量控制根本目的是防止分組丟失,它是構成tcp可靠性的一方面。

如何實現流量控制

由滑動視窗協議(連續arq協議)實現。

滑動視窗協議既保證了分組無差錯、有序接收,也實現了流量控制。

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

流量控制引發的死鎖?

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

怎麼避免死鎖的發生?

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

擁塞控制和流量控制的區別

擁塞控制是作用於網路的,它是防止過多的資料注入到網路中,避免出現網路負載過大的情況;

常用的方法就是:( 1 )慢開始、擁塞避免( 2 )快重傳、快恢復。

流量控制是作用於接收者的,它是控制傳送者的傳送速度從而使接收者來得及接收,防止分組丟失的。

擁塞控制的演算法

一、慢開始

傳送方維持乙個叫做擁塞視窗cwnd(congestion window)的狀態變數。

為了防止cwnd增長過大,設定乙個慢開始門限ssthresh狀態變數。

當cwndssthresh時,改用擁塞避免演算法。

當cwnd=ssthresh時,慢開始與擁塞避免演算法任意

二、擁塞避免

讓cwnd緩慢增長,每經過乙個往返時間rtt就把cwnd加一

無論是在慢開始階段還是在擁塞避免階段,只要傳送方判斷網路出現擁塞,就把ssthresh設定為此時cwnd大小的一半(但不能小於2)。然後把cwnd重新設定為1,執行慢開始演算法。

示意圖三、快重傳

接收方在收到乙個失序的報文段後就立即發出重複確認

傳送方只要一連收到三個重複確認就應當立即重傳對方尚未收到的報文段

四、快恢復

與快重傳配合

當傳送方連續收到三個重複確認時,就執行「乘法減小」演算法,把ssthresh減半,將cwnd設定為ssthresh減半後的值

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

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

TCP流量控制與擁塞控制

tcp 的流量控制與擁塞控制可以說是一體的。流量控制是通過滑動視窗實現的,擁塞避免主要包含以下2個內容 1 慢開始,擁塞避免 2 快重傳,快恢復 1.流量控制 滑動視窗 tcp採用大小可變的滑動視窗進行流量控制,視窗大小的單位是位元組。傳送視窗在連線建立時由雙方商定。但在通訊的過程中,接收端可根據自...

TCP流量控制與擁塞控制

傳送方在確定傳送報文段的速率時,既要根據接受方的接受能力,又要從全域性考慮不要使用網路發生擁塞。因此tcp協議要求傳送方 維護兩個視窗 接收方總是有足夠大的快取空間,因而傳送視窗大小由網路的擁塞程度來決定,也就是說可以將傳送視窗大小 小於等於 擁塞視窗大小。tcp通過乙個定時器 重傳計時器 採用了往...