停止等待协议的算法

停止等待协议的算法
为了对停止等待算法有一个完整而准确的理解,下面给出此协议的算法。
发送方:
(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)发送否认帧(ACK),并转到(2)。 /* 请求重传该数据帧 */

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值