停止等待协议模拟程序实现
frame_error_flag=1; //出错 printf("frame:%d transmission error\t",ns); newsend_flag=0;
四、receive_frame()函数流程
strcpy(receiving_frame_buf,"rec eiving frame"); ns==vr strcat(receiving_frame_buf,sendi ng_frame_buf+13); printf("%s\n",receiving_frame_b uf); vr=1-vr; delay(Network_Delay);
实验步骤 算法分析
一、主程序工作流程 while(!kbhit()) //非键盘输入 { send_frame(); //发送数据帧
差错判断
Y
}
receive_frame(); //接收帧
二、send_frame() 函数流程
waiting_flag==1
Y ackn==-1 && time1>TIMEOUT Y N
接收结点工作流程
(1) V(R)←0。 (2) 等待。 (3) 收到一个数据帧; 若 N(S) = V(R),则执行(4); 否则丢弃此数据帧,然后转到(6)。 (4) 将收到的数据帧中的数据部分送交上层软件 (也就是数据链路层模型中的主机)。 (5) V(R)←[1 V(R)]。 (6) n←V(R); 发送确认帧 ACKn,转到(2)。
ackn=vr;
N
start=clock(); waiting_flag=1; send newsend_flag=1; ackn=-1;
ackn==-1
N
ackn is expected Time not out
Y
send start=clock(); waiting_flag=1; newsend_flag=1; ackn=-1;
实验原理 停止等待协议算法
发送结点工作流程
(1) (2) (3) (4) (5) (6) (7) 从主机取一个数据帧,送交发送缓存。 V(S)←0。 N(S)←V(S)。 将发送缓存中的数据帧发送出去。 设置超时计时器。 等待。 {等待以下(7)和(8)这两个事件中最先出现的一个} 收到确认帧 ACKn, 若 n = 1 – V(s),则: 从主机取一个新的数据帧,放入发送缓存; V(S)←[1 V(S)],转到 (3)。 否则,丢弃这个确认帧,转到(6)。 (8) 若超时计时器时间到,则转到(4)。
停止等待协议 模拟程序实现
实验目的:加深对停止等待协议、滑动窗 口协议的理解,编制和开发停止等待协议 模拟程序。 实验内容 编写停止等待协议模拟程序,实现数据 帧编号、超时重传等机制,确保数据可 靠传输 总结实验过程(实验报告):方案、编 程、调试、结果、分析、结论
实验原理
Biblioteka 实验目的:加深对停止等待协议、滑动窗 口协议的理解,编制和开发停止等待协议 模拟程序。 实验内容 编写停止等待协议模拟程序,实现数据 帧编号、超时重传等机制,确保数据可 靠传输 总结实验过程(实验报告):方案、编 程、调试、结果、分析、结论
return
send start=clock(); waiting_flag=1; newsend_flag=1; ackn=-1;
三、network_transmission() 函数流程
delay(Network_Delay); randomize();
random(100)>70
frame_error_flag=0;