可靠传输的停等协议导致传输效率很差,有什么方式可以改进呢?
可以使用流水线传输:允许发送方在收到收到ACK之前继续发送分组。
如图所示,停等协议,在接收到用户的确认信息之前,一直处于空闲转台,信道的利用效率很低。为此我们可以使用流水线的机制提高效率,也就是在等待过程中接着发送若干分组,同时在信道中传播。
这要求要有更大的序列号范围,同时要求发送方和接收方拥有更多的缓存空间。
TCP通过使用滑动窗口实现流水线传输。常见的滑动窗口协议有两种:GBN和SR.
- GBN(Go-Back-N,回退N步)
GBN使用累积确认机制.
发送方设置窗口尺寸为N:最多允许N个分组未被确认,接收方收到ACK时会附带当前获取到当前获取到的分组的序号,同时要添加一个计时器,当时间到了之后,还未收到确认的分组,就会重新发送。(还未确认的分组,指当前收到ACK中,最大序号后的所有分组)。
接受方,只会记录当前需要获取的报文的序号,当接收到正确的报文之前,序号加一,对于乱序