將計算機思惟故事化——之計算機網絡TCP擁塞控制算法

互聯網各主機彼此通訊的背後。有無數的信息在互相發送,來往忙碌。爲了形象化這個過程,可以引入中國古代信息傳遞的經典景象——奏章。奏章是古代各層官員向帝王進言陳事的文書,驛卒攜帶奏章前往京城,爲地方官員傳遞奏章,同一時候從京城帶回該奏章的批覆。算法


在戰爭爆發或天然災害等國事緊急時,奏章頻傳,地方官員常常不能在第一時間內獲得京城的批覆,主要緣由有兩點網絡

第一。大量傳遞奏章的驛卒都趕往京城。交通出現擁擠。必定程度上添加了驛卒往返的時間;post

第二。皇帝審閱奏章速度有限,面對過多的奏章沒法作到及時地批覆。spa

【在計算機網絡通信中。爲了緩解這兩個問題,分別引入「擁塞控制」和「流量控制」兩種服務:擁塞控制考慮的是整體網絡的負載,防止過多的數據注入網絡,避免通訊時延的添加;流量控制則抑制發送端發送數據的速率,以便接收端來得及接收】計算機網絡


在這裏,只討論怎樣緩解第一種問題(即交通擁擠)帶來的麻煩。因特網的標準定義中有四種擁塞控制辦法來處理這個問題。it

【當出現擁塞時,發送端並不能瞭解到擁塞發生的細節,對於通訊鏈接的發送端而言,擁塞每每表現在通訊時延的添加。不能在指望時間內獲得反饋確認】class


在國事緊急時期剛開始時,中央規定:第一天,各層官員天天僅僅能上呈一封奏章。皇帝天然可以從容地批覆所有奏章,並讓驛卒帶回批覆,地方官員看到第一天的一封奏章獲得批覆,心照不宣地在次日上呈兩封奏章,同理。假設次日晚上兩封都獲得了批覆,代表第三天可以上呈四封,以此類推……基礎

【這個算法叫作「慢開始算法」。天天上呈奏章數被稱爲「擁塞窗體(cwnd)」,初始時。先令擁塞窗體cwnd=1,每通過一個傳輸輪次(即往返時延RTT)且收到確認,擁塞窗體大小cwnd就會加倍】互聯網


隨着一每天過去。地方官員上呈奏章數目呈指數增加。前往京城的驛卒也愈來愈多——快馬飛馳,擾民傷民——京城的交通狀況有了惡化的苗頭,因而朝中治安重臣開始實施新規定:一旦天天上呈的奏章數達到了上限值。在獲得皇帝的批覆後,第二天可上呈的奏章數再也不翻倍,而是僅僅添加一封im

這樣,儘管天天趕往京城的驛卒數還在增加。卻再也不像前段時間那樣指數增加了。

【這個算法叫「擁塞避免算法」,當擁塞窗體大小按指數增加達到上限值(這個值與當前網絡狀態有關,被稱爲「闕值(ssthresh)」)時,每通過一個傳輸輪次(即往返時延RTT)且收到確認,擁塞窗體大小cwnd就加1,而不是加倍】


新規定運行後,趕往京城的驛卒在緩慢添加,直到某天,京城最終出現了交通擁擠的狀況,馬如龜速,以至於驛卒在一天以內不能帶回奏章的批覆,地方官員到了晚上還見不到驛卒回來,知道京城交通出現了問題。而問題的解決辦法就在於本身天天派出的驛卒太多。很是聰明的是。第二天他們又會又一次依照一天一封的規定上呈奏章。而對於治安重臣。京城交通擁擠也應該解決,因而開始反思本身執法過程的漏洞,最後得出的結論是:上限值的大小設置不恰當,因而決定設爲此時驛卒數(即奏章數)的一半

這樣。地方官員又又一次開始了一天一封的「指數增加階段」,而治安重臣也設定了新的上限值。

總之。新的一輪「指數增加-線性增加」又開始了。

【當網絡出現擁塞時。不論是在「慢開始算法」階段仍是在「擁塞避免算法」階段,僅僅要發送端沒有按時收到確認,網絡就把闕值(ssthresh)設置爲發生擁塞時發送端擁塞窗體(cwnd)的一半,而後把擁塞窗體(cwnd)又一次初始化爲1,又一次運行慢開始算法】


後來,由於京城交通擁擠常發生,因此地方官員僅僅有等到晚上。才知道京城交通發生了擁擠,因此但願能有個小小的預知。如此,治安重臣想出了辦法,因其瞭解京城交通情況,可以提早推斷驛卒可否夠當晚帶回批覆。當了解到某驛卒不能趕回時。他便派遣本身轄下的驛卒,三人一組,出京城直奔地方。告知地方官員沒必要再等晚上的批覆了

【這個算法叫作「快重傳」,當發送端收到接受端連續三個確認信息時,代表網絡已經出現了擁塞。而發送端沒必要再等待本身預期中的計時器超時】


一旦地方官員提早獲得了消息。知道驛卒又多了,京城又堵了。地方官員又會鬱悶地在第二天開始一天一封的「指數增加階段」。

同一時候,治安重臣也考慮到地方官員大量奏章上呈的願望,也折衷地想了還有一個辦法:在改動上限值爲擁擠時驛卒數一半的同一時候。讓地方官員沒必要又一次從一天一封開始,而是讓天天上呈的奏章數跟新上限值同樣。這樣直接跳過「指數增加」階段,直接進入「線性增加」階段。

【這個算法叫作「快恢復算法」,當發送端收到接受端連續三個確認信息時。即網絡發生擁塞時,網絡把闕值(ssthresh)設置爲出現擁塞時發送端擁塞窗體大小(cwnd)的一半的同一時候,對擁塞窗體大小(cwnd)也相同操做,從而直接運行「擁塞避免算法」,使擁塞窗體大小線性添加】


以上就是標準互聯網定義中TCP擁塞控制的四種算法(慢開始算法、擁塞避免算法、快重傳算法、快恢復算法),當中慢開始算法、擁塞避免算法是擁塞控制的基礎,快重傳算法、快恢復算法是前兩者的改進



* 思惟碰撞,不要忘了與好友分享!

將來將推出「將計算機思惟故事化」系列。謝謝你們的關注!

*

相關文章
相關標籤/搜索