摘要
自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后一段时间之内没有收到确认帧,它通常会重新发送。ARQ包括停止等待ARQ协议和连续ARQ协议。ARQ协议是对滑动窗口的一个很好的实现。AQR协议的一个特点是:发送窗口的大小 <= 窗口总数。
ARQ协议(stop-and-wait)
停等ARQ协议相当于发送窗口和接收窗口大小均为1的滑动窗口协议。即发送方发送一个帧后,必须接收到一个确认帧(ACK)才能发送下一个。
ARQ协议原理:
- 点对点发送数据报,等待接收端回复并开始计时
- 等待开始时,发送端停止发送新数据包
- 当数据包没有成功被接收端接收时,接收端不发送ACK包,发送端将继续等待一段时间并重新发送数据包
- 重复以上步骤,直到接收到接收端发来的ACK
ARQ协议优点缺点:
优点:原理简单,广泛运用于分组交换网络。
缺点:较长的等待时间,使得数据传输速度低。低速传输时频道利用率较高,高速传输时频道利用率较低。
连续ARQ协议(Continuous ARQ)
为了克服停等ARQ协议长时间等待ACK的缺点,这个协议会连续发送一组数据包,然后再等待这些数据包的ACK。
回退N帧ARQ协议(Go-Back-N)原理:
- 接收端丢弃从第一个没有收到的数据包开始的所有数据包
- 发送端收到NACK后,从NACK中指明的数据包开始重新发送
选择性重传ARQ协议(Selective Repeat)
原理:
- 发送端连续发送数据包但对每个数据包都设有个一个计时器
- 当在一定时间内没有收到某个数据包的ACK时,发送端只重新发送那个没有ACK的数据包