计算机网络停止等待协议相关测试,osi-rm中停止等待协议.doc

osi/rm中停止等待协议

篇一:停止等待协议-Linux版本

停止等待协议

cs_stu@ 南京大学计算机系 笪庆 061221015

一、实验目标

弄清停止等待协议的工作机理,并实现给出的协议算法。

二、实验内容

本实验可以基于实验七的数据帧传输实验,根据给出的停止等待协议的算法描述,选择自己熟悉的语言工具给予实现。

按照数据帧传输实验初级层次,一个站点充当发送方,一个站点充当接收方。 也可以采用模拟方式,用两个例程分别实现发送和接收。使用一个公共区代替传输链路,发送例程从发送缓存取出一数据帧送公共区,并等待来自接收例程的确认帧;接收例程从公共区取出数据,再根据是否正确发送确认帧或否认帧到公共区。如果通过创建fork进程独立运行发送和接收两个子进程,效果更佳。

数据帧和确认帧基于不考虑捎带确认的简单格式。

三、实验前提

学生需要具有相关的数学背景知识,熟悉基本的程序设计方法和技巧,以及对串行端口编程或者网络编程有所了解。已经学习了网络数据链路层及相关数据通信知识,尤其是停止等待流量与差错控制的协议。

四、实验装备

进行单机模拟,在linux下编译和运行。

五、实验原理

数据帧格式如下:

PRE,N(S),

其中,PRE是前导定界符而EOT是结尾定界符,PRE字符是一个全0八比特组,EOT字符标记数据帧的结束,EOT的二进制代码就是ASCII对EOT的编码,即04H。

由于明确了发送方和接收方角色,发送方只支持数据帧格式,接收方只支持

确认帧或否定帧格式。

PRE,N(R),

其中

该简单停止等待协议的算法如下:

———————————————————————————————(转 载 于:wWW.xlTkWJ.Com 小 龙文 档 网:osi/rm中停止等待协议)——— 发送方:

(1)取一个待发送的数据帧。

(2)V(S)←0。 /* 发送状态变量(帧序号)初始化 */

(3)N(S)←V(S); /* 将发送状态变量的数值写入发送序号 */

将数据帧送交发送缓存。

(4) 将发送缓存中的数据帧发送出去。

(5) 设置超时计时器。 /* 选择适当的超时重传时间tout */

(6) 等待。 /* 等待以下3个事件中最现出现的一个 */

(7) 若收到确认帧(ACK),则:

取一个新的待发送数据帧;

V(S)←[1- V(S)]; /* 更新发送状态变量,序号交替为0和1 */ 转到(3)。 /* 准备发送下一数据帧 */

(8) 若收到否认帧(NAK),则转到(4)。 /*重传数据帧 */

(9) 若超时计时器时间到,则转到(4)。 /*重传数据帧 */

接收方:

(1) V(R)←0。 /* 接收状态变量初始化,欲接收的帧序号*/

(2) 等待。

(3) 收到一个数据帧并检错;

若检测出帧出错,转到(8)。

(4) 若N(S) ≠ V(R),则: /* 帧无错,则检测帧序号是否正确 */

丢弃此数据帧; /* 序号有误,表示重复帧 */

转到(7)。

(5)将收到的数据帧中的数据部分送交高层。 /* 序号正确,认可数据帧 */

(6)V(R)←[1- V(R)]。 /* 更新接收状态变量,准备接收下一数据帧 */

(7)N(R)←V(R); /* 将发送状态变量的数值写入接收序号 */

发送确认帧(ACK),并转到(2)。 /* 请求发送下一数据帧 */

(8)发送否认帧(NCK),并转到(2)。 /* 请求重传该数据帧 */ ——————————————————————————————————

六、实验过程

我这次选择的方法是在linux环境下进行单机模拟停止等待协议。在老师给我们的实验题目中曾提示我们,如果进行单机软件模拟,可用两个例程分别实现发送和接收。使用一个公共区代替传输链路,还需建立两个标志,一个标志既是就绪标志,一个是方向标志。发送例程从发送缓存取出一数据帧送公共区,并置位就绪与方向标志并设置超时计时器计数值,然后不断检测该两标志的状态,等待来自接收例程的确认帧。

但是我和一个同学讨论后,认为这种方法虽然实现简单,但是“不断检测该

两标志的状态”这种基于轮询的同步机制并不科学,首先,增加了系统资源的开销,这是不言而喻

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值