如果下层实现了错误检测, 那么上层可以使用正面确认和重传(PAR, Positive Acknowledgment and Retransmission)机制来实现可靠传输. 因为"发送并等待一个确认"这个操作主要的时间消耗在数据传输的线路上, 所以 PAR 对线路的利用率和传输速率很低.
提高传输速率的简单方法是使用多路传输, 同时采用多条 PAR 线路进行数据传输. 但是这样, 单条线路的利用率仍然很低. 另一种既提高线路利用率又提高传输速率的方法是对 PAR 进行流水线操作, 这样不需要增加传输线路.
一个报文的 PAR 包括发送, 确认, 重传3个子操作, 它们的间距是传输时延. 下面不考虑重传.
如果有多个报文要发送, 在第一个确认到来之前进行 snd_wnd 个报文的发送, 并且随着确认的到来, 进行后续的报文发送. 这样, 采用流水线方式发送, 可以总是保持线路在使用中, 传输速率为 v = snd_wnd/delay, 单位为报文.
要采用流水线, 那么原来的操作必须是可分解的, 而且必须为单个操作进行标识, 比如采用序列号.
流水线的实现方式:
1. 为每一步子操作配备一个缓冲区, 当需要进行下一步子操作时, 将操作放入下一步缓冲.
2. 对操作进行包装, 增加状态字段, 随着子操作的进行改变操作的状态.