阈值:帮助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;
}
}
}
}
}
参考:《计算机网络:原理与实践》陈鸣
我是菜鸟,我在路上。