您的位置:首页 > 其它

2017-02-11 构造可靠数据传输协议、滑动窗口协议、比特交替协议、回退N步协议、选择重传协议

2017-02-12 15:49 966 查看
2017-02-11构造可靠数据传输协议、滑动窗口协议、比特交替协议、回退N步协议、选择重传协议

1:冗余数据分组(duplicate data packet)、2:倒计数定时器(countdown timer)、3:比特交替协议(alternating-bit protocol)、4:回退N步(Go-Back-N,GBN)、5:N常被称为窗口长度(window size)、6:滑动窗口协议(sliding-window
protocol)

3.4.1:传输层-》可靠数据传输原理-》构造可靠数据传输协议-》经具有比特差错的丢包信道的可靠数据传输:rdt 3.0

    我们让发送方负责监测和恢复丢包工作

    冗余数据分组(duplicate data packet)

    倒计数定时器(countdown timer)

    因为分组序号在0和1之间交替,因此rdt3.0有时被称为比特交替协议(alternating-bit protocol)



3.4.2 流水线可靠数据传输协议-回退N步(Go-Back-N,GBN)

    基序号(base)定义为最早的未确认分组的序号。

    下一个序号(nextseqnum)定义为最小的未使用序号,即下一个代发分组的序号。

        则[0,base-1]为已经发送并且确认的分组

        [base,nextseqnum-1]已经发送但是没有确认的分组

        [nextseqnum,base+N-1]能用于那些要被立即发送的分组大于或等于base+N的序号是不能使用的,直到当前流水线中未被确认的分组得到确认为止。



    N常被称为窗口长度(window size)

    GBN协议也常被称为滑动窗口协议(sliding-window protocol)

    序号空间可被看作是一个长度为2的k次方的环,其中序号2的k次方减1紧接着序号0,TCP有一个32比特的序号字段,其中的TCP序号是按字节流中的字节进行计数的,而不是按分组计数。





3.4.4 选择重传



    SR发送方的事件与动作

        1.从上层收到数据。当从上层接收到数据后,SR发送方检查下一个可用于该分组的序号。如果序号位于发送方的窗口内,则将数据打包并发送;否则就像在GBN中一样,要么将数据缓存,要么将其返回给上层以便以后传输。

        2:超时。定时器再次被用来防止丢失分组。然后,每个分组必须拥有其自己的逻辑定时器,因为超时发生后只能发送一个分组。可以使用单个硬件定时器模拟多个逻辑定时器的操作。

        3.收到ACK。如果收到ACK,倘若该分组序号在窗口内,则SR发送方将那个被确认的分组标记为已接收。如果该分组的序号等于send_base,则窗口基序号向前移动到具有最小序号的未确认分组处。如果窗口移动了并且有序号落在窗口内的未发送分组,则发送这些分组。

    SR接收方的事件与动作

        1.序号在[rcv_base,rcv_base+N-1]内的分组被正确接收。在此情况下,收到的分组落在接收方的窗口内,一个选择ACK被回送给发送方。如果该分组以前没收到过,则缓存该分组。如果该分组的序号等于接收窗口的基序号,则该分组以及以前缓存的序号连续的分组交付给上层。然后,接收窗口按向前移动分组的编号向上交付这些分组。

        2.序号在[rcv_base-N,rcv_base-1]内的分组被正确收到。在此情况下,必须产生一个ACK,即使该分组是接收方以前已确认过的分组。

        3.其他情况。或略该分组。

        其中上述的2是非常重要的,对于哪些分组已经被正确接收,哪些没有,发送方和接收方并不总是能看到相同的结果。对SR协议而言,这就意味着发送方和接收方的窗口并不总是一致。

    由于序号可以被重复使用,知道发送方“确信”任何先前发送的序号为x的分组都不在网络中为止。通过假定一个分组在网络中“存活”时间不会超过某个固定最大时间量来做到这一点。

    窗口长度必须小于或等于序号空间大小的一半,否则可能发生这种情况,某个分组不能确认是重传还是初次传输。

可靠数据传输机制及其用途的总结

    检验和:用于检测在一个传输分组中的比特错误

    定时器:用于超时/重传一个分组,可能因为该分组(或其ACK)在信道中丢失了。由于当一个分组延时但未丢失(过早超时),或当一个分组已经被接收方收到但从接收方到发送方的ACK丢失时,可能产生超时事件,所以接收方可能会收到一个分组的多个冗余副本。

    序号:用于为从发送方流向接收方的数据分组按顺序编号。所接收分组的序号空间的空隙可使接收方检测出丢失的分组。具有相同序号的分组可使接收方检测出一个分组的冗余副本。

    确认:接收方用于告诉发送方一个分组或一组分组已经被正确滴接收到了。确认报文通常携带着被确认的分组或多个分组的序号。确认可以是逐个的或累积的,着取决于协议。

    否定确认:接收方用于告诉发送方某个分组未被正确地接收。否定确认报文通常携带着未被正确接收到分组的序号。

    窗口、流水线:发送方也许被限制仅发送那些序号落在一个指定范围内的分组。通过允许一次发送多个分组但未被确认,发送方的利用率可以在停等操作模式的基础上得到增加。我们很快会看到,窗口长度可根据接收方接收的缓存报文的能力、网络中的拥塞程度或两者情况来进行设置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: