2020-11-05:談一下TCP的擁塞控制。#福大大架構師每日一題#
uj5u.com熱心網友回復:
網路擁塞:當用戶對網路資源的需求量,超過了服務器提供的可用資源數量,這時就出現了擁塞現象。如果讓這種情況一直持續下去,那么網路的吞吐量逐漸下降。
TCP提供了四種擁塞控制的演算法:
慢開始:每次完整的傳輸完后,cwnd += cwnd
擁塞避免:每次完整的傳輸完后,cwnd += 1
這兩種演算法,定義了一個"擁塞視窗"的變數"cwnd","慢開始"演算法中的"慢"就是指這個值開始很小;然后定義了一個"擁塞避免"演算法啟用的條件變數"ssthresh",每次進行資料報文傳輸的時候,網路資源的發送數量等于 cwnd,先判斷 cwnd 和 ssthresh,來確定使用哪種演算法
當cwnd < ssthresh使用慢開始演算法,相等時兩者皆可,cwnd > ssthresh時使用擁塞避免。
假設AB雙方傳送報文m1-m9
快重傳:A 只管傳東西給 B,如果 B 沒收到 m3,則會一直傳達確認收到 m2 信號,只要不達到三次,A 依然繼續傳,達到三次后,A就會知道你沒有收到m3,然后就會開始重傳 m3。就不需要進行計數器超時后完全重傳了,不會有誤認為擁塞的情況。
快恢復:當 B 傳達了三次重復確認信號后,啟用快恢復演算法
設定 cwnd /= 2,再開始執行擁塞避免演算法 || 設定 ssthresh += 3
uj5u.com熱心網友回復:
TCP的四種擁塞控制演算法1.慢開始
2.擁塞控制
3.快重傳
4.快恢復
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/203743.html
標籤:Java相關
