传输层:可靠数据传输原理

(一)什么是可靠

传输过程中不错不丢不乱
信道的不可靠特性决定了可靠数据传输协议(rdt)的复杂性。
在这里插入图片描述

(二)各版本传输协议

RDT1.0:基于可靠信道的可靠数据传输

在这里插入图片描述


但是,信道可能会比特出差错,1变成0,0变成1


RDT2.0:基于位出差错的可靠信道传输

引入了自动重传请求协议(ARQ协议),包括:

  1. 差错检测:在UDP中使用校验和
  2. 接收方反馈:回答ACK或NAK
  3. 重传:当接收方收到有差错的分组时

在这里插入图片描述


没有考虑到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)

发送方仅重传那些它怀疑在接收方出错(即丢失和受损)的分组而避免不必要的重传。

  • 发送方和接收方的窗口并不总是一致
  • 发送方窗口大小+接收方窗口大小<序号号空间大小

在这里插入图片描述


(三)参考

《计算机网络:自顶向下方法》
哈工大精品课程《计算机网络》

猜你喜欢

转载自blog.csdn.net/shenxinmou1661/article/details/88298169