为了实现可靠传输,常用的方法有哪些?

如题所述

(一)什么是可靠

传输过程中不错、不丢、不乱。
信道的不可靠特性决定了可靠数据传输协议(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。




    请点击输入图片描述

温馨提示:答案为网友推荐,仅供参考
相似回答