文章目录
(一)什么是可靠
传输过程中
不错
、
不丢
、
不乱
。
信道的不可靠特性决定了可靠数据传输协议(rdt)的复杂性。
(二)各版本传输协议
RDT1.0:基于可靠信道的可靠数据传输
但是,信道可能会比特出差错,1变成0,0变成1
RDT2.0:基于位出差错的可靠信道传输
引入了
自动重传请求协议(ARQ协议)
,包括:
- 差错检测:在UDP中使用校验和
- 接收方反馈:回答ACK或NAK
- 重传:当接收方收到有差错的分组时
没有考虑到ACK或者NAK分组受损的可能性,发送方无法知道接收方是否正确接受了上一块发送的数据.
RDT2.1:基于位出差错的可靠信道传输,发送方应对ACK和NAK出错。
在数据分组添加一个新字段,发送方对其数据分组进行编号,即将发送分组的
序号
放入该字段。对于停等协议,1bit序号足够。
在停等协议上,实际由于添加了分组的序号,我们可以不用NAK。
RDT2.2:基于位出差错信道的无NAK的可靠数据传输协议
在实际情况中,信道还会出现丢包的情况,如何检测是够丢包以及丢包了该怎么做?
RDT3.0: 基于位出错和丢包信道的可靠数据传输协议
在使用校验和,ACK分组,序号和重传的机制下,为了应对丢包的情况,引入
定时器
来确定发送方什么时候进行重传。
RDT3.0已经是个功能正确的协议,但是由于它是个停止等待协议,性能大打折扣,信道利用率低下,所以效率有待提高。
利用流水线机制
-
增加序号范围
-
发送方和接收方增加缓存分组
但是会出现差错:丢失、损坏、延时过大。 解决流水线的差错恢复:回退N步(GBN滑动窗口协议)和选择重传(SR)
滑动窗口协议(GBN)
- 超时事件:如果出现超时,发送方重传所有已发送但是还没有被确认的分组。
- ACK机制:累积确认,接收方发送最高序列号的,被正确接收的分组的ACK
- 对于乱序到达的分组,接收方直接丢弃,并且发送最近按序接受的分组的ACK。
GBN改善了信道效率,但是仍然有不必要的重传问题,当一个分组出现差错就很有可能要重传大量分组,因此引入了选择重传协议。
选择重传协议(SR)
发送方仅重传那些它怀疑在接收方出错(即丢失和受损)的分组而避免不必要的重传。
- 发送方和接收方的窗口并不总是一致
- 发送方窗口大小+接收方窗口大小<序号号空间大小
(三)参考
《计算机网络:自顶向下方法》
哈工大精品课程《计算机网络》