• 【计网】第三章 数据链路层(2)流量控制与可靠传输、停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)


    目录

    3.4-1 流量控制与可靠传输机制

    一、数据链路层的流量控制

    二、流量控制的方法

    三、可靠传输、滑动窗口、流量控制

    总结:

    3.4-2 停止-等待协议

    一、停止-等待协议究竟是哪一层的?

    二、停止-等待协议的出现原因和前提

    三、停等协议——无差错情况

    四、停等协议——有差错情况

    五、停止等待协议性能分析

    六、信道利用率

    总结:​编辑

    3.4-3 后退N帧协议(GBN)

    一、停等协议的弊端

    二、后退N帧协议中的滑动窗口

    三、GBN发送方必须响应的三件事

    四、GBN接收方要做的事

    五、运行中的GBN

    六、滑动窗口长度

    七、GBN协议重点总结

    八、GBN协议性能分析

    总结: 

    3.4-4 选择重传协议(Selective Repeat)

    一、GBN协议的弊端

    二、选择重传协议中的滑动窗口

    三、SR发送方必须相应的三件事

    四、SR接收方要做的事

    五、滑动窗口长度

    六、SR协议重点总结

    总结:


    3.4-1 流量控制与可靠传输机制

    一、数据链路层的流量控制

    较高的发送速度较低的接受能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。

    数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。

    数据链路层流量控制手段:接收方收不下就不回复确认。

    传输层流量控制手段:接收端给发送端一个窗口公告。

    二、流量控制的方法

    1. 停止-等待协议

    每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。

    2. 滑动窗口协议

    (1)后退N帧协议(GBN);(2)选择重传协议(SR);

    发送方收到确认帧后,滑动窗口再后移。窗口的大小在传输过程中是固定的。

    三、可靠传输、滑动窗口、流量控制

    可靠传输:发送端发啥,接收端收啥。

    流量控制:控制发送速率,使接收方有足够缓冲空间来接收每一个帧。

    滑动窗口解决:①流量控制(收不下就不给确认,想发也发不了);②可靠传输(发送方自动重传);

    总结:

    3.4-2 停止-等待协议

    一、停止-等待协议究竟是哪一层的?

    在计算机网络发展的前期通信链路质量不是很好,所以链路层就担负起可靠传输这个职责。因此,链路层就会使用停止-等待协议、后退N帧协议、选择重传协议等等。随着现在技术的发展,通信链路质量越来越好,出现差错的可能性就不像之前那么大,所以链路层就可以暂时抛弃可靠传输这样一个职责,把这个责任交给传输层来实现,链路层主要负责差错控制。这样就会使得数据在链路上进行传递的过程当中速度更快,所用时间更小,延迟也就更小。

    停止-等待协议、后退N帧协议、选择重传协议这三个协议在哪一层次,最后影响的只是传输数据的一个对象,如果这三个协议是传输层的,发送的数据就叫“分组”;如果协议是链路层的,发送的数据就叫“数据帧”。这里只是对象上命名的不同,本质都是要传送的数据。

    二、停止-等待协议的出现原因和前提

    1. 为什么要有停止-等待协议?

    除了比特出错,底层信道还会出现丢包问题。

    * 丢包:物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据包的丢失。(数据:在链路层叫做“帧”,在网络层叫做“IP数据报”,在传输层叫“报文段”,在不同层次会有不同名字)

    2. 研究停止-等待协议的前提?

    (1)虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方);

    (2)因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上发送的;

    (3)“停止-等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后在发送下一个分组。

    3. 停等协议有几种应用情况?

    无差错情况&有差错情况

    三、停等协议——无差错情况

    四、停等协议——有差错情况

    1. 数据帧丢失或检测到帧出错

    2. ACK丢失(确认帧丢失)

    丢掉后面重传的1帧,保留第一个。

    3. ACK迟到

    五、停止等待协议性能分析

    优点:简单;

    缺点:信道利用率低;

    T_{D}:发送方的发送时延;

    T_{A}:接收方的发送时延;

    六、信道利用率

    发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。

    Question:一个信道的数据传输率为4kb/s,单向传播时延为30ms,如果使停止-等待协议的信道最大利用率达到80%,要求的数据帧长度至少为()。

    Answer:(单位上4kb/s=4b/ms)

     如果发送方的发送速率很快,数据在传输的路上花掉的时间就会相对较长,发送方就空闲很长时间。为了使信道利用率提高,就使用接下来的后退N帧协议(GBN)、选择重传协议(SR)。

    总结:

    3.4-3 后退N帧协议(GBN)

    一、停等协议的弊端

    流水线技术下的停止-等待协议可以解决信道利用率低的问题,但是同样会出现之前的差错情况,为了解决这些差错,就有了后退N帧协议(GBN)与选择重传协议(SR)。

    二、后退N帧协议中的滑动窗口

    三、GBN发送方必须响应的三件事

    1. 上层的调用

    上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需要将数据返回给上层,暗示上层窗口已满。上层等一会儿再发送。(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。

    2. 收到了一个ACK

    GBN协议中,对n号帧的确认采用累计确认的方式,标明接收方已经收到n号帧和它之前的全部帧。

    3. 超时事件

    协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停止等待协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。

    四、GBN接收方要做的事

    (1)如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层;

    (2)其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum(下一个按序接收的帧序号)。

    五、运行中的GBN

    六、滑动窗口长度

    Q:滑动窗口可以无限吗?

    A:对滑动窗口的要求:若采用n个比特对帧编号,那么发送窗口的尺寸W_{T}应满足:{\color{DarkRed} 1\leq W_{T}\leq 2^{n}-1}。因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧(新帧旧帧数据重复的情况下发生这样的情况)。

    七、GBN协议重点总结

    1. 累积确认(偶尔稍带确认);

    2. 接收方只按顺序接收帧,不按序无情丢弃;

    3. 确认序列号最大的、按序到达的帧;

    4. 发送窗口最大为2^{n}-1,接收窗口大小为1;

    习题一:

    数据链路层采用了后退N帧(GBN)协议,发送方已经发送了编号为0~7的帧。当计时器超时时,若发送方只收到0、2、3号帧的确认,则发送方需要重发的帧数是( )。

    A.2    B.3    C.4    D.5

    看最大帧数3,可知已经收到了3及3之前的确认,应该重发4、5、6、7,共4帧。

    习题二:

    主机甲与主机乙之间使用后退N帧协议(GBN)传输数据,甲的发送窗口尺寸为1000,数据帧长为1000字节,信道带宽为100Mb/s,乙每收到一个数据帧立即利用一个短帧(忽略其传输延迟)进行确认,若甲、乙之间的单向传播时延是50ms,则甲可以达到的最大平均数据传输率约为( )。

    A.10Mb/s    B.20Mb/s    C.80Mb/s    D.100Mb/s

    甲把发送窗口里面的数据全部发送所需的时间(甲传输延迟):

    甲一个窗口可以装1000帧,一帧有1000字节(1000*8bit),100Mb/s 需换算成 bit/s

    \frac{1000\times 1000\times 8}{100\times 10^{6}}= 0.08(单位:秒s) ,即80ms

    甲收到确认帧的时间(第一个窗口的第一个帧):

    2\times 50+\frac{1000\times 8}{100\times10^{6}} = 100.08(单位:毫秒ms)

    甲从开始到结束发送完一个窗口的数据需要80ms,再等待20.08ms收到确认帧,窗口再向前移动。在100.08ms内完成一个窗口数据的传输。

    \frac{1000\times 1000\times 8\times10^{-6}}{100.8\times 10^{-3}}=80(单位:Mb/s)

    八、GBN协议性能分析

    优点:因连续发送数据帧而提高了信道利用率;

    缺点:在重传时必须把原来已经正确传送的数据帧重传,使传送效率降低;

    为了解决效率低的问题,产生了一个新的协议“选择重传协议”。

    总结: 

    3.4-4 选择重传协议(Selective Repeat)

    一、GBN协议的弊端

    GBN中的累计重传机制会导致批量重传,一个帧传错了,它后面所有的帧都要重传一次。

    优化思路是:那么可不可以只重传出错的帧?

    ——可以,设置单个帧的确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧。

    二、选择重传协议中的滑动窗口

    三、SR发送方必须相应的三件事

    1. 上层的调用

    从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。

    2. 收到了一个ACK

    如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前(右)移动到具有最小序号(窗口内)的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送者些帧。

    3. 超时事件

    每个帧都有自己的计时器,一个超时事件发生后只重传一个帧。

    四、SR接收方要做的事

    对接收窗口内应收到的帧来者不拒。SR接收方将确认一个正确接收的帧不管其是否按序。失序的帧将被缓存,并返回给发送方一个帧的确认帧(收谁确认谁),直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口

    运行中的SR(假设发送窗口和接收窗口尺寸都为4)

    五、滑动窗口长度

    Q:窗口长度可以无限吗?

    第一种情况:ack0、ack1、ack2全部丢失,接收端收到的是第一个0号帧;

    第二种情况:ack2丢失,接收端将会收到第二个0号帧;

    问题在于 发送窗口 相对于 帧的编号 比过大。

    发送窗口最好等于接收窗口(大了会溢出,小了没意义)

    W_{Tmax} = T_{Rmax} = 2^{n-1}

    T为Send Window发送窗口,R为Receive Window接收窗口,n为用多少比特来编帧的序号。

    本题中0、1、2、3共4位可以用2bit来编,所以本题中的n为2,窗口小于等于2时就不会出现问题。

    六、SR协议重点总结

    1. 对数据帧逐一确认,收一个确认一个;

    2. 只重传出错帧

    3. 接收方有缓存

    4. 滑动窗口大小应小于等于W_{Tmax} = T_{Rmax} = 2^{n-1}

    习题:
     数据链路层采用了选择重传(SR)协议,发送方已经发送了编号为0~3的帧。现已收到1号帧的确认,而0、2号帧依次超时,则发送方需要重传的帧数为()。

    2个帧,分别为0、2号帧。

    总结:

     

  • 相关阅读:
    详细解读Latent Diffusion Models:原理和代码
    【HarmonyOS学习】动画
    【SAP Abap】SAP第四代增强开发DEMO
    【OAuth2】三、OAuth2配置解读
    curl verbose模式有什么用
    Spring Cloud Alibaba微服务第7章之负载均衡Ribbon
    物联网(IoT)的北向和南向
    通过跨域配置类解决跨域问题
    frontend webstorm plugin:插件推荐
    LeetCode //C - 79. Word Search
  • 原文地址:https://blog.csdn.net/weixin_37706349/article/details/124765944