理想狀態下,無論是傳送資料的速率多塊,傳送資料的多大,接收方都可以接收到。可是在實際情況中,需要協調傳送方傳送資料和接收方接收資料的速率,以便傳送的資料能被收到。
tcp採用滑動視窗機制來解決流量控制問題,滑動視窗為接收方設定了乙個動態指定的接收視窗rwnd。tcp傳輸是雙向進行的,接收方同時也是傳送方,這裡為了便於分析,取其中乙個方向進行分析。
第一次連線建立時 接收方告知傳送方初始rwnd值
傳送方傳送小於rwnd值長的資料
接收方在確認收到資料的同時,可再次指定rwnd值
通過這種機制 接收方可以控制傳送資料的速率,當網路擁塞時可以增大視窗 又不至於傳送速率超過接收速率
首先應該明確擁塞控制與流量控制的區別
1、流量控制,控制的是點與點,區域性的流量,控制傳送的速率和流量速率
2、擁塞控制,控制的是全域性的流量,核心問題在於對擁塞狀態的檢測,對擁塞發生部位的確定,擁塞避免以及擁塞產生的應對。
慢開始演算法開始,這裡的慢指初始cwnd視窗=1,經過乙個傳輸輪次cwnd加倍。增長達到慢開始門限ssthresh,執行擁塞避免演算法。對cwnd增長方式由加倍轉為每次增加乙個最大傳送單位。
當發生超時時,cwnd=ssthresh=cwnd/2再次執行慢開始演算法。
快重傳和快恢復是對以上過程的優化
快重傳指的是,當傳送方連續接收到三個重複的確認後,立即對從確認號起的資料開始重傳,而不必等待超時。
這裡舉個例子,分別有五個資料報
p1(1-10)、p2(11-20)、p3(21-30)、p4(31-40)、p5(41-50)
這裡假設p2丟失
當收到亂序的p3時,接收方立即傳送確認ack=11,表示11之前的已經按序到達
接著收到p4 p5繼續傳送重複確認,傳送方重傳p2。取出放在快取中的失序序列p3、p4、p5,完成資料傳輸
快恢復與快重傳搭配使用,指的是當發生快重傳超時時不是執行慢開始,而是令當前cwnd值減半,並且賦值給慢開始門限。從cwnd開始直接執行擁塞避免演算法。
這樣之後就會執行擁塞避免演算法
本質上tcp的擁塞控制類似於「作死」,不斷地增大cwnd以求增大傳送速率,其實是在要平衡擁塞和速率,剛好到達傳送極限不至於擁塞,慢開始大幅靠近,達到慢開始門限,通過擁塞避免演算法遞增靠近擁塞點
TCP流量控制和擁塞控制
1 利用滑動視窗實現流量控制 如果傳送方把資料傳送得過快,接收方可能會來不及接收,這就會造成資料的丟失。所謂流量控制就是讓傳送方的傳送速率不要太快,要讓接收方來得及接收。利用滑動視窗機制可以很方便地在tcp連線上實現對傳送方的流量控制。2 設a向b傳送資料。在連線建立時,b告訴了a 我的接收視窗是 ...
TCP擁塞控制和流量控制
tcp作為面向連線的提供全雙工可靠服務協議,具有差錯控制 擁塞控制和流量控制等功能。此處所謂的擁塞控制和流量控制,就是將傳送端傳送能力 接收端接收資訊的能力以及當前的網路環境參與考慮,在網路擁塞情況嚴重或者接收端接收能力有限的情況下,減緩或暫停訊息傳送,當情況改善時,增強訊息傳送能力,加上超時 丟失...
TCP擁塞控制和流量控制
tcp作為面向連線的提供全雙工可靠服務協議,具有差錯控制 擁塞控制和流量控制等功能。此處所謂的擁塞控制和流量控制,就是將傳送端傳送能力 接收端接收資訊的能力以及當前的網路環境參與考慮,在網路擁塞情況嚴重或者接收端接收能力有限的情況下,減緩或暫停訊息傳送,當情況改善時,增強訊息傳送能力,加上超時 丟失...