深入浅出计算机网络 day.5 第三章 数据链路层 3.2.3

当环境最昏暗时,火焰燃烧的光芒才最夺目        

                                                —— 24.3.27

一、可靠传输的相关基本概念

1.差错检验技术的作用

        使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中产生了误码(比特差错)

2.数据链路层向其上层提供的服务类型

        不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做

        可靠传输服务:通过某种机制实现发送方发送什么,接收方最终就能收到什么

3.可靠传输和不可靠传输服务

        一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向其上层提供可靠传输服务。即便出现了误码,可靠传输的问题由其上层处理

        无线链路易受干扰,误码率比较高,因此要求数据链路层必须向其上层提供可靠传输服务

4.传输差错

① 分组丢失        ② 误码(比特差错)        ③ 分组失序        ④分组重复

分组丢失:

分组失序

分组重复

误码一般出现在数据链路层及其下层

分组重复、分组失序、分组丢失 出现在数据链路层的上层

可靠传输服务并不局限于数据链路层,其他各层均可选择实现可靠传输

可靠传输的实现比较复杂,开销比较大,是否使用可靠传输取决于应用需求

①可靠传输的实现机制:停止—等待(SW)协议

②可靠传输的实现机制:回退N帧(GBN)协议

选择重传(SR)协议

这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以应用到其上各层,而应放眼于整个网络体系结构

二、可靠传输的实现机制:停止—等待(SW)协议

内容简介

01.停止—等待协议的实现原理

02.停止—等待协议的信道利用率

1.停止—等待协议的实现原理

ACK—确认信息

发送方每发送完一个数据分组后,并不能立刻将该数据分组从发送缓存中删除,因为之后有可能要重传其数据分组,只有在收到针对该数据分组的确认分组后,才能将其从发送缓存中删除

如果出现数据分组、确认分组,或否认分组丢失的情况,仅有确认、否认和重传这两种机制的停止—等待协议就无法实现可靠传输

①接收方收不到数据分组,就不会发送相应的ACK或NAK的状态

②如果不采取措施,发送方就会一直处于等待接收方ACK或NAK的状态

③为解决上述问题,发送方可在每发送一个数据分组时就启动一个超时计时器

④若到了超时计时器所设置的超时重传时间(RTO),但发送方仍未收到接收方的ACK或      NAK,就重传之前已发送过的数据分组

在超时重传时间内若是没有接收到接收方传来的接收信号ACK,则重传之前的DATA数据

若是在超时重传协议后,分组重传,接收方收到两个相同重复的分组,则为了避免分组重复这种传输错误,必须给每个分组带上序号

对于停止-等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组,其序号与上次发送的数据分组的序号不同就可以了,因此用一个比特来编号就足够了,序号有0和1这两个

数据分组需要编号,确认分组需要编号吗?

注意事项:

        使用超时重传机制后,就可以不使用否认机制了,这样可使协议实现起来更加简单,但是,如果点对点链路的误码率较高,使用否认机制可以使发送方在超时计时器超时前就尽快重传

        为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号,由于停止-等待协议的特性,只需1个比特编序号即可,即序号0和序号1        

        为了让发送方能够判断所收到的确认分组是否是重复的,需要给确认分组编号,所用比特数量与数据分组所用比特数量一样

                数据链路层一般不会出现确认扽组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给确认分组编号

        给超时计时器设置的超时重传时间RTP应当仔细选择,一般将RTO设置为略大于收发双方的平均往返时间RTT

                在数据链路层,点对点的往返时间RTT比较固定,RTO就比较好设定

                在运输层,由于端到端的往返时间非常不确定,设置合适的超时重传时间RTO有时并不容易

        停止-等待协议属于自动请求重传(ARQ)协议,即重传的请求是发送方自动进行的,而不是接收方请求发送方重传某个误码的数据分组

2.停止—等待协议的信道利用率

信道利用率:U ≈ 发送数据分组的时间/(发送数据分组的时间+往返时间+确认分组的发送时间)

        若出现超时重传,对于传送有用的数据信息来说,信道利用率还要降低

        在往返时间RTT相对较大的情况下,为了提高信道利用率收发双方不适合采用停止-等待协议,而可以使用回退N帧(GBN)协议或选择重传(SR)协议

3.例题

三、可靠传输的实现机制:回退N帧(GBN)协议

内容简介

01.回退N帧协议

1.回退N帧协议

        在使用流水线传输方式时,发送方不能无限制地连续发送数据分组,否则可能会导致网络中的路由器或接收方来不及处理这些数据分组,进而导致数据分组的丢失,这实际上是对网络资源的浪费,因此,必须采取措施来限制发送方连续发送数据分组的数量

        回退N帧协议采用流水线传输方式,并且利用发送窗口来限制发送方连续发送数据分组的数量,这属于连续ARQ协议

        如果将发送窗口的值取为1,则是停止-等待协议,如果发送窗口的值超过取值范围的上限,则会出现严重的错误

        接收方需要维护一个接收窗口Wr只有正确到达接收方(无误码)且序号落入Wr内的数据分组才被接收方接收

        Wr的取值只能是1,这一点与停止-等待协议来相同的


准备接收
        接收方每正确收到一个序号落入接收窗口的数据分组,就将接收窗口向前滑动一个位置这样就有一个新的序号落入接收窗口。与此同时,接收方还要给发送方发送针对该数据分组的确认分组。
        发送方每收到一个按序确认的确认分组,就将发送窗口向前滑动一个位置,这样就有一个新的序号落入发送窗口,序号落入发送窗口内的数据分组可继续被发送。

        在回退N帧协议的工作过程中,发送方的发送窗口和接收方的接收窗口按上述规则不断向前滑动。因此,这类协议又称为滑动窗口协议

无传输差错的情况

例题

1.

2.

总结

四、选择重传(SR)协议

1.从滑动窗口的角度对比停止-等待协议、回退N帧协议和选择重传协议

发送窗口Wt

接收窗口Wr

2.选择重传协议

例题

总结

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-28 06:12:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-28 06:12:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-28 06:12:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-28 06:12:05       18 阅读

热门阅读

  1. 机器学习(复试)

    2024-03-28 06:12:05       19 阅读
  2. TensorFlow 的基本概念和使用场景

    2024-03-28 06:12:05       19 阅读
  3. 逆流而上的选择-积极生活,逆流而上

    2024-03-28 06:12:05       17 阅读
  4. 面试中常被问到的数据库面试题及答案

    2024-03-28 06:12:05       23 阅读
  5. React 18中hook函数详解之useRef

    2024-03-28 06:12:05       21 阅读
  6. React或Vue与后端通讯的跨域问题处理

    2024-03-28 06:12:05       16 阅读
  7. 【React】React 内置 Hook

    2024-03-28 06:12:05       18 阅读
  8. SpringBoot + Redis + Lua = 王炸!

    2024-03-28 06:12:05       20 阅读
  9. Encoding类

    2024-03-28 06:12:05       17 阅读
  10. axios

    axios

    2024-03-28 06:12:05      20 阅读
  11. SpringMVC基础Controller

    2024-03-28 06:12:05       17 阅读
  12. 软件测试基础(2)

    2024-03-28 06:12:05       16 阅读
  13. 【剑指offer】75. 和为S的两个数字

    2024-03-28 06:12:05       20 阅读
  14. 课时77:流程控制_until循环_until基础

    2024-03-28 06:12:05       19 阅读