閾值:幫助TCP判斷何時進入阻塞避免區域,表示從慢啓動階段進入阻塞階段的閾值。
void slow_start(void){
CWin=1MSS;
n=0;
while(沒有丟包){
if(在RTT期間接受到了ACK){
CWin=CWin*2的n次方;
n++;
if(CWin>=ssthresh){ //若窗口大於閾值
//去執行加性增算法
break;
}
}else{
CWin=1MSS;
}
}
}
void additive_increase(void){
ssthresh=CWin/2;
while(收到ACK){
if(CWin>=ssthresh){
CWin=CWin+MSS*(MSS/CWin);
if(收到三個冗餘的ACK){
ssthresh=CWin/2;
CWin=CWin/2;
break;
}
if(檢測到超時事件){
ssthresh=CWin/2;
CWin=1MSS;
if(CWin<ssthresh){
//執行slow_start算法
break;
}
}
}
}
}
參考:《計算機網絡:原理與實踐》陳鳴
我是菜鳥,我在路上。