-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
安卓tcp擁塞算法哪個好(tcp擁塞算法cubic reno)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于安卓tcp擁塞算法哪個好的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、tcp擁塞控制算法包括
擁塞控制的算法有:慢開始、擁塞避免、快重傳、快恢復(fù)。
慢開始和擁塞避免發(fā)送方維持一個擁塞窗口的狀態(tài)變量,其大小取決于網(wǎng)絡(luò)的擁塞程度,動態(tài)地變化,而發(fā)送窗口一般取擁塞窗口和對方給出的接收窗口之間的最小值。慢開始算法的核心是從小到大逐漸增大擁塞窗口的數(shù)值。
二、計算機網(wǎng)絡(luò)與通信中常見的tcp擁塞算法有幾種
介紹TCP協(xié)議的擁塞控制算法:慢啟動、擁塞避免、快重傳和快恢復(fù)等。給出了使用OPNET仿真建模的方法,直觀地演示了擁塞控制算法的運行過程,對結(jié)果進行分析。從方法學(xué)的角度看,這些對于研究、開發(fā)和教學(xué)均有一定的指導(dǎo)意義和參考價值。
0引言在某段時間內(nèi),網(wǎng)絡(luò)中要求傳輸過多的分組時,網(wǎng)絡(luò)的性能開始下降,這種情況即稱為擁塞。簡單的說就是當(dāng)用戶對網(wǎng)絡(luò)資源的需求超過了網(wǎng)絡(luò)能提供的可用資源時的一種狀態(tài),即對資源的需求的總和在于系統(tǒng)可用資源。單純地增加網(wǎng)絡(luò)資源并不能解決擁塞問題,是這因為擁塞本身是一
三、TCP Congestion Control
rfc5681 詳細(xì)說明了TCP的四個擁塞控制算法:慢啟動、擁塞避免、快速重傳和快速恢復(fù)。
或者,利用選擇性確認(rèn) (SACK) 的 TCP 可以利用 SACK 信息來確定何時傳入的ACK是“重復(fù)”。
慢啟動和擁塞避免算法在TCP發(fā)送端使用,用于控制進入網(wǎng)絡(luò)的數(shù)據(jù)量。
為了實現(xiàn)這兩個算法,在TCP的per-connection階段引入了兩個變量:
開始向未知情況的網(wǎng)絡(luò)進行傳輸時要求TCP 緩慢探測網(wǎng)絡(luò)以確定可用帶寬 ,從而避免不適當(dāng)?shù)谋l(fā)數(shù)據(jù)造成網(wǎng)絡(luò)擁塞。慢啟動算法的目標(biāo):在 傳輸開始階段(采用慢啟動算法) 和 重傳定時器檢測到丟包之后(重啟慢啟動算法) 避免網(wǎng)絡(luò)擁塞。另外,慢啟動使用"ACK clock"。"ACK clock"在TCP發(fā)送端使用,被用于 慢啟動、擁塞避免 以及 丟包恢復(fù)算法。
cwnd 的初始值 IW 根據(jù) SMSS 的大小而設(shè)置 :
ssthresh 可以設(shè)置為任意高度 ,但 ssthresh 在遇到擁塞時必須降低。將 ssthresh 設(shè)置盡可能高可以自適應(yīng)網(wǎng)絡(luò)條件,而不是一些采用任意的主機限制來決定發(fā)送速率。在某些 cases 下,例如系統(tǒng)對網(wǎng)絡(luò)路徑有充分的了解,那么更謹(jǐn)慎地設(shè)置 ssthresh 初始值可能有好處。
何時使用慢啟動算法、擁塞避免算法
在慢啟動期間,TCP的cwnd在每接收到一個新數(shù)據(jù)的遞增確認(rèn)的ACK后至少增長SMSS個字節(jié)。當(dāng)cwnd的大小超過ssthresh后或當(dāng)觀察到擁塞后 慢啟動結(jié)束。雖然傳統(tǒng)的 TCP 實現(xiàn)會在收到覆蓋新數(shù)據(jù)的 ACK 后精確地通過 SMSS 字節(jié)增加 cwnd,但我們建議 TCP 實現(xiàn)增加 cwnd:
其中 N 是在到來的 ACK 中確認(rèn)的先前未確認(rèn)的字節(jié)數(shù)(接收端會采用累積確認(rèn)、延遲確認(rèn)等算法,因此存在先前未確認(rèn)的字節(jié)數(shù))。并且不能每個ACK都增加cwnd的大小,畢竟會存在重復(fù)的ACK。
在擁塞避免期間,TCP的cwnd在每個往返時間(RTT)增加一個 full-sized segment。擁塞避免算法持續(xù)到發(fā)生擁塞。在擁塞避免期間增加 cwnd 的基本準(zhǔn)則是:
在擁塞避免期間增加 cwnd 的推薦方法是計算新數(shù)據(jù)的 ACK 已確認(rèn)的字節(jié)數(shù) (同 slow start),但不能每個 RTT 觸發(fā)的 cwnd 的增長不能超過 SMSS bytes。當(dāng)確認(rèn)的字節(jié)數(shù)達(dá)到 cwnd,可以增長 SMSS bytes 。
在擁塞避免期間,TCP可以使用的另一個通用的公式是:
在每個確認(rèn)新數(shù)據(jù)的 ACK 到來時執(zhí)行此調(diào)整。該公式為每個 RTT 將 cwnd 增加 1 個 full-sized segment 的基本原理提供了可接受的近似值。
實現(xiàn)說明:
同:
異:
當(dāng)TCP發(fā)送端通過重傳定時器檢測到 segment loss 且該 segment 尚未通過重傳定時器重新發(fā)送時, 此時 ssthresh 的值必須重新設(shè)置為不超過下列等式中給出的值:
其中,F(xiàn)lightSize 是網(wǎng)絡(luò)中未完成數(shù)據(jù)的數(shù)量。
另一方面,當(dāng)TCP發(fā)送端通過重傳定時器檢測到 segment loss 且該 segment 已經(jīng)通過重傳定時器重新發(fā)送至少一次時,此時 ssthresh 的值保持不變。
實現(xiàn)說明:
此外,在超時(Retransimission Timer)時,cwnd 必須設(shè)置為不超過丟失窗口 LW,LW 等于 1 個 full-sized segment(無論 IW 的值如何)。 因此,在重傳 loss segment 后,TCP 發(fā)送方使用慢啟動算法將窗口從1 個 full-sized segment 增加到新的 ssthresh 值,此后再次使用擁塞避免算法。
超時后基于慢啟動的丟失恢復(fù)(loss recovery)可能會導(dǎo)致虛假重傳,從而觸發(fā)重復(fù)確認(rèn)。 在 TCP 實現(xiàn)中,對這些重復(fù) ACK 到達(dá)的反應(yīng)差異很大。 本文檔沒有具體說明如何處理此類確認(rèn),但可以指出這是一個可以從額外關(guān)注、實驗和規(guī)范中受益的領(lǐng)域。
當(dāng)一個亂序的 segment 到達(dá)時,TCP的接收端立即發(fā)送一個重復(fù)的 ACK 。這個 ACK 的目的是通知 發(fā)送端:接收端接收到了一個亂序的 segment 以及接收端目前期待收到的序列號。從發(fā)送端的視角來看,重復(fù)的 ACK 可能會引起一些網(wǎng)絡(luò)問題。
另外,當(dāng)TCP 的接收端接收到的 segment 填充空間中全部或部分間隙時,TCP接收端應(yīng)該立即發(fā)送 ACK 。這將為發(fā)送方的超時重傳、快速重傳或高級丟失恢復(fù)算法等方法提供更及時的信息。
TCP發(fā)送端基于到來的重復(fù)ACK,使用快速重傳算法來檢測和修復(fù)丟包。
快速重傳算法 :快速重傳算法使用3個重復(fù)的ACK作為一個segment已丟失的指示,在接收到3個重復(fù)的ACK后,TCP重新傳輸看似丟失的segment,而無需等待重傳計時器的觸發(fā)。
快速恢復(fù)算法 :在快速重傳算法發(fā)送看似丟失的 segment 之后,快速恢復(fù)算法控制新數(shù)據(jù)的傳輸,直到非重復(fù)的ACK到達(dá)。
收到重復(fù)的ACK不執(zhí)行慢啟動的原因:收到重復(fù)的ACK不能完全表明一個 segment 已經(jīng)丟失,因為該部分 segment 最可能已經(jīng)離開了網(wǎng)絡(luò)(segment 在接收端的緩沖區(qū)中,不再被視作網(wǎng)絡(luò)資源)。此外,由于保留了 ACK 的時鐘(重傳定時器),TCP發(fā)送端可以繼續(xù)傳輸新的 segments 。
上面描述的 TCP 擁塞控制算法的一個已知問題是:TCP在空閑一段相對長的時間之后,TCP將被允許傳輸潛在的不適當(dāng)?shù)牧髁客话l(fā)。
[Jac88] 建議 TCP 在相對較長的空閑期后使用慢啟動來重新啟動傳輸。 慢啟動用于重新啟動 ACK 時鐘,就像它在傳輸開始時所做的那樣。 該機制已以下列方式廣泛部署。 當(dāng) TCP 在超過一次重傳超時時長后仍未收到一個 segment 時,cwnd 會在傳輸開始前減小到重新啟動窗口 (RW) 的值。
出于本標(biāo)準(zhǔn)的目的,我們定義RW = min(IW,cwnd)。
因此,如果 TCP 在超過重傳超時的時間間隔內(nèi)沒有發(fā)送數(shù)據(jù),則 TCP 應(yīng)該在開始傳輸之前將 cwnd 設(shè)置為不超過 RW。
[RFC112] 提出的 延遲應(yīng)答算法 可以應(yīng)用在TCP的接收端。當(dāng)然在采用 延遲應(yīng)答 時,TCP的接收端不必過度延遲應(yīng)答。
延遲應(yīng)答的算法:
在某些情況下,發(fā)送方和接收方可能無法就什么構(gòu)成 full-sized segment 達(dá)成一致。 如果每次從發(fā)送方接收到 2*RMSS 字節(jié)的新數(shù)據(jù)時至少發(fā)送一個 ACK,則認(rèn)為實現(xiàn)符合此要求,其中 RMSS 是接收方指定給發(fā)送方的最大段大小(或默認(rèn)值 536 字節(jié),根據(jù) [RFC1122],如果接收方在連接建立期間未指定 MSS 選項)。
當(dāng)檢測到數(shù)據(jù)窗口中的第一次丟失時,ssthresh 必須設(shè)置為不超過等式 給出的值。 其次,在修復(fù)新的數(shù)據(jù)窗口中的所有 lost segments 之前,每個 RTT 中傳輸?shù)膕egments 必須不超過檢測到丟失時未完成的segment的數(shù)量的一半。 最后,在給定的段窗口中的所有損失
最后,在給定的段窗口中的所有丟失都已成功重傳后,cwnd 必須設(shè)置為不超過 ssthresh,并且必須使用擁塞避免來進一步增加 cwnd。 在兩個連續(xù)的數(shù)據(jù)窗口中丟失,或丟失重傳,應(yīng)被視為擁塞的兩個指示,因此,在這種情況下,cwnd(和 ssthresh)必須降低兩次。
我們建議 TCP 實施者采用某種形式的高級丟失恢復(fù),可以應(yīng)對數(shù)據(jù)窗口中的多個丟失。 [RFC3782] 和 [RFC3517] 中詳述的算法符合上述一般原則。 我們注意到,雖然這不是符合上述一般原則的僅有的兩種算法,但這兩種算法已經(jīng)過社區(qū)審查,目前處于標(biāo)準(zhǔn)軌道上。
本文檔要求 TCP 在重傳超時和重復(fù)確認(rèn)到達(dá)的情況下降低其發(fā)送速率。 因此,攻擊者可以通過導(dǎo)致數(shù)據(jù)包或其確認(rèn)丟失,或者通過偽造過多的重復(fù)確認(rèn)來損害 TCP 連接的性能。
為了響應(yīng) [SCWA99] 中概述的 ACK 分割攻擊,本文檔建議根據(jù)每個到達(dá)的 ACK 中新確認(rèn)的字節(jié)數(shù)而不是每個到達(dá)的 ACK 上的特定常量來增加擁塞窗口( cwnd += min (N, SMSS) ,N 是在到來的 ACK 中確認(rèn)的先前未確認(rèn)的字節(jié)數(shù))。
互聯(lián)網(wǎng)在很大程度上依賴于這些算法的正確實施,以保持網(wǎng)絡(luò)穩(wěn)定性并避免擁塞崩潰。 攻擊者可以通過偽造過多的重復(fù)確認(rèn)或?qū)π聰?shù)據(jù)的過多確認(rèn),使 TCP 端點在面對擁塞時做出更積極的響應(yīng)。 可以想象,這樣的攻擊可能會使網(wǎng)絡(luò)的一部分陷入擁塞崩潰。
四、在TCP的擁塞控制中,什么是慢開始、擁塞避免、快重傳和快恢復(fù)算法
慢開始:在主機剛剛開始發(fā)送報文段時可先將擁塞窗口cwnd設(shè)置為一個最大報文段MSS的數(shù)值。在每收到一個對新的報文段的確認(rèn)后,將擁塞窗口增加至多一個MSS的數(shù)值。
擁塞避免:當(dāng)擁塞窗口值大于慢開始門限時,停止使用慢開始算法而改用擁塞避免算法。
快重傳算法:發(fā)送端只要一連收到三個重復(fù)的ACK即可斷定有分組丟失了,就應(yīng)該立即重傳丟手的報文段而不必繼續(xù)等待為該報文段設(shè)置的重傳計時器的超時。
接下來執(zhí)行的不是慢啟動算法而是擁塞避免算法。這就是快速恢復(fù)算法。.
防止擁塞的方法
(1)在傳輸層可采用:重傳策略、亂序緩存策略、確認(rèn)策略、流控制策略和確定超時策略。
(2)在網(wǎng)絡(luò)層可采用:子網(wǎng)內(nèi)部的虛電路與數(shù)據(jù)報策略、分組排隊和服務(wù)策略、分組丟棄策略、路由算法和分組生存管理。
(3)在數(shù)據(jù)鏈路層可采用:重傳策略、亂序緩存策略、確認(rèn)策略和流控制策略。
以上就是關(guān)于安卓tcp擁塞算法哪個好相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
安卓微信恢復(fù)聊天記錄(微信恢復(fù)某個人全部聊天記錄)
暢談景觀設(shè)計的理解(暢談景觀設(shè)計的理解和看法)