1 / 6
文档名称:

冲突退避算法的实现.doc

格式:doc   大小:291KB   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

冲突退避算法的实现.doc

上传人:wz_198613 2018/12/1 文件大小:291 KB

下载得到文件列表

冲突退避算法的实现.doc

文档介绍

文档介绍:上海大学 2009~2010 学年冬季学期研究生课程考试
实验报告
课程名称: 计算机通信网络技术课程编号: 002000709
报告题目: 实验二冲突退避算法的实现
研究生姓名: 陈志强学号: 09720832

论文评语:
成绩: 任课教师:
评阅日期:
冲突退避算法的实现实验报告

在CSMA/CD协议中,一旦检测到冲突,为降低再冲突的概率,需要等待一个随机时间,然后再使用CSMA方法试图传输。为了保证这种退避维持稳定,采用了二进制指数退避算法的技术。编程来实现二进制指数退避算法。
2. 实验环境
硬件环境:PC微机
软件环境:Windows xp Microsoft Visual C++
3. 实验步骤
(1) 实验原理
二进制指数退避算法过程如下:
1. 将冲突发生后的时间划分为长度为2t的时隙
2. 发生第一次冲突后,各个站点等待0或1个时隙在开始重传
3. 发生第二次冲突后,各个站点随机地选择等待0,1,2或3个时隙在开始重传
4. 第i次冲突后,在0至2的i次方减一间随机地选择一个等待的时隙数,在开始重传
5. 10次冲突后,选择等待的时隙数固定在0至1023(2的10次方减一)间
6. 16次冲突后,发送失败,报告上层。
(2) 实验流程图
根据退避算法的过程,可以写出退避算法的流程图。图下(图一)所示。
000000000000000000000000000000000000000000
图一
(3) 实验程序段
根据退避算法的原理和流程图,编写模拟退避算法的实验程序如下:
int main()
{
int n=0;
string str;
int m;
cout<<"人工模拟冲突检测:是否检测到站点冲突(YES/NO)?"<<endl;
while (cin>>str)
{
if(str[0] == 'N' || str[0] == 'n' )
{cout<<"没有检测到站点之间冲突,正常发送!"<<endl;
return 0;
}
else if(str[0] == 'Y' || str[0] == 'y')
{
n++;
if(n>0 && n <= 10)
{
m = pow(2,n);
srand((unsigned)time(NULL));
cout <<"检测到第"<<n<<"次冲突,随机等待:"<<rand() % m *<<"毫秒后重发!" <<endl;
cout <<endl;
cout<<"人工模拟冲突检测:是否检测到站点冲突(YES/NO)?"<<endl;
}
else if(n>10 && n <= 16)
{
cout <<"检测到第"<<n<<"次冲突,等待一个固定时间:"<<1023*<<"毫秒后重发!" <<endl;
cout <<endl;
cout<<"