计算机网络第三章——数据链路层(二)

news2024/9/26 1:28:34

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 3.4.2 停止等待协议
    • 为什么要有停止等待协议
      • 无差错情况
      • 有差错的情况
    • 停等协议性能分析
    • 脑图时刻
  • 3.4.3 后退n帧协议
    • 后退n帧协议中的滑动窗口
    • GBN发送方必须响应的三件事
    • GBN接收方要做的事
    • 运行中的GBN
    • 滑动窗口的长度
    • GBN协议重点总结
    • 习题1
    • 习题2
    • 选择重传协议
    • 脑图时刻
  • 3.4.4 选择重传协议SR
    • GBN协议的弊端
    • 选择重传协议中的滑动窗口
    • SR发送方必须要响应的三件事
    • SR接收方要做的事
    • 运行中的SR
    • 滑动窗口的长度
    • SR协议重点总结
    • 脑图时刻


3.4.2 停止等待协议

停止等待协议有的放在了传输层,有的放在了链路层,在计算机网络发展的前期,通信质量还不是特别好,链路层就需要担任可靠传输的职责,随着通信质量的发展,出现差错的可能性也变小了,把这个责任交给传输层来实现,链路层主要负责差错的控制,这样使得在链路上传输的速度更快,因此不需要关注是属于哪一个层次的,因为在哪一个层次最后影响的也只是传输数据的一个对象,若是传输层的,发送的数据就可以称为分组,而在链路层进行传输的时候称作是一个帧,只是命名的不同,本质上是一个传输的数据,

为什么要有停止等待协议

数据报其实就是一个数据,链路层可以叫做一个帧,网络层可以叫做IP数据报或者叫做分组,传输层可以叫做报文段
请添加图片描述

无差错情况

这两个数轴的指向就是时间增大的方向,发送方开始发送数据,因为我们是在链路层进行讨论,所以我们把数据以帧作为一个单位,发送方发送一个0号帧,接收方收到0号帧之后,回复一个对0号帧的确认,写作ACK0,这里的第一个0 帧和第二个0 帧是不一样的,
请添加图片描述

有差错的情况

数据帧丢失或检测到帧出错
但是实际上经常会出现一些差错,也就是之前提到的丢包,链路层的体现就是丢失了一些数据帧,这个超时计时器每次发送一个帧都会启动,但是在这个计数器到期之前,确认帧已经到了发送方,这个时候计时器就可以终止掉,若是到期之前还是没有收到确认帧,就会在到期之后重新发一次数据帧,RTT就是往返传播时延,这里需要比平均往返时延要长一点,因为发送方发送需要发送时延,接收方发送确认帧也有发送时延,需要对帧进行编号,这样就有效解决了帧的丢失,帧的重复(编号主要解决的就是帧的重复问题),
请添加图片描述
ACK丢失
若是在确认帧发给发送方的时候丢失了,这个时候发送方就不会收到确认帧,然后超时重传刚才的帧,接收方会丢弃重复的1帧,再次发送一个对一号帧的一个确认(因为只有发送方收到这个确认之后才会发送下一个帧)

请添加图片描述
ACK迟到
首先发送方在等待了一个超时计时器之后依然没有等待到确认帧,这个时候发送方就会超时重传一个0号帧,此时接收方收到0号帧,发现刚才是收到过0号帧的,此时就需要丢弃这个0号帧,并重新发送一个确认帧,接收方收到这个0号帧的确认之后,开始发送一号帧,但是此时收到了0号帧的一个确认帧,本来应该收到的是1号帧的一个确认的,此时说明0号帧来晚了,此时发送方对这个0号的确认帧不做处理,只是简单的丢弃就可以,
请添加图片描述

停等协议性能分析

发送方发送数据也是按照1bit 1bit进行数据发送的,这个红色的宽就是发送方的发送时延,确认帧是一个只包含控制信息不含数据帧,因此这个黑色的长条要窄一些,下面这个例题中没有给确认帧的发送时延,因此这里就不加上了,
请添加图片描述
请添加图片描述
请添加图片描述
从滑动窗口机制的角度看,停止-等待协议相当于发送窗口和接收窗口大小均为1的滑动窗口协议
在停止一等待协议中,除数据帧丢失外,还有其他两种差错
1、到达目的站的帧可能已遭破坏,解决方案:装备计时器,计时器计满时仍未收到确认,那么再次发送相同的帧,直到该数据无错误地到达为止
2、数据帧正确而确认帧被破坏,解决方案:发送方重传已被接收的数据帧,接收方收到同样的数据时丢弃该,,并重传一个该对应的确认帧
帧缓冲区
目的:为了超时重发和判定重复帧的需要
实现方法:发送端在发送完数据帧时,必须在其发送缓存中保留此数据帧的副本,这样才能在出差错时进行重传。只有在收到对方发来的确认帧ACK时,方可清除此副本。

脑图时刻

请添加图片描述

3.4.3 后退n帧协议

连续发送多个帧,这样就会比刚才的停等协议中信道利用率要更高,这里必须要增加一个序号范围,传送中的数据帧必须有一个序号,就像这里三组数据帧的序号要是不同的,这样接收方才能返回给发送方一个唯一确认帧,另外发送方需要缓存多个分组,这是因为传递数据的过程中很容易出现帧丢失的情况,所以可能多个分组都是需要缓存的,防止传输过程中丢失的问题,这里可能会出现发送的帧或者确认的帧出现丢失等情况,所以这里也就有了后退n帧协议和选择重传协议,
请添加图片描述

后退n帧协议中的滑动窗口

发送窗口,简单来说就是发送帧的序号都必须在这个发送窗口里面,后面没有进入这个发送窗口里面的自然也就是不能发送的,停等协议中发送窗口接收窗口也是1,后退n帧协议发送窗口是有n个,接收窗口是有1个,选择重传协议发送窗口有n个,接收窗口同样有n个,如下发送方先发送0号帧,0号帧已经发送到链路上了,发送方也会copy一个1号帧的副本,0号帧传输的过程中,1号帧也是可以发送的,因为只要在这个发送窗口里,且有这个帧我们就可以发送,接收方收到之后,接收窗口就向右移动一个位置,接收方就会发送一个确认帧,发送方收到这个确认帧之后,窗口就会前移一位
若是每一个都发送一个确认帧,这不就是停等协议了吗,所以这里有一个独特之处就是累积确认,若是接收方同时收到了123三个帧接收方不需要逐一的去确认,只需要发送一个3号的确认帧即可,在发送方这里我们可以分成三个部分,发送并且被确认收到的帧,已经发送但是等待确认的帧,还能发送的帧,还有就是不在发送窗口中的帧,
请添加图片描述

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

请添加图片描述

GBN接收方要做的事

如果我们接收方按序收到了n号帧,接收方对接下来收到的帧心中都是有一个数的,知道接下来要收到几号帧,若是之前都是按照计划进行的,每一个期待的帧都收到了,接收方就可以发送一个ACK,假如现在收到了0 1 2 4 5 号帧 这里接收方收完2号帧之后,它心中就知道接下来要受到的是3 号帧,这个三号帧就存放于expectedseqnum中, 若是等不到三号帧则会丢弃4,5 号帧并且重新发送一个2号的确认帧,发送方就会把3号帧以及之后的帧都重新发送
请添加图片描述

运行中的GBN

这里假设滑动窗口大小是4,首先发送过来的是0号帧,然后是1号帧,这些无论是发送方还是接收方都没有丢失,然后发送方发送二号帧的过程中丢失了,此时接收方无论是收得3号帧还是四号帧接收方都会丢弃(主要是因为接收窗口只有一个,缓存能力有限)而且接收方一直发送的都是ack1,直到发送方接收到确认帧之后,然后重新发送已发送但是还没有确认的帧(因为接收方把那些帧都丢弃了,所以自然都是需要重新发送的),
请添加图片描述

滑动窗口的长度

假如这里n为2,此时帧的编号就是0,1,2,3,若是有一个确认帧ACK0晚到了,发送方会超时重传,正常的确认帧按时到了,就会移动滑动窗口,若是滑动窗口的大小是4,会向右进行移动,此时其中的就是1,2,3,0,迟到的ACK来了,此时就无法分辨是新窗口的0号帧还是原来窗口的0号帧,
请添加图片描述

GBN协议重点总结

偶尔捎带确认是指接收方偶尔也可以发送一些数据给发送方,接收方可以将这个确认帧放到数据中这样就相当于是一个顺风车的形式,一旦发送窗口的大小在发送的时候确定好,发送的过程中是不能改变的,
请添加图片描述
后退N帧式ARQ:发送方连续发送帧,当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧(累积确认)
优点:连续发送数据帧而提高了信道的利用率
缺点:若信道的传输质量很差导致误码率较大时,后退N协议不一定优于停止-等待协议

习题1

发送方受到了3号帧的确定,所以这里这里应该从4号帧可以发送
请添加图片描述

习题2

