TCP流量控制與擁塞控制

2021-10-23 03:08:08 字數 1348 閱讀 1762

傳送方在確定傳送報文段的速率時,既要根據接受方的接受能力,又要從全域性考慮不要使用網路發生擁塞。因此tcp協議要求傳送方 維護兩個視窗

接收方總是有足夠大的快取空間,因而傳送視窗大小由網路的擁塞程度來決定,也就是說可以將傳送視窗大小 小於等於 擁塞視窗大小

tcp通過乙個定時器重傳計時器)採用了往返時延rtt並快速重傳,但是,如果網路上的延時突然增加,那麼tcp對這個做出的應對只有重傳資料,然後重傳會導致網路的負擔更重,於是會導致更大的延遲以及更多的丟包,這就導致了惡性迴圈,最終形成「網路風暴」-----tcp的擁塞控制就是為了應對這樣的情況。

為了在傳送端調節所要傳送的資料量,定義乙個「擁塞視窗」,在傳送資料時,將擁塞視窗的大小與接受端的接收視窗大小作比較,取較小者作為傳送資料量的上限。

擁塞控制的四種演算法:

慢開始

意思是剛剛加入網路的連線,一點一點提速,不要一上來就把路佔滿。

連線建好的初始化的擁塞視窗 = 1,表明可以傳乙個mss(最大報文段)的資料。

每當收到乙個ack(確認報文),擁塞視窗+1,呈線性上公升

每當過了乙個rtt(往返時延),擁塞視窗 * 2 , 呈指數上公升

閾值ssthresh(slow start threshold),是乙個上限,當cwnd >= ssthresh時,就會進入「擁塞避免演算法」

擁塞避免

傳送端的擁塞視窗每經過乙個rtt往返時延就增加乙個mss最大報文段大小(「加法增大」),每當出現一次網路擁塞時,

則 慢開始門限 = 當前擁塞視窗的一半 (「乘法減小」)。

擁塞視窗 < 慢開始門限值 使用慢開始演算法

擁塞視窗 >= 慢開始門限值 使用擁塞避免演算法

當網路出現擁塞時,無論在慢開始階段還是在擁塞避免階段,只要傳送方檢測到重傳計時器超時,就把慢開始門限 = 擁塞視窗 / 2,擁塞視窗 = 1。

快速重傳

當傳送方連續收到三個重複的ack報文時,直接重傳對方尚未收到的報文段,而不必等待那個報文段設定的重傳計時器超時。

快恢復

當傳送端收到連續三個冗餘ack時,就執行「乘法減小」演算法,把慢開始門限設定為出現擁塞時傳送方擁塞視窗的一半。然後把擁塞視窗大小設定為慢開始門限值,開始執行擁塞避免演算法(「加法增大」),使擁塞視窗緩慢的線性增大。

當傳送方檢測到超時的時候就採用慢開始和擁塞避免,當傳送方收到冗餘的ack報文的時候就採用快重傳和快恢復。

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

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

TCP流量控制與擁塞控制

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

TCP 流量控制與擁塞控制

tcp流量控制 為了避免傳送端短時間內將大量資料傳送給接收端,而接收端快取和處理能力無法滿足情況,採取滑動視窗的方式。動態的調整傳送端的傳送速率,tcp視窗單位是位元組,即傳送視窗大小的位元組數小於接受埠大小的位元組數 tcp擁塞控制 與流量控制不同,流量控制只是控制傳送端的傳送速率,考慮的是兩端之...