可靠数据传输

可靠数据传输

  • 不错,不丢,不乱

  • rdt(reliable data transfer):

  • udt(unreliable data trasfer)

    • rdt_send():上层网络应用(发送方)调用该函数向传输层发送rdt协议

    • udt_sent():rdt调用该函数,在不可靠传输信道(指的是网络层的IP协议,不可靠)上向接收方传输package。

    • rdt_rcv():package到达接收方时被调用

    • deliever_data():被rdt调用,向上层应用交付数据

  • 上层网络应用单向调用传输函数将数据传送给下层传输层,下层传输层接收方接受到信息数据时,也是单向调用传输函数向上层返回数据。

  • 而在传输层以及其底层则是复杂的双向信息交互。

  • 可靠传输协议中,数据传输是单向的,控制信息双向流动。


Rdt 1.0:可靠信道上的可靠数据传输

*底层信道完全可靠(理想状态)

  • 不会发生错误

  • 不会丢失分组

    --信道百分百可靠,因此不需要控制信息的互相传送。

*发送方和接收方的FSM(有限状态自动机)独立

Rdt 2.0:不可靠信道上的可靠数据传输

*底层可能产生位错误的信道(0,1间的翻转)

  • 利用校验和检测错误

  • (NAK)确认机制:接收方显式告知发送方,分组已正确接收

  • 发送方收到NAK(错误消息反馈)/ACK(正确消息反馈)后,重传分组

    • 基于重传机制的协议称为ARQ(Automatic Repear reQuest)协议,即自动重传协议

    • Rdt2.0引入的新机制:差错控制,ACK/NAK,ARQ(自动重传)

*Rdt2.0存在的缺陷:

  • ACK/NAK消息发送错误/破坏

Rdt2.1

  • 在rdt2.0基础上增加序列号(包装传输正确的数据顺序)

Rdt2.2

  • 在rdt2.1基础上去掉NAK,并且把序列号增加到ACK上面

Rdt3.0:不可靠信道上的不可靠数据传输

*信道上既可能发生错误,也可能丢失分组

方法:发送方等待合理的时间:

  • 如果没收到ACK,重传

  • 如果分组/ACK只是延迟而不是丢失

    • 重传,序列号机制处理足矣

    • 接收方需在ACK中显式告知所确认的分组

    • 需定时器

*Rdt3.0性能

image-20210507152342406


流水线机制与滑动窗口协议

  • 流水线机制

允许发送方在接收到ACK之前连续发送多个分组

  • 更大的序列号范围

  • 发送方和/或接收方需要更大的存储空间用以缓存数组

  • 对比停—等协议:发送方一次只能发送一个分组

  • 滑动窗口协议

  • 窗口:允许使用的范围

  • 窗口尺寸:最多允许N个分组未确认

  • GBN协议:累积确认机制

  • SR协议

     

  •  

posted @ 2021-05-07 15:59  安妍  阅读(476)  评论(0)    收藏  举报