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

news/2024/6/16 21:18:02 标签: 计算机网络

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

                                                —— 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.选择重传协议

例题

总结


http://www.niftyadmin.cn/n/5454665.html

相关文章

集成Spring Boot Actuator来监控和管理应用程序的健康状况、性能指标等

集成Spring Boot Actuator来监控和管理应用程序的健康状况、性能指标等 集成Spring Boot Actuator可以让您轻松地监控和管理应用程序的健康状况、性能指标等。Spring Boot Actuator提供了一组RESTful端点,用于暴露应用程序的各种信息,包括健康状况、运行…

2024 MCM数学建模美赛2024年A题复盘,思路与经验分享:资源可用性与性别比例 | 性别比例变化是否对生态系统中的其他生物如寄生虫提供优势(五)

审题 第四问让我们探究性别比例变化是否对生态系统中的其他生物如寄生虫提供优势。这里我们可以把问题简化一下,只探究性别比例会不会对寄生虫提供优势。因为考虑太多生物,会使模型更复杂,我这个水平处理不了这么复杂的问题,是我…

MySQL中 in和exists的用法和区别

在MySQL中,in和exists是两种常用的条件查询关键字,两种常用于子查询,它们在某些情况下可以互换使用,但它们的工作方式和效率可能会有所不同。 in关键字 in:在子查询的列表中指定多个值,并检查列是否存在这…

【Ucore操作系统】6. 文件系统与I/O重定向

文章目录 【 0. 引言 】【 1. 文件系统接口 】1.1 文件和目录1.1.1 常规文件1.1.2 目录1.1.3 文件系统 1.2 简易文件与目录抽象1.3 打开文件与读写文件的系统调用1.3.1 文件的打开1.3.2 文件的顺序读写 【 2. nfs 文件系统 】2.1 文件系统布局2.2 virtio 磁盘驱动2.3 磁盘块缓存…

ES集群部署的注意事项

文章目录 引言I ES集群部署前期工作II 部署ES2.1 配置安全组2.2 创建ES用户和组2.3 下载安装ES2.4 修改内存相关配置III es集群添加用户安全认证功能3.1 生成 elastic-certificates.p123.2 创建 Elasticsearch 集群密码3.2 设置kibana的 elasticsearch帐号角色和密码3.3 logsta…

C++之STL整理(1)之vector、map数据结构初识

C之STL整理(1)之vector、map数据结构初识 注:整理一些突然学到的C知识,随时mark一下 例如:忘记的关键字用法,新关键字,新数据结构 C 的 STL C之STL整理(1)之vector、map数…

Android 手势相关(二)

Android 手势相关(二) 本篇文章继续记录下android 手势相关的内容. 1: GestureOverlayView简介 GestureOverlayView是Android中的一个视图组件,用于捕捉和处理手势操作. GestureOverlayView的主要用途: 手势识别: 通过GestureOverlayView,保存一些手势,并堆用户…

服务器监控软件夜莺采集监控(三)

文章目录 一、采集器插件1. exec插件2. rabbitmq插件3. elasticsearch插件 二、监控仪表盘1. 系统信息2. 数据服务3. NginxMQ4. Docker5. 业务日志 一、采集器插件 1. exec插件 input.exec/exec.toml [[instances]] commands ["/home/monitor/categraf/scripts/*.sh&q…