停止等待协议的算法
为了对停止等待算法有一个完整而准确的理解,下面给出此协议的算法。
发送方:
(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)。 /* 请求重传该数据帧 */
停止等待协议的算法
最新推荐文章于 2024-05-03 10:14:52 发布