用opnet仿真停等协议

停等协议是发送双方传输数据的一种协议方式。

停等协议的接收、发送双方仅需设置一个帧的缓冲存储空间和帧序号只取0或1的两个状态标志位,便可有效地实现数据重发并确保接收方接受的数据不会重份。
实现过程

(1)发送方每次仅将当前信息帧作为备份保留在缓冲存储器中;

(2)当发送方开始发送信息帧时,赋予该信息帧一个帧序号,随即启动计时器;

(3)当接收方收到无差错的信息帧后,即向发送方返回一个与该帧序号相同序号的ACK确认帧;

(4)当接收方检测到一个含有差错的信息帧时,便舍弃该帧;

(5)若发送方在规定时间内收到ACK确认帧,即将计时器清零,需而开始下一帧的发送;

(6)若发送方在规定时间内未收到ACK确认帧,则应重发存于缓冲器中的待确认信息帧。

第一步----文本定义

停等协议位于MAC层,它会接收应用层发来的数据包,并且转发到物理层上;同时会从物理层上收到对方的反馈确认包。和应用层和物理层进行交互。
在这里插入图片描述

第二步----进程分解

根据协议复杂度选择多进程还是单进程。这里选择单一进程建模。

第三步----事件列举

在这里插入图片描述

第四步----事件列表开发

1.init状态:

  • 会发生Power up事件,然后跳转到Idle状态。
    2.Idle状态:
  • Frame Arrival ✔️ 转发到物理层(备份+发送+设置时钟),最后进入等待ACK确认状态,ACK wait;
  • Time out ❌ 这个时候还没有发送到物理层,不会有Time out事件;
  • Acknowledgement Received ❌ 也不会有Acknowledgement Received;
  • Link Fail ✔️ 有可能出现链路掉线 ,什么也不做,直接进入链路掉线状态,Link Down;
  • Link up❌ 不会有链路恢复Link up.

3.1 ACK wait状态:

  • Frame Arrival; ✔️ 对新来数据包进行队列缓存,再进入ACK wait;
  • Time out ✔️ 启动重传(备份+发送+设置时钟),进入ACK wait;
  • Acknowledgement Received ✔️ 判断队列是否为空;为空,删除备份,清楚时钟,进入Idle状态;不为空,删除上个包的备份,清除时钟,从队列中弹出新包,备份+发送+设置时钟,进入ACK wait;
  • Link Fail ✔️ 正等待的时候掉线了,进入ACK wait and Link Down状态。
    3.2 Link Down状态:
  • Frame Arrival ✔️ 对新来数据包进行队列缓存,依然是掉线状态,进入链路掉线状态,Link Down;
  • Time out ❌ 一开始就掉线了,还没有开始发包;
  • Acknowledgement Received ❌ 掉线收不到反馈包;
  • Link Fail ❌ 已经掉线了;
  • Link up ✔️ 可能发生链路恢复,恢复后,要判断队列是否为空。为空,进入Idle状态;不为空,从队列中弹出新包,备份+发送+设置时钟,进入ACK wait;
    4. ACK wait and Link Down状态:
  • Frame Arrival ✔️ 对新来数据包进行队列缓存,状态不变,维持现状,即ACK wait and Link Down状态。
  • Time out ✔️ 等待过程中掉线了,此时时钟又到时了,但是链路还没有恢复,为保证重传,设置重传标记,继续维持现状态,即ACK wait and Link Down状态。
  • Acknowledgement Received ❌ 掉线收不到反馈包;
  • Link Fail ❌ 已经掉线了;
  • Link up ✔️ 可能发生链路恢复,恢复后,看有没有重传标记。有,备份+发送+设置时钟,进入ACK wait;无,时钟还没到时,继续等待,进入ACK wait;

第五步----代码实现

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值