Go-Back-N 和选择重传协议的区别
Go-Back-N 是一种数据链路层协议,它使用滑动窗口方法来可靠地按顺序传递数据帧。它是一种滑动窗口协议的特殊情况,发送窗口大小为 N,接收窗口大小为 1。
选择重传协议也是一种数据链路层协议,它使用滑动窗口方法来可靠地传递数据帧。在这里,只有错误或丢失的帧会被重传,而正确的帧会被接收并缓冲。
通读本文,了解这两种数据链路层协议的工作原理以及它们之间的主要区别。
什么是 Go-Back-N 协议?
Go-Back-N ARQ 协议是自动重传请求 (ARQ) 协议的一个变体。
发送方发送多个由窗口大小确定的帧,即使接收方没有响应确认 (ACK) 数据包。
发送窗口大小为 N,接收窗口大小为 1 是基本**滑动窗口协议**的一个特例。它可以在请求确认之前向对等方发送**N**个帧。
它基于协议流水线的概念,允许在第一个帧被确认之前传递多个帧。
Go-Back-N ARQ 中的帧被连续编号,因为 Go-Back-N ARQ 同时提供多个帧,因此需要一种编号策略来区分不同的帧。这些数字称为顺序号。
一次可以发送的帧的最大数量完全取决于发送方的窗口大小。如果在商定的时间范围内未收到某个帧的确认,则当前窗口中的所有帧都将被重传。
什么是选择重传协议?
选择重传是自动重传请求 (ARQ) 协议的一个变体,用于可靠通信中处理序列号和重传。
选择重传允许发送方在不等待接收方发送单个 ACK 的情况下发送一组帧,就像在 Go-Back-N ARQ 中一样。
它使用两个大小相等的窗口:一个用于存储要发送的帧的发送窗口和一个用于存储接收方接收到的帧的接收窗口。大小为帧最大序列号的一半。例如,如果序列号为 0-15,则窗口大小为 8。
即使在期间没有收到任何帧的确认,选择重传协议也允许它根据发送窗口中帧的可用性发送多个帧。
发送窗口的大小决定了可以发送的帧的最大数量。
Go-Back-N 和选择重传协议的区别
下表突出显示了 Go-Back-N 和选择重传协议之间的主要区别:
关键 | Go-Back-N | 选择重传 |
---|---|---|
定义 | 在 Go-Back-N 中,如果发现发送的帧有疑或损坏,则会重传所有帧直到最后一个数据包。 | 在选择重传中,仅重传有疑或损坏的帧。 |
发送方窗口大小 | 发送方窗口大小为 N。 | 发送方窗口大小与 N 相同。 |
接收方窗口大小 | 接收方窗口大小为 1。 | 接收方窗口大小为 N。 |
复杂度 | Go-Back-N 比较容易实现。 | 在选择重传中,接收方窗口需要对帧进行排序。 |
效率 | Go-Back-N 的效率 = N / (1 + 2a),其中 "a" 是传播延迟与传输延迟的比率,"N" 是发送的数据包数量。 | 选择重传的效率 = N / (1 + 2a)。 |
确认 | 确认类型是累积的。 | 确认类型是单个的。 |
排序 | 发送方和接收方都不需要排序。 | 接收方需要对帧进行排序。 |
乱序数据包 | 乱序数据包会被拒绝,并且整个窗口会被重传。 | 选择重传协议接受乱序数据包。 |
最小序列号 | Go-Back-N 协议中的最小序列号为 N+1,其中 "N" 是发送的数据包数量。 | 选择重传协议中的最小序列号为 2N,其中 "N" 是发送的数据包数量。 |
结论
Go-Back-N 消耗更多带宽,因为它即使只有一个数据包丢失也会重传整个窗口。如果错误率很高,Go-Back-N 会消耗大量带宽。如果您需要考虑带宽需求,选择重传是更好的选择,因为它只会重传有缺陷或丢失的数据包,而不是整个窗口。
Go-Back-N 使用累积确认,可以减少流量;但是,累积确认丢失的风险始终存在。如果发生这种情况,则所有相应数据包的确认都会丢失。