3.3可靠数据传输的原理


一.概述
可靠数据传输(reliable data transport,rdt)在应用层,传输层,数据链路层都很重要。信道的不可靠性决定了rdt协议的复杂性。为了问题研究的需要,做以下约定:

  1. 对数据传输的不可靠性研究采用渐进式的。(可靠传输–>比特差错–>比特差错+分组丢失–>…)
  2. 双向的数据传输看作两个单向的数据传输,因此只考虑单向数据传输。
    二.分析过程

rdt1.0:在可靠信道上的可靠数据传输

此时,下层的信道是完全可靠的。即:

无比特出错
没有分组丢失

发送方(send,以下简称S)和接受方(receiver,以下简称S)的操作:

S将数据发送给下层信道,R从下层信道接受数据。双方基本不做与rdt有关的操作。

rdt2.0:具有比特差错(不考虑ACK/NAK出错)的信道

此时,下层的信道可能出错:如0变成1,即比特翻转。需要用校验和来检验比特差错。

怎样处理错误和恢复正常:

  1. 确认(acknowledge,ACK):R显式的告诉S分组已经被正确接收
  2. 否定确认(no acknowledge,NAK):R显式的告诉S分组发生差错,S收到NAK后,S重传分组。

rdt2.0中的新机制:

  1. S进行差错控制编码,缓存(保存副本,以便检错重传)。
  2. R使用编码检错
  3. R要反馈:发送ACK,NAK到S。
  4. S收到反馈后作相应动作(收到ACK,发新的;收到NAK,重发)

rdt2.0的缺陷:若ACK/NAK出错,怎么办?如发的ACK/NAK是无法识别的内容,S就不知道发生了什么事情。S自然也不知道怎么做了。为此,出现了rdt2.1.

rdt2.1:具有比特差错(ACK/NAK可能出错)的信道

针对rdt2.0中ACK/NAK出错,引入序号机制,即在S的每个分组加个序号。
编号占用一位,分组编号方式:0,1,0,1…如此交替。

当ACK/NAK出错,比如无法识别时。S会重传当前分组。此时分为两种情况。
ACK出错:重传导致分组重复,由于分组有编号。重传导致相邻两个分组编号一样,R丢弃即可。
NAK出错:重传刚好传的是R需要的分组。

S和R新增的操作:
S:

  1. 在分组中加入编号,用一位编号即可。0/1
  2. 检查ACK/NAK是否出错(需要EDC)
  3. 记录当前分组的编号是0还是1。

R:

  1. 必须检测当前收到的分组是否重复。R有一个状态位,记录当前希望接收的分组时0,还是1.

注意:R并不知道S是否正确收到了ACK/NAK。没有对ACK/NAK的确认,即无确认的确认。但是,R可以通过S发送的分组来获取S是否收到ACK/NAK.如:S发送分组(packet,记为pkt)pkt0,R发回ACK,若S发送pkt1,则说明S收到正确的ACK;若S发送pkt0,则说明S未收到正确的ACK.

对这种R发生一个分组,然后等待R的应答(一次只有一个等待确认的分组)的协议称为停等协议(Stop and Wait Protocol).

rdt2.2:无NAK的协议

功能同rdt2.1,但只使用ACK(ACK要编号:ACK0,ACK1,ACK2…)
R对最后正确接收的分组发ACK,以替代NAK。即当前分组需要发NAK时,就发上一个正确接收的分组的ACK.
当收到重复的ACK时(当前分组传输出错),发送放重传当前分组。
这中机制为之后一次发送多个数据单位做了准备,其优点在于:
1.一次能发多个数据单位。
2.无NAK,确认机制简单了,协议也得到简化。

rdt2.2R和S做的操作和rdt2.1相同。只不过当前分组出错,R发送给S的时上一个正确接收的分组的ACK

rdt3.0:具有比特差错和分组丢失的信道

分组在传输时,若分组太多,遇到路由器,会排队等候处理,由于路由器缓存有限,队满时,会丢弃分组。因此,下层信道还可能出现分组丢失(数据或者ACK)的情况。
若分组在传输时丢失,则R会等待这个分组,S会等待这个分组的ACK。这可能导致死锁。但检验和,分组编号,ACK,重传这些机制无法处理此问题。
因此引入超时重传机制。设置一个合理的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值