可靠数据传输:传输数据比特不会损坏、丢失,有序发送接收
可靠传输协议的发展
rdt1.0:
rdt1.0是基于理想情况下的协议,假设所有信道都是可靠的,没有比特位的翻转,没有数据包的丢失与超时,所以rdt1.0的传输功能就是 发送方发送数据,接收方接受数据。
rdt2.0:
在有比特差错的情况下 进行可靠数据传输
采用自动重传请求协议:差错检测、接收方反馈(肯定确认ACK,否定确认NAK)、重传。
也被成为停等协议:当发送方处于等待ACK或NAK时,不能从上层获得更多数据
rdt2.1:
考虑ACK或NAK受损
发送方对数据分组编号,接收方只要检查序号。
rdt2.2:
不使用NAK,采用ACK,0 ACK,1来表示接受的状态
rdt3.0:比特交替协议(分组序号在0和1之间交替)
解决具有比特差错和丢包的问题
解决发送方接收不到响应:数据分组或接收方对该分组的ACK丢失
发送方选择一个时间值判定发生丢包,进行重传
协议运行中应用到技术:检验和(检验差错),序号(分组标记),定时器(解决数据丢失),肯定和否定分组
rdt3.0由于以停等方式运行,在RTT时间段内,网络处于空闲状态,而RTT时间段比较长,使得利用率十分的低。解决办法是:允许发送方发送多个分组不用等待确认 叫做流水线
进而引出了:回退N步、选择重传(增加序号范围,增加缓存,解决流水线的差错恢复)
回退N步:
1、N指的是发送未确认和可用于发送的序号数量
2、GBN发送方响应的三种类型:
上层的调用:
要检查发送窗口是否已满(是否有N个已发送但未被确认的分组),未满则发送,满了就
等会,或者缓存。
收到一个ACK:
采用累计确认
超时事件:
回退N步 名字的来源。出现丢失和时延长的分组,超过定时器的时限,则重传所有已发
送但还未被确认过的分组,使用一个定时器
3、接收是按序号顺序接收,不按序就重发
选择重传:
由于GBN容易引起大量重传,降低效率。由此产生SR
SR通过让发送方仅重传那些它怀疑在接收方出错(丢失或受损)的分组,避免不必要的重传。SR接收方确认一个正确接收的分组不管其是否按序,失序将被缓存。超时发送方重传
。重传后再将缓存交付。