首先需要算一下甲的发送延迟,也就是甲的发送窗口的尺寸乘以数据帧长,然后换算成bit也就是乘8,再除以甲的发送功率,算出甲的发送时延是80ms,甲在发送第一个帧之后,什么时候才能受到这个帧的确认帧,先算传播延迟,加上甲发送第一个帧的传输延迟,也就是100.08ms,所以也就是需要等待20毫秒才能受到确认帧,受到确认帧之后窗口才能向前移动,
请添加图片描述

选择重传协议

请添加图片描述

脑图时刻

请添加图片描述

3.4.4 选择重传协议SR

GBN协议的弊端

请添加图片描述

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

请添加图片描述

SR发送方必须要响应的三件事

请添加图片描述
后退n帧中只有一个定时器。并且将所以的未被确认的帧都重传。

SR接收方要做的事

这里所说的收到小于窗口的帧,可能原因是发给发送的确认帧丢失了,所以发送方超时重传了,返回一个ACK的确认帧,这个确认帧是与那个小于窗口的帧相对应的确认帧,注意这里和后退n帧的区别,注意这里返回的确认帧是一一对应,不能使用一个高帧来代替(也就是没有累计确认的机制)
请添加图片描述

运行中的SR

对于接收方,只要收到了接收窗口中的帧,都会返回一个确认帧,收一个确认一个,接收方只有收到下界的帧,窗口才会移动,发送方只有收到发送窗口下界的确认帧窗口才会移动
请添加图片描述

滑动窗口的长度

控制长度主要是为了区分是新帧还是旧帧,如下面左半部分中窗口大小是三,这三个帧都顺利到达了,所以接收窗口向右移动三个单位,但是发送的确认帧都丢失了,所以发送窗口没有移动,超时重传的就是原来的老0号帧,而接收方以为是滑动窗口新0号帧,还有就是下右图,发送方发送的帧都顺利到达了接收方,接收窗口向右移动三个单位,然后发送方收到了一个0号的确认帧,发送窗口向右移动一个位置,然后可以发送三号帧,但是三号帧丢失了,然后收到1号帧的确认,接收窗口向右移动一个位置,发送方就可以发送一个0号帧,这个0号帧就是新帧,所以是0是新帧还是旧帧就无法确认。
请添加图片描述

SR协议重点总结

请添加图片描述
每个发送缓冲区对应一个计时器,当计时器超时时,缓冲区的帧就会重传
一旦接收方怀疑帧出错,就会发一个否定顿NAK给发送方,要求发送方对NAK中指定的帧进行重传,接收端要设置具有相当容量的缓冲区来暂存那些未按序正确收到的帧
优点: 提高了信道的利用率
缺点:需要开辟缓存空间用来存储数据
请添加图片描述

脑图时刻

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1078936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能晾衣架丨以科技解放双手

以往的晾衣架大多是平放式、手摇式居多,为衣物的晾晒提供了一个“栖身之所。”随着科技的日新月异,智能家居的产品越来越多。晾衣架也不例外,一款带有语音控制升降、同时具备照明和消毒的多功能衣架也已深入生活,正被人们所接受。…

算法题系列12·字符串判断子序列

目录 题目描述 实现 题目描述 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"…

RabbitMQ与springboot整合

1、基本概念 Server:接收客户端的连接,实现AMQP实体服务;Connection:连接,应用程序与Server的网络连接,TCP连接;Channel:信道,消息读写等操作在信道中进行。客户端可以建…

Python 图形化界面基础篇:发布应用程序到不同平台

Python 图形化界面基础篇:发布应用程序到不同平台 引言步骤1:准备应用程序1.1 处理依赖关系1.2 创建用户文档1.3 处理平台差异 步骤2:创建安装程序2.1 使用cx_Freeze创建独立包2.2 使用 PyInstaller 创建可执行文件2.3 使用其他工具 步骤3&am…

如何在 Spring Boot 中进行数据备份

在Spring Boot中进行数据备份 数据备份是确保数据安全性和可恢复性的关键任务之一。Spring Boot提供了多种方法来执行数据备份,无论是定期备份数据库,还是将数据导出到外部存储。本文将介绍在Spring Boot应用程序中进行数据备份的不同方法。 方法1: 使用…

CSS图文悬停翻转效果完整源码附注释

实现效果截图 HTML页面源码 <!DOCTYPE html> <html><head><meta http-equiv="content-type

正点原子嵌入式linux驱动开发——Linux内核移植

之前的两篇笔记&#xff0c;简单了解了一下Linux内核顶层 Makefile和Linux内核的启动流程&#xff0c;本篇内容来学习一下如何将ST官方提供的Linux内核移植到正点原子的STM32MP157开发板上。通过本章的学习&#xff0c;将掌握如何将半导体厂商提供的Linux BSP包移植到自己的平台…

【分享】小红书数据采集入excel表格

