您好,登錄后才能下訂單哦!
小編給大家分享一下計算機網絡中流量控制和擁塞控制有什么區別,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
主要區別:流量控制解決的是發送方和接收方速率不匹配的問題;擁塞控制解決的是避免網絡資源被耗盡的問題。流量控制是通過滑動窗口來實現的;擁塞控制是通過擁塞窗口來實現的。
流量控制和擁塞控制的區別
TCP的流量控制和擁塞控制看上去是兩個比較相近的概念,容易產生混淆。但事實上,他們在期望的目標和使用的方法是完全不同的。
流量控制解決的是發送方和接收方速率不匹配的問題,發送方發送過快接收方就來不及接收和處理。采用的機制是滑動窗口的機制,控制的是發送了但未被Ack的包數量。
擁塞控制解決的是避免網絡資源被耗盡的問題,通過大家自律的采取避讓的措施,來避免網絡有限資源被耗盡。當出現丟包時,控制發送的速率達到降低網絡負載的目的。
流量控制
流量控制是通過滑動窗口來實現的。 滑動窗口分為發送端窗口和接收端窗口。
窗口有大小限制,窗口大小是接收端用來告訴發送端目前接收端能接收的最大字節數。
窗口的大小在TCP協議頭里,大小為16位。然而在TCP協議的可選項里,還可以定義窗口的比例因子,因此實際的窗口大小可以超過64KB。窗口的含義實際上就是接收緩沖區的大小。
發送窗口維護了發送端發送的已被接收端ACK的序號,以及已經發送的最大序號,這樣就可以知道還能發送多少的新數據。
接收窗口維護了已經ACK的序號,以及所有接收到的包序號。
窗口大小在特定的一次連接通信過程中,大小是不變的。而滑動窗口是一種機制,滑動窗口的大小在發送端代表的是可發送的數據大小,在接收端代表的是可接收的數據大小,它們是動態變化的。
擁塞控制
擁塞控制是通過擁塞窗口來實現的。擁塞窗口指發送端在一個RTT內可以最多發送的數據包數。
擁塞控制一般包括慢啟動、擁塞避免兩個階段。
慢啟動階段是從1開始指數增長到限定大小的過程。
擁塞避免階段時超過限定大小之后線性增加的過程,以及發現丟包后將擁塞窗口改為1,并把限定大小減半的過程。
擴展資料
流量控制是端到端的控制,例如A通過網絡給B發數據,A發送的太快導致B沒法接收(B緩沖窗口過小或者處理過慢),這時候的控制就是流量控制,原理是通過滑動窗口的大小改變來實現。
擁塞控制是A與B之間的網絡發生堵塞導致傳輸過慢或者丟包,來不及傳輸。防止過多的數據注入到網絡中,這樣可以使網絡中的路由器或鏈路不至于過載。擁塞控制是一個全局性的過程,涉及到所有的主機、路由器,以及與降低網絡性能有關的所有因素。
流量控制機制:
設主機A向主機B發送數據。雙方確定的窗口值是400.再設每一個報文段為100字節長,序號的初始值為seq=1,大寫ACK表示首部中的卻認為為ACK,小寫ack表示確認字段的值。
接收方的主機B進行了三次流量控制。第一次把窗口設置為rwind=300,第二次減小到rwind=100最后減到rwind=0,即不允許發送方再發送過數據了。這種使發送方暫停發送的狀態將持續到主機B重新發出一個新的窗口值為止。
假如,B向A發送了零窗口的報文段后不久,B的接收緩存又有了一些存儲空間。于是B向A發送了rwind=400的報文段,然而這個報文段在傳送中丟失了。A一直等待收到B發送的非零窗口的通知,而B也一直等待A發送的數據。這樣就死鎖了。為了解決這種死鎖狀態,TCP為每個連接設有一個持續計時器。只要TCP連接的一方收到對方的零窗口通知,就啟動持續計時器,若持續計時器設置的時間到期,就發送一個零窗口探測報文段(僅攜帶1字節的數據),而對方就在確認這個探測報文段時給出了現在的窗口值。
擁塞控制機制:
慢開始和擁塞避免
發送報文段速率的確定,既要根據接收端的接收能力,又要從全局考慮不要使網絡發生擁塞,這由接收窗口和擁塞窗口兩個狀態量確定。接收端窗口(Reciver Window)又稱通知窗口(Advertised Window),是接收端根據目前的接收緩存大小所許諾的最新窗口值,是來自接收端的流量控制。擁塞窗口cwnd(Congestion Window)是發送端根據自己估計的網絡擁塞程度而設置的窗口值,是來自發送端的流量控制。
慢啟動原理:
1)當主機開始發送數據時,如果立即將較大的發送窗口的全部數據字節都注入到網絡中,那么由于不清楚網絡的情況,有可能引其網絡擁塞
2)比較好的方法是試探一下,即從小到達逐漸增大發送端的擁塞控制窗口數值
3)通常在剛剛開始發送報文段時可先將擁塞窗口cwnd設置為一個最大報文段的MSS的數值。在每收到一個對新報文段確認后,將擁塞窗口增加至多一個MSS的數值,當rwind足夠大的時候,為了防止擁塞窗口cwind的增長引起網絡擁塞,還需要另外一個變量—慢開始門限ssthresh
擁塞控制具體過程為:
1)TCP連接初始化,將擁塞窗口設置為1
2)執行慢開始算法,cwind按指數規律增長,知道cwind == ssthress開始執行擁塞避免算法,cwnd按線性規律增長
3)當網絡發生擁塞,把ssthresh值更新為擁塞前ssthresh值的一半,cwnd重新設置為1,按照步驟(2)執行。
快重傳和快恢復
一條TCP連接有時會因等待重傳計時器的超時而空閑較長的時間,慢開始和擁塞避免無法很好的解決這類問題,因此提出了快重傳和快恢復的擁塞控制方法。
快重傳算法并非取消了重傳機制,只是在某些情況下更早的重傳丟失的報文段(如果當發送端接收到三個重復的確認ACK時,則斷定分組丟失,立即重傳丟失的報文段,而不必等待重傳計時器超時)。慢開始算法只是在TCP建立時才使用。
快恢復算法有以下兩個要點:
1)當發送方連續收到三個重復確認時,就執行“乘法減小”算法,把慢開始門限減半,這是為了預防網絡發生擁塞。
2)由于發送方現在認為網絡很可能沒有發生擁塞,因此現在不執行慢開始算法,而是把cwnd值設置為慢開始門限減半后的值,然后開始執行擁塞避免算法,使擁塞窗口的線性增大。
以上是“計算機網絡中流量控制和擁塞控制有什么區別”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。