1. 程式人生 > >計算機網路(三)傳輸層—TCP擁塞控制

計算機網路(三)傳輸層—TCP擁塞控制

TCP擁塞控制

所謂擁塞控制,就是防止過多的資料注入到網路中,從而使網路中的路由器或鏈路不致過載。要注意用擁塞控制與流量控制的區別,擁塞控制是一個全域性性的過程,涉及到所有的主機、路由器,以及乙太網。

一般有四個演算法:慢開始、擁塞避免、快重傳、快恢復

流量控制與其的區別主要是:流量控制是指傳送端和接收端之間點對點通訊量的控制,即抑制傳送端傳送的速率,以便接收端來得及接收。擁塞控制則必須保證子網能承載待發送的資料,一般有靜態預防的並環控制閥和檢測發生擁塞的動態的閉環控制法。

計算機網路中的頻寬、交換節點中的快取和處理機等,都是網路的資源,在某段時間內,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的效能就要變壞,這種情況就叫做擁塞


慢開始:

新建立的連線傳送TCP報文時cwnd=1即一個報文段長度MSS,在收到確認報文(RTT時間嘛)時cwnd*2,以2倍數增加,直到達到一個閾值ssthresh(閾值為了防止擁塞視窗增長過大引起網路擁塞),改用擁塞避免

擁塞避免:

傳送端的cwnd每經過一個RTTcwnd+1,加法增大,而當出現一個超時時,意味著發生網路擁塞,慢開始的ssthresh設定為當前cwnd/2(乘法減小),然後cwnd重置為1即一個報文段長度MSS執行慢開始演算法。目的是迅速減少主機發送到網路的分組數,使發生擁塞的路由器有足夠時間將佇列中的分組處理完畢。

 

快重傳:即可靠傳輸的冗餘ACK情況,丟包就意味著網路擁塞嘛

原理:快重傳要求接收方每收到一個失序的報文段後就立即發出重複確認(重複傳送對前面有序部分的確認),如果傳送方連續收到3個重複確認,就應該立即重傳對方未收到的報文段(有收到重複確認,說明後面的報文段都送達了,只有中間丟失的報文段未送達)。

注意:當傳送方連續收到3個重複確認時,就把慢開始的閾值減半,為了預防網路擁塞。(但後面不是執行慢開始演算法)

快恢復:傳送冗餘ACK的情況,慢開始閾值ssthresh減半,,但是cwnd不是重置為1的,而是為ssthresh,然後執行擁塞避免演算法