在连续ARQ协议中,如果A向B发送数据帧而B只向A发送确认帧(即假定B没有数据帧向A发送),那么这两种帧的序号序列各有什么特点
参考答案:在不产生差错的情况下,发送端发送的数据帧的序列是:
DATA0,DATA1,DATA2,DATA3,DATA4,DATA5,…
发送序号是每发送一帧就把序号加1(最后当序号用完时就又返回到零),如用3 bit编码时,序号7的下一个序号就又回到0:
…DATA4,DATA5,DATA6,DATA7,DATA0,DATA1,DATA2,…
而接收端发送的确认帧的序列是:
ACK1,ACK2,…,ACK5,ACK6,ACK7,ACK0,ACK1,…
数据帧的发送序号序列反映了发送端自己所要发送的信息数据块的顺序,而接收端的确认序号反映了接收端期望收到的对方发来的数据帧的序号。
但是当出现传输差错时,这两种帧的序号序列就会发生一些变化。
发送序号可能倒退回来再使用原来已经用过的序号(这种情况发生在超时重传时),如:
DATA0,DATA1,DATA2,DATA3,DATA4,DATA5,DATA2,DATA3,DATA4,DATA5,,…
上面的DATA2,DATA 3,DATA 4,DATA5这4个帧都是重传的帧(Go—back—N协议)。
发送序号也可能出现连续重复前面的序号的情况,如:
DATA 0,DATA1,DATA 2,DATA 2,DATA 3,DATA3,DATA 4,DATA 4,DATA 4,,…
连续重复的发送序号表明发送端还没有发送下一帧就超时重传刚才发送过的数据帧。这不一定是在使用停止等待协议,也不一定是超时重传时间设置得太短。例如,当发送完DATA2后,本来应当准备发送下一帧DATA3。但DATA3还没有准备好(即DATA3还没有被送入发送缓存中等待发送)。于是发送端就处于等待状态。在等待了一段时间后,超时重传时间到(即没有收到对DATA2的确认),这时就重传DATA2,因此出现了两个连续的发送序号。
接收端只按序接受数据帧。对序号不正确的帧(这里已经隐含地假定了这个帧已经通过了CRC检验器的检验,没有发现由传输产生的差错),接收端除了丢弃这个帧,还必须重复发送前面已经发送过的最后正确序号的确认帧。等到收到正确序号的数据帧后,接收窗口就向前移动一个帧的位置,准备接收下一个数据帧。因此,在出现重传帧的情况下,确认帧的确认号可能会在某一个序号上连续出现几次(这表明没有收到正确序号的数据帧)。例如:
ACK1,ACK2,ACK2,ACK2,ACK2,ACK2,ACK3,ACK4,…
这一连4个ACK2表明接收端一连4次没有收到序号正确的数据帧。
应当指出,当接收端收到序号错误的数据帧的处理策略是一个比较复杂的问题。我们将在“问题3—12”中进一步讨论这个问题(我们将可看到,确认帧的序号序列中还可能缺少几个序号)。