流水线可靠数据传输协议
rdt3.0性能问题的核心在于它是一个停等协议。
在停等协议中,发送方发完数据之后,必须进入等待ACK/NAK状态等待来自接收方的反馈信息。在等待状态中,发送方无法发送新一批的数据。这就造成了效率低下的问题。
解决方法是:不使用停等方式,允许发送方发送多个分组而无需等待反馈信息。即使用流水线技术。
比如,允许发送方在收到等待确认之前可以发送三个分组,那么效率也将提升3倍。
流水线技术将给可靠数据传输协议带来一下影响:
- 必须增加序号范围。因为每次输送有多个分组,所以只有0,1两个序号不够用了。
- 发送方和接收方需缓存多个分组。
- 所需要的序号范围和对缓存的要求取决于协议如何处理丢失、损坏及延时过大的分组。
解决流水线的差错恢复有两种基本方法:
- 回退N步(Go-Back-N,GBN)
- 选择重传(Selective Repeat,SR)
接下来将展开讲述GBN和SR。
回退N步(GBN)
在GBN协议中,允许发送方发送多个分组而无需等待反馈消息。但是GBN也不是说发送方可以无节制的发送,我们限制在流水线中已发送但未被确认的分组数目不能超过N。这主要是出于流量控制的原因。