能造坦克,打飞机,开航母,却拿不到驾照的痛苦你敢信?
上午做完课程设计任务得知悲剧的事实,网络考试已然挂科,询分无果,淡淡的忧伤。
关于TCP的拥塞控制今天也算是略懂皮毛了。
关于给出的阈值,此字读做(yu,第四声),若当前窗口小于阈值则呈倍数增长(double倍),这阶段称之为慢启动。
若大于了阈值则呈线性+1增长,这阶段称之为拥塞控制。
当然然后给出了第几轮产生重传,第几轮产生了快重传。
重传的概念就是阈值为当前拥塞窗口的一半,拥塞窗口变为1,然后重新进行慢启动。
而快重传也是阈值为当前拥塞窗口的一半,但拥塞窗口为当前阈值,进行拥塞控制操作。
唉,就这样了吧。考试就这样挂了,真是意料之外,淡淡的忧伤。。。
//快重传回到阈值,重传回到1
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int a[1000],ss,k,n,m,i;
int main()
{
cout<<"\t\t\tTCP拥塞控制算法的主要算法(最新版本)"<<endl;
cout<<"请输入阈值的初值:";
cin>>ss;
cout<<endl;
cout<<"请输入显示的轮次:";
cin>>k;
cout<<endl;
cout<<"请输入第几个轮次发生重传:";
cin>>n;
cout<<endl;
cout<<"请输入第几个轮次发生快重传:";
cin>>m;
cout<<endl;
long long cwnd=1;
int flag=1;
a[0]=1;
for (i=1;i<=k;i++){
if (i==n){
ss=cwnd/2;
cwnd=1;
a[i]=cwnd;
flag=1;
}else if (i==m){
ss=cwnd/2;
cwnd=ss;
a[i]=ss;
flag=0;
}else {
if (flag){
cwnd*=2;
a[i]=cwnd;
if (cwnd*2>=ss){
if (i+1!=m && i+1!=n && cwnd<ss){
a[++i]=ss;
cwnd=ss;
}//else cwnd/=2;
flag=0;
}
}else{
cwnd++;
a[i]=cwnd;
}
}
}
cout<<"轮次\t拥塞窗口"<<endl;
for (i=0;i<=k;i++)
cout<<i<<"\t"<<a[i]<<endl;
return 0;
}