目录
1. 选择等待协议(Stop-and-Wait Protocol)
工作原理:
2. 后退N帧协议(Go-Back-N ARQ)
工作原理:
3. 选择重传协议(Selective Repeat ARQ)
工作原理:
4. 总结
1. 选择等待协议(Stop-and-Wait Protocol)
选择等待协议是一种基本的自动重传请求(ARQ,Automatic Repeat reQuest)协议,广泛用于数据链路层和传输层。它的工作方式是每次发送一个数据帧,然后等待接收方的确认(ACK)后再发送下一个帧。
工作原理:
- 发送方:
- 发送一个数据帧,并启动计时器。
- 等待接收方返回的确认(ACK)。
- 若在计时器超时前接收到ACK,说明该帧成功传输,发送方发送下一个帧。
- 若超时未收到ACK,发送方重传该帧。
- 接收方:
- 每次成功接收到一个数据帧,返回一个对应的ACK给发送方。
- 如果接收方未能正确接收到数据帧(比如数据损坏),则丢弃该帧,不发送ACK,这样发送方会因为超时而重传该帧。
优点:
- 简单,易于实现。
缺点:
- 发送方必须等待每个ACK,效率低,适合低延迟、低丢包率的网络环境。带宽利用率较低,特别是在长距离的通信中。
2. 后退N帧协议(Go-Back-N ARQ)
后退N帧协议是一种滑动窗口协议,允许发送方在未收到确认的情况下继续发送多个帧,但如果发生错误,发送方将回退并重发自错误帧起的所有帧。
工作原理:
-
发送方:
- 发送方维护一个滑动窗口,可以一次性发送窗口内的多个数据帧而无需等待ACK。
- 发送后,发送方等待接收方的ACK。如果接收方成功收到数据帧,将返回相应的ACK。
- 如果发送方收到ACK n,表示接收到序号 n 及之前所有帧都已成功传输。
- 如果接收方没有按时返回ACK,或者收到ACK中表明某个帧未正确接收(如序号不匹配),发送方将从该帧开始重新传输窗口内所有未确认的帧。
-
接收方:
- 如果接收方按序收到数据帧,返回ACK。
- 如果接收到的帧序号不匹配(即丢失或错误),接收方将丢弃该帧,并返回最后正确接收的帧的ACK。
- 接收方只能按序接收数据,如果有缺失的帧,它不会缓存后续的帧。
优点:
- 提高了数据传输效率,相比于选择等待协议能够在等待ACK的过程中继续发送数据。
缺点:
- 如果在接收方有一个帧损坏或丢失,发送方需要重发该帧后的所有帧,即使这些帧之前已经成功传输。这样可能导致带宽的浪费。
3. 选择重传协议(Selective Repeat ARQ)
选择重传协议也是一种滑动窗口协议,但不同于后退N帧协议,选择重传协议允许发送方只重传那些被确认错误的帧,避免重传已经成功接收的帧。
工作原理:
-
发送方:
- 发送方使用滑动窗口技术,能够在未接到ACK的情况下发送窗口内的多个数据帧。
- 接收到接收方的ACK后,确认已经成功发送的帧。
- 如果接收方发现某些帧有问题,只会要求重传那些特定的帧,发送方根据接收到的NAK(否定确认)或者超时情况,只重发有问题的帧。
-
接收方:
- 接收方可以无序接收帧,并且可以将后续的帧暂时缓存起来。
- 对于正确接收到的帧,返回相应的ACK。
- 对于损坏或丢失的帧,接收方发送NAK,通知发送方进行选择性重传。
优点:
- 提高带宽利用率,因为只需要重传有问题的帧,不会像后退N帧协议那样重发一大段数据。
缺点:
- 实现复杂,接收方需要缓存无序到达的帧,同时处理和管理多个ACK/NAK,处理逻辑复杂。
4. 总结
- 选择等待协议是最简单的,适用于低延迟、低丢包的网络,但效率低。
- 后退N帧协议在提高了效率的同时有可能带来带宽浪费。
- 选择重传协议最为高效,特别是在高丢包率的网络环境中,但实现复杂。