信道自己是不可靠的,可靠性传输就是在传输层在不可靠的信道基础上实现可靠性传输。api
1. 数据在传输的过程当中有可能回受损(本文主要说明这个问题)网络
2. 数据在传输的过程当中有可能回丢失(下一篇文章说明)blog
传输层的可靠性协议就是解决上面两个问题的基础
从应用层的角度来,整个传输是可靠的,传输层屏蔽了不可靠的网络层bfc
rdt:reliable data transfer,udt:unreliable data transferim
传输层发布可靠传输的api给应用层,可是调用网络层的不可靠服务,经过可靠数据传输协议最终实现可靠传输。数据
问题: 数据在传输过程当中是受损,接收方协议
方案:停等协议(数据发出去后发送方等待发送方反馈,等反馈没有问题后再进行下一组数据的传输)img
ARQ(Automatic Repeat reQuest),自动重传,若是数据受损,则从新再传一次。di
停等协议示意图
实现ARQ须要实现三个功能:
初版的问题
接收方的ACK或者NAK若是有损,发送方没法识别怎么办?
针对初版的问题,最简单的办法是:若是发送方没法识别也直接进行重传。
这又会引入另一个问题,接收方有可能已经正确收到了以前的数据,再次重传回致使接收方没法区分当前数据是从新传送的仍是新数据。
因此须要给数据增长一个惟一标识:序列号。