计算机网络 ARQ
什么是ARQ协议
- ARQ协议(自动重传请求)是OSI模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。
停止等待ARQ
- 发送点对接收点发送数据包,然后等待接收点回复ACK并且开始计时。
- 在等待过程中,发送点停止发送新的数据包。
- 当数据包没有成功被接收点接收时候,接收点不会发送ACK.这样发送点在等待一定时间后,重新发送数据包。
- 反复以上步骤直到收到从接收点发送的ACK。
- 这个协议的缺点
- 是较长的等待时间导致低的数据传输速度。在低速传输时,对连接频道的利用率比较好,但是在高速传输时,频道的利用率会显著下降。
连续ARQ协议(累积确认)
- 为了克服停止并等待ARQ协议长时间等待ACK的缺点。这个协议会连续发送一组数据包,然后再等待这些数据包的ACK。在连续ARQ协议中涉及到滑动窗口协议,这是TCP协议的精髓所在。
- 优点:
- 信道利用率高,容易实现,即使确认丢失,也不必重传。
- 缺点:
- 不能向发送方反映出接收方已经正确收到的所有分组的信息。 比如:发送方发送了 5条 消息,中间第三条丢失(3号),这时接收方只能对前两个发送确认。发送方无法知道后三个分组的下落,而只好把后三个全部重传一次。这也叫 Go-Back-N(回退 N),表示需要退回来重传已经发送过的 N 个消息。
回退N重传
- 接收点丢弃从第一个没有收到的数据包开始的所有数据包。
- 发送点收到NACK后,从NACK中指明的数据包开始重新发送。
选择重传(SACK)
- 发送点连续发送数据包但对每个数据包都设有个一个计时器。
- 当在一定时间内没有收到某个数据包的ACK时,发送点只重新发送那个没有ACK的数据包。
- 相对于回退N重传来说,选择重传可以减少重传的数据。