帧的肯定确认重传(ARQ, Automatic Repeat reQuest)技术和帧的部分确认重传(PAR, Partial Acknowledgment Repeat) 技术是数据通信中常用的错误控制机制,用于确保数据在不可靠信道上的可靠传输。以下是这两种技术的工作原理和示例流程:
1. ARQ(Automatic Repeat reQuest)
ARQ是一种用于在数据传输过程中检测错误并请求重传的机制。当接收方收到数据帧时,会验证其是否正确。如果帧有误或者未收到,会要求发送方重新发送该帧。ARQ有几种常见的协议类型,包括停止等待(Stop-and-Wait)、回退N(Go-Back-N)和选择重传(Selective Repeat)。
a. 停止等待ARQ(Stop-and-Wait ARQ)
- 发送方:发送一个数据帧,并等待接收方的确认(ACK)。
- 接收方:收到数据帧后,验证其正确性。如果正确,发送ACK;如果错误,发送NACK(否定确认)。
- 发送方:收到ACK后,发送下一个数据帧;收到NACK或超时未收到ACK,重传当前帧。
示例流程:
- 发送方发送帧1。
- 接收方收到帧1并确认无误,发送ACK1。
- 发送方收到ACK1,发送帧2。
- 接收方收到帧2并发现错误,发送NACK2。
- 发送方收到NACK2,重传帧2。
b. 回退N ARQ(Go-Back-N ARQ)
- 发送方:发送多个连续的数据帧,最多发送N个帧,而不等待ACK。
- 接收方:按顺序接收并验证每个帧。如果一个帧有误,丢弃此帧及其后的所有帧,发送NACK和下一个期望的帧序号。
- 发送方:收到NACK后,从错误帧开始重传该帧及其后的所有帧。
示例流程:
- 发送方连续发送帧1、帧2、帧3。
- 接收方收到帧1和帧2,并确认无误,发送ACK1、ACK2。
- 接收方收到帧3并发现错误,发送NACK3。
- 发送方收到NACK3,重传帧3及其后的帧。
c. 选择重传ARQ(Selective Repeat ARQ)
- 发送方:发送多个连续的数据帧,而不等待ACK。
- 接收方:独立地接收并验证每个帧,发送ACK或NACK。如果一个帧有误,只要求重传该帧。
- 发送方:收到NACK后,只重传出错的帧。
示例流程:
- 发送方连续发送帧1、帧2、帧3、帧4。
- 接收方收到帧1、帧2、帧4,并确认无误,发送ACK1、ACK2、ACK4。
- 接收方收到帧3并发现错误,发送NACK3。
- 发送方收到NACK3,只重传帧3。
2. PAR(Partial Acknowledgment Repeat)
PAR是一种部分确认重传技术,通常用于高效的差错控制中,它通过部分确认来减少数据的重传量。
工作原理:
- 发送方:发送一批数据帧,而不等待每个帧的ACK。
- 接收方:收到每个帧后,验证其正确性,并发送一个整体的部分确认(如确认已经成功接收到前N个帧)。
- 发送方:根据部分确认信息,重传未被确认的帧。
示例流程:
- 发送方发送帧1、帧2、帧3、帧4。
- 接收方收到帧1和帧2,并确认无误,发送ACK2(表示前2个帧都已收到)。
- 接收方未收到帧3和帧4。
- 发送方收到ACK2后,仅重传帧3和帧4。
总结
- ARQ:自动请求重传,通过检测错误并要求重传来保证数据的正确传输。包括停止等待、回退N和选择重传。
- PAR:部分确认重传,通过部分确认来减少重传量,提高传输效率。
这两种技术在实际应用中,各有其适用的场景和优势。例如,在可靠性要求高的场景中,选择重传ARQ更为有效,而在带宽资源有限的场景中,部分确认重传(PAR)可以减少重传数据量,提高效率。