资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,停止等待协议模拟程序实现,实验目的:,加深对停止等待协议、滑动窗口协议的理解,编制和开发停止等待协议模拟程序。,实验内容,编写停止等待协议模拟程序,实现数据帧编号、超时重传等机制,确保数据可靠传输,总结实验过程(实验报告):方案、编程、调试、结果、分析、结论,实验原理,实验目的:,加深对停止等待协议、滑动窗口协议的理解,编制和开发停止等待协议模拟程序。,实验内容,编写停止等待协议模拟程序,实现数据帧编号、超时重传等机制,确保数据可靠传输,总结实验过程(实验报告):方案、编程、调试、结果、分析、结论,发送结点工作流程,(1),从主机取一个数据帧,送交发送缓存。,(2)V(S)0,。,(3)N(S)V(S),。,(4),将发送缓存中的数据帧发送出去。,(5),设置超时计时器。,(6),等待。,等待以下,(7),和,(8),这两个事件中最先出现的一个,(7),收到确认帧,ACK,n,,,若,n,=1,V(s),,则:,从主机取一个新的数据帧,放入发送缓存;,V(S)1,V(S),,转到,(3),。,否则,丢弃这个确认帧,转到,(6),。,(8),若超时计时器时间到,则转到,(4),。,实验原理停止等待协议算法,(1)V(R)0,。,(2),等待。,(3),收到一个数据帧;,若,N(S)=V(R),,则执行,(4),;,否则丢弃此数据帧,然后转到,(6),。,(4),将收到的数据帧中的数据部分送交上层软件,(也就是数据链路层模型中的主机)。,(5)V(R)1,V(R),。,(6),n,V(R),;,发送确认帧,ACK,n,,转到,(2),。,接收结点工作流程,实验步骤算法分析,send_frame();/,发送数据帧,差错判断,receive_frame();/,接收帧,while(!kbhit()/,非键盘输入,Y,一、主程序工作流程,二、,send_frame(),函数流程,waiting_flag=1,send,N,ackn=-1&,time1TIMEOUT,ackn=-1,Y,N,N,Y,send,start=clock();,waiting_flag=1;,newsend_flag=1;,ackn=-1;,start=clock();,waiting_flag=1;,newsend_flag=1;,ackn=-1;,return,Y,ackn is expected,Time not out,send,start=clock();,waiting_flag=1;,newsend_flag=1;,ackn=-1;,三、,network_transmission(),函数流程,delay(Network_Delay);,randomize();,random(100)70,frame_error_flag=1;/,出错,printf(frame:%d transmission errort,ns);,frame_error_flag=0;,newsend_flag=0;,四、,receive_frame(),函数流程,ns=vr,strcpy(receiving_frame_buf,receiving frame);,strcat(receiving_frame_buf,sending_frame_buf+13);,printf(%sn,receiving_frame_buf);,vr=1-vr;,delay(Network_Delay);,ackn=vr;,
展开阅读全文