关于选择重传SR的证明
说明:选择重传ARQ 是一个自动重传请求(ARQ)的具体实例。它可以用作一个消息单元传送和确认的协议。当用作传送消息单元的协议时,发送进程根据一个指定大小的 窗口持续发送若干帧 ,即使发送过程中丢失帧,也会继续发送。和 Go-back-N ARQ不一样,接收进程在出错后还是继续接收和确认帧。这是 滑动窗口协议 的发送和接收窗口大小大于1的一般情况。
对于n比特进行编号,求证:Wt = Wr <= 2^(n-1)
即:接收窗口的尺寸不能超过序号范围的1/2
举例反证:
例如 对0~7 共八位进行编号 【0 1 2 3 4 5 6 7 】【0 1 2 ......
首先,由于选择重传的机制:
接收方只有在收到所有窗口的对应数据才会向前移动
发送方只有在接收到所有对应的ACK才会向前移动
所以,如果 接收方>发送方,那是没有意义的,因为如果接收方要求5个但发送方只有3个,这不是无理取闹嘛
针对 Wt <= Wr 我们开始论证:
假设 发送方有5个 接收方也有5个
I.发送方第一轮发送: 【0 1 2 3 4
II.接收方缓冲区收到:【0 1 2 3 4 (成功收到)
III.接下里接收方向前移动5个窗口,并且继续请求 5 6 7 】【0 1
IV.假设,线路出问题,发送方没有收到上一轮III中的请求,那么麻烦就来了
V.发送方超时,继续发送 【0 1 2 3 4
VI.接受方一看到 0 1就懵逼了,他其实是想要下一组的 0 1,但是这其实是第一组的0 1,这就出错了
为什么Wt = Wr <= 2^(n-1)就没事呢?我们抽取前三步来看(也就是 假设 发送方有4个 接收方也有4个):
I.发送方第一轮发送: 【0 1 2 3
II.接收方缓冲区收到:【0 1 2 3 (成功收到)
III.接下里接收方向前移动4个窗口,并且继续请求 4 5 6 7 】
就是神奇在这里,就算发送方没收到接收方发送的请求,继续发送【 0 1 2 3给他,也无所谓,因接受方能识别这并不是他所需要的。
证毕!