思路&#xff1a; 1. 打开小红书关键词页面 2. 循环指定次数&#xff0c;并鼠标往下滚 3. 获取元素列表&#xff0c;循环元素列表 4. 判断标题是否在list中&#xff0c;如果在就跳过&#xff0c;如果不在将标题存入list中 5. 点击元素&#xff0c;读取标题和内容&#xff…

LeetCode 1503. 所有蚂蚁掉下来前的最后一刻【脑筋急转弯】1618

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

2018架构真题案例(四十九)

某文件采用多级索引结构&#xff0c;磁盘大小4K字节&#xff0c;每个块号4字节&#xff0c;那么二级索引结果时&#xff0c;文件最大。 A、1024 B、1024*1024 C、2048*2048 D、4096*4096 答案&#xff1a;B 霍尔三维结构以时间堆、&#xff08;&#xff09;堆、知识堆组成…

vue踩坑

文章目录 1.error1 1.error1 在项目里面前端报这个错&#xff0c;有点蒙 确定了错误是在遍历数组中的图片部分 猜测可能是一开始的时候没有把photoList在form中写出来&#xff0c;form里面啥没有&#xff0c;导致渲染的时候有问题 所以以后在页面上渲染数据的都在data里…

网络-WebSocket

文章目录 前言一、WebSocket简介应用场景原理 二、使用心跳监测广播消息 三、群聊demo总结 前言 本文主要记录WebSocket的简单介绍和使用&#xff0c;完成群聊的demo 一、WebSocket简介 WebSocket是一种通信协议&#xff0c;它通过单个TCP连接提供全双工的通信通道。 它允许客…

【C#】标准WebService Soap1.1 兼容 ContentType: application/xml

一、问题描述 1.1 ESB平台要求 ContentType&#xff1a;application/xml Soap协议版本&#xff1a;1.1 1.2 提供的 WebService 接口 语言&#xff1a;C# 目标框架&#xff1a;.NetFramework 4.6.1 1.3 Postman 测试结果 HTTP Error 415.0 - Unsupported Media Type 服务器…

计算机竞赛YOLOv7 目标检测网络解读

文章目录 0 前言1 yolov7的整体结构2 关键点 - backbone关键点 - head3 训练4 使用效果5 最后 0 前言 世界变化太快&#xff0c;YOLOv6还没用熟YOLOv7就来了&#xff0c;如果有同学的毕设项目想用上最新的技术&#xff0c;不妨看看学长的这篇文章&#xff0c;学长带大家简单的…

如何为您的 Linux 服务器设置简单的 Grafana 云监控仪表板

Grafana 是一个开源可观察性平台,用于创建可视化数据集的仪表板。您可以使用它方便地监控服务器统计信息,例如 CPU 消耗、网络吞吐量和正常运行时间。 Grafana可以自托管,也可以通过官方Grafana Cloud实例作为 SaaS 解决方案进行访问。在本文中,您将了解如何设置 Grafana …

修炼k8s+flink+hdfs+dlink(四:k8s(一)概念)

一&#xff1a;概念 1. 概述 1.1 kubernetes对象. k8s对象包含俩个嵌套对象字段。 spec&#xff08;规约&#xff09;&#xff1a;期望状态 status&#xff08;状态&#xff09;&#xff1a;当前状态 当创建对象的时候&#xff0c;会按照spec的状态进行创建&#xff0c;如果…

scratch芝麻开门 2023年9月中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析

目录 scratch芝麻开门 一、题目要求 1、准备工作 2、功能实现 二、案例分析

操作系统学习笔记3-同步互斥问题

文章目录 1 同步与互斥逻辑图2、并发性异步性独立性3、临界资源临界区4、同步与互斥 1 同步与互斥逻辑图 2、并发性异步性独立性 3、临界资源临界区 4、同步与互斥

汽车一键启动点火开关按键一键启动按钮型号规格

汽车点火开关/移动管家一键启动按键/汽车改装引擎启动按钮型号&#xff1a;YD828溥款开关 一键启动按钮&#xff08;适用于配套启动主机使用或原车一键启动开关更换&#xff09; 1.适合配套专用板板安装 2.开孔器开孔安装 3.原车钥匙位安装 外观&#xff1a;黑色 按钮上有3种不…

【融合ChatGPT等AI模型】Python-GEE遥感云大数据分析、管理与可视化及多领域案例实践应用

目录 第一章 理论基础 第二章 开发环境搭建 第三章 遥感大数据处理基础与ChatGPT等AI模型交互 第四章 典型案例操作实践 第五章 输入输出及数据资产高效管理 第六章 云端数据论文出版级可视化 更多应用 随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近…