计算机网络自顶向下方法 第三章 运输层 3.4 可靠数据传输原理

计算机网络自顶向下方法总结3.4可靠数据传输原理

目录

3.4 可靠数据传输原理

        3.4.1 构造可带数据传输协议

        3.4.2 流水线可靠数据传输协议

        3.4.3 回退N步

        3.4.4 选择重传


3.4 可靠数据传输原理

        可靠数据传输的实现问题不仅在运输层出现,也会在链路层以及应用层出现。实现这种服务抽象是可靠数据传输协议(reliable data transfer protocl)的责任。

        3.4.1 构造可带数据传输协议

        1.经完全可靠信道的可靠数据传输:rdt1.0

        首先考虑底层通信是完全可靠的。游狼完全可靠的信道,接收端不需要提供任何反馈信息给发送方。FSM有限状态机详细内容见书中。

        2.经具有比特差错通信的可靠数据传输:rdt2.0

        分组中比特可能受损的模型。此时控制报文有肯定确认(positive acknowledgement)否定确认(negative acknowledgement)。这些控制报文使接收方可以让发送方知道那些内容被正确接收,哪些内容接收有误并因此需要重复。基于这样重传机制的可靠数据传输协议称为自动重传请求(Automatic Repeat reQuest,ARQ)协议

        ARQ三种协议功能:差错检测,接收方反馈,重传

        由于发送方不会发送一块新数据,除非发送方确信接收方已正确接受当前分组。这样的协议被称为停等(stop-and-wait)协议

        如果一个ACK或者NCK分组受损发送方无法知道接收方是否正确接收了上一块发送的数据。遇到含糊不清的ACK和NCK分组时,一般情况是重传当前的数据分组,但是这种方法会引入冗余分组(duplicate packet)

        于是就有了rdt2.1中分组的序号(sequence number)来使接收方知道一个数据分组是新的分组还是冗余分组,详细见书中rdt2.1FSM。

        rdt2.1使用从接收方到发送方的肯定确认和否定确认。当收到一个受损的分组,接收方将发送一个否定确认。如果不发送NCK而是对上次正确收到的分组发发送一个ACK,我们也能实现与NCK一样的效果,当发送发收到冗余的ACK时就知道接收方没有正确收到跟在被确认两次的分组后面的分组。这就是rdt2.2。详细见书中rdt2.2FSM。

        3.经具有比特差错的丢包信道的可靠数据传输:rdt3.0

        现在需要关注两个问题:怎么检测丢包和发生丢包后该做些什么。

        如果发送方愿意等待足够长的时间以便确定分组丢失,则它只需要重传该分组。不管是分组或ACK丢失,还是分组和ACK过度延时,发送方只需要:重传。需要等待的时间至少为发送方和接收方之间的一个我往返时延,加上接收方处理一个分组所需要的时间。如果发送方重传分组,但是分组和其ACK并未丢失,那么就在发送方和接收方的通信中引入了冗余数据分组(duplicate data packet)。不过rdt2.2协议已经有足够的功能来处理冗余分组。

        为了实现基于时间的重传机制,需要一个倒计时定时器(countdown timer)。详细见书中rdt3.0FSM。因为分组序号在0和1之间交替,因此rdt3.0有时被称为比特交替协议。

        3.4.2 流水线可靠数据传输协议

        rdt3.0是一个停等协议,对信道的利用率很低。具体例子见书中3.4.2。这是一个形象的网络协议限制底层网络硬件所提供的能力的图例。一个简单解决方式是:不以停等方式运行,允许发送方发送多个分组而无须等待确认。这种技术被称为流水线(pipelining)。同时也出现了一下的影响:

  • 必须增加序号范围
  • 发送方和接收方需要缓存多个分组
  • 所需的序号范围和缓存大小取决于数据传输协议如何处理丢失、损坏以及延时过大的分组。

        解决流水线的差错恢复有两种基本方法是:回退N步(Go-Back-N,GBN)选择重传(Selective Repeat,SR)

        3.4.3 回退N步

        GBN协议也常被称为滑动窗口协议(sliding-window protocol),其中发送,还未确认的分组以及可用,还未发送的分组的长度N常被称为窗口长度(window size)。GBN协议的发送方和接收方的扩展FSM见书中。

        GBN发送方必须响应三种类型的事件。

  • 上层的调用
  • 收到一个ACK 对序号为n的分组的确认采取累积确认(cumulative acknowledgement)的方式,表名接收方接收到序号为n的以前且包括n在内的所以分组。
  • 超时事件 如果出现超时,发送方重传所有已发送但还未被确认过的分组。

        接收方丢弃所有失序的分组。这种方法的优点是接收缓存简单,即接收方不需要缓存任何失序的分组。丢弃一个正确接收的分组的缺点是随后对该分组的重传也许会丢失或出错,因此甚至需要更多的重传。

        3.4.4 选择重传

        GBN存在的问题是,当窗口长度和带宽时延积都很大时,单个分组的差错就能够引起GBN重传大量分组。选择重传协议通过让发送方仅重传那些它怀疑在接收方出错的分组而避免不必要的重传。SR接收方将确认一个正确接收的分组而不管其是否按序。详细见书中SR发送方和接收方的事件和动作。

        SR对窗口长度有一定的要求,窗口长度必须小于或等于序号空间大小的一半

        可靠数据传输机制及其用途的总结见书中表格,包括检验和,定时器,序号,确认,否定确认,窗口,流水线。

        在高速网络的TCP扩展中,最长的分组寿命假定为大约3分钟

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值