TCP的擁塞控制
計(jì)算機(jī)網(wǎng)絡(luò)中的帶寬鸭巴、交換結(jié)點(diǎn)中的緩存和處理機(jī)等眷细,都是網(wǎng)絡(luò)的資源。在某段時(shí)間鹃祖,若對(duì)網(wǎng)絡(luò)中某一資源的需求超過了該資源所能提供的可用部分溪椎,網(wǎng)絡(luò)的性能就會(huì)變壞。這種情況就叫做擁塞恬口。
擁塞控制就是防止過多的數(shù)據(jù)注入網(wǎng)絡(luò)中校读,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不致過載。擁塞控制是一個(gè)全局性的過程祖能,和流量控制不同歉秫,流量控制指點(diǎn)對(duì)點(diǎn)通信量的控制。
常用方法
1.慢開始與擁塞避免
2.快重傳和快恢復(fù)
3.隨機(jī)早期檢測(cè)RED
更多內(nèi)容可以參看這篇文章
滑動(dòng)窗口
滑動(dòng)窗口概念不僅存在于數(shù)據(jù)鏈路層养铸,也存在于傳輸層雁芙,兩者有不同的協(xié)議轧膘,但基本原理是相近的。其中一個(gè)重要區(qū)別是却特,一個(gè)是針對(duì)于幀的傳送扶供,另一個(gè)是字節(jié)數(shù)據(jù)的傳送。
滑動(dòng)窗口(Sliding window)是一種流量控制技術(shù)裂明。早期的網(wǎng)絡(luò)通信中椿浓,通信雙方不會(huì)考慮網(wǎng)絡(luò)的擁擠情況直接發(fā)送數(shù)據(jù)。由于大家不知道網(wǎng)絡(luò)擁塞狀況闽晦,同時(shí)發(fā)送數(shù)據(jù)扳碍,導(dǎo)致中間節(jié)點(diǎn)阻塞掉包,誰(shuí)也發(fā)不了數(shù)據(jù)仙蛉,所以就有了滑動(dòng)窗口機(jī)制來(lái)解決此問題笋敞。
1比特滑動(dòng)窗口協(xié)議
當(dāng)發(fā)送窗口和接收窗口的大小固定為1時(shí),滑動(dòng)窗口協(xié)議退化為停等協(xié)議(stop-and-wait)荠瘪。該協(xié)議規(guī)定發(fā)送方每發(fā)送一幀后就要停下來(lái)夯巷,等待接收方已正確接收的確認(rèn)(acknowledgement)返回后才能繼續(xù)發(fā)送下一幀。由于接收方需要判斷接收到的幀是新發(fā)的幀還是重新發(fā)送的幀哀墓,因此發(fā)送方要為每一個(gè)幀加一個(gè)序號(hào)趁餐。由于停等協(xié)議規(guī)定只有一幀完全發(fā)送成功后才能發(fā)送新的幀,因而只用一比特來(lái)編號(hào)就夠了篮绰。
后退n協(xié)議
由于停等協(xié)議要為每一個(gè)幀進(jìn)行確認(rèn)后才繼續(xù)發(fā)送下一幀后雷,大大降低了信道利用率,因此又提出了后退n協(xié)議吠各。后退n協(xié)議中臀突,發(fā)送方在發(fā)完一個(gè)數(shù)據(jù)幀后,不停下來(lái)等待應(yīng)答幀贾漏,而是連續(xù)發(fā)送若干個(gè)數(shù)據(jù)幀候学,即使在連續(xù)發(fā)送過程中收到了接收方發(fā)來(lái)的應(yīng)答幀,也可以繼續(xù)發(fā)送纵散。且發(fā)送方在每發(fā)送完一個(gè)數(shù)據(jù)幀時(shí)都要設(shè)置超時(shí)定時(shí)器盒齿。只要在所設(shè)置的超時(shí)時(shí)間內(nèi)仍未收到確認(rèn)幀,就要重發(fā)相應(yīng)的數(shù)據(jù)幀困食。如:當(dāng)發(fā)送方發(fā)送了N個(gè)幀后,若發(fā)現(xiàn)該N幀的前一個(gè)幀在計(jì)時(shí)器超時(shí)后仍未返回其確認(rèn)信息翎承,則該幀被判為出錯(cuò)或丟失硕盹,此時(shí)發(fā)送方就不得不重新發(fā)送出錯(cuò)幀及其后的N幀。
選擇重傳協(xié)議
在后退n協(xié)議中叨咖,接收方若發(fā)現(xiàn)錯(cuò)誤幀就不再接收后續(xù)的幀瘩例,即使是正確到達(dá)的幀啊胶,這顯然是一種浪費(fèi)。另一種效率更高的策略是當(dāng)接收方發(fā)現(xiàn)某幀出錯(cuò)后垛贤,其后繼續(xù)送來(lái)的正確的幀雖然不能立即遞交給接收方的高層焰坪,但接收方仍可收下來(lái),存放在一個(gè)緩沖區(qū)中聘惦,同時(shí)要求發(fā)送方重新傳送出錯(cuò)的那一幀某饰。一旦收到重新傳來(lái)的幀后,就可以原已存于緩沖區(qū)中的其余幀一并按正確的順序遞交高層善绎。這種方法稱為選擇重發(fā)
流量控制
下面來(lái)張圖看看控制流量的大致原理
TCP的特點(diǎn)之一是提供體積可變的滑動(dòng)窗口機(jī)制黔漂,支持端到端的流量控制。TCP連接階段禀酱,雙方協(xié)商窗口尺寸炬守,同時(shí)接收方預(yù)留數(shù)據(jù)緩存區(qū);
發(fā)送方根據(jù)協(xié)商的結(jié)果剂跟,發(fā)送符合窗口尺寸的數(shù)據(jù)字節(jié)流减途,并等待對(duì)方的確認(rèn);
發(fā)送方根據(jù)確認(rèn)信息曹洽,改變窗口的尺寸鳍置,增加或者減少發(fā)送未得到確認(rèn)的字節(jié)流中的字節(jié)數(shù)。調(diào)整過程包括:如果出現(xiàn)發(fā)送擁塞衣洁,發(fā)送窗口縮小為原來(lái)的一半墓捻,同時(shí)將超時(shí)重傳的時(shí)間間隔擴(kuò)大一倍。
滑動(dòng)窗口機(jī)制為端到端設(shè)備間的數(shù)據(jù)傳輸提供了可靠的流量控制機(jī)制坊夫。然而砖第,它只能在源端設(shè)備和目的端設(shè)備起作用,當(dāng)網(wǎng)絡(luò)中間設(shè)備(例如路由器等)發(fā)生擁塞時(shí)环凿,滑動(dòng)窗口機(jī)制將不起作用梧兼。