【b站-湖科大教书匠】3 数据链路层-计算机网络微课堂

news2024/10/5 19:13:24

课程地址:【计算机网络微课堂(有字幕无背景音乐版)】 https://www.bilibili.com/video/BV1c4411d7jb/?share_source=copy_web&vd_source=b1cb921b73fe3808550eaf2224d1c155

3 数据链路层

3.1 数据链路层概述

3.1.1 数据链路层在网络体系结构中的地位

复习一下主机收发数据过程。

主机H1将待发送的数据逐层封装后,

通过物理层将构成数据报的比特转换为电信号,发送到传输媒体。

数据包进入路由器后,由下往上逐层解封到网络层

路由器根据数据报的目的网络地址和自身转发表,确定数据包的转发端口

然后从网络层向下逐层封装数据包,并通过物理层将数据包发送到传输媒体。

数据包最终到达主机H2时,继续由下往上逐层解封,最终解封出主机H1所发送的数据。

3.1.2 链路

仅有链路还不够,还需要一些通信协议来控制这些数据的传输。

3.1.3 帧

3.1.4 数据链路层的3个重要问题

3.1.5 封装成帧

数据链路层给网络层交付的协议数据单元添加数据链路层协议首部,简称为帧头,还有帧尾,这个操作成为封装成帧

添加帧头和帧尾的目的,是为了在链路上以帧为单元传送数据,也就是实现数据链路层本身的功能

例子

3.1.6 差错检测

发送方将封装好的帧经物理层发送给传输媒体。

帧在传输过程中遭遇干扰后可能会出现误码,也就是比特0变成比特1,反之亦然。

思考:接收方主机如何判断帧在传输过程中是否出现了误码呢?

可以通过检错码来发现。

发送方在发送帧之前,基于待发送的数据和检错算法计算出检错码,并将其封装在帧尾。例如,以太网V2的MAC帧的帧尾,就是4字节的帧检验序列FCS字段。要写入该字段的内容——检错码。接收方主机收到帧后,通过检错码和检错算法,可以判断出帧在传输过程中是否出现了误码。

3.1.7 可靠传输

接收方主机收到有误码的帧后,不会接收该帧,将其丢弃。如果数据链路层向上层提供的是不可靠服务,那么丢弃就丢弃了,不会有其他措施。

如果数据链路层提供的是可靠服务,那么需要其他措施确保接收方主机还可以重新收到被丢弃的帧的正确副本。

即:尽管误码是不能完全避免的,但若实现发送方发送什么,接收方就能收到什么,就称为可靠传输。

在介绍以上3个问题时,使用的是点对点信道的数据链路层例子。

对于使用广播信道的数据链路层,除了三个问题外,还有其他问题。

3.1.8 使用广播信道的额数据链路层

将帧的目的地址添加在帧中一起传输。

3.1.9 交换式局域网

使用点对点链路和链路层交换机的交换式局域网,在有线(局域网)领域完全取代了共享式局域网。

网络中的交换机是如何转发帧的呢?

3,1.10 无线局域网

由于无线信道的广播天性,无线局域网仍使用共享信道技术,工作原理是怎样的呢?

3.2 封装成帧

3.2.1 封装成帧

  • 封装成帧:数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧的操作。
    • 帧头和真伪中包含有重要的控制信息。
    • 帧头和帧尾的作用之一就是帧定界

发送方的数据链路层将上层交付下来的协议数据单元封装成帧后,要通过物理层,将构成帧的各比特转换成电信号发送到传输媒体。

那么,接收方的数据链路层,如何从物理层交付的比特流中,提取出一个个帧呢?

帧头和帧尾的作用之一就是帧定界。

并不是每一种数据链路层协议的帧都包含有帧定界标志。

比如,以太网V2的MAC帧的帧头和帧尾中没有帧定界标志,

那么,接收方是如何从物理层交付的比特流中提取出一个个的以太网帧呢?

物理层给封装好的帧添加前导码

另外,以太网还规定了帧间间隔时间。

3.2.2 透明传输

透明传输是指数据链路层向上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

不能

当接收方再次接收到帧定界标志时会误以为帧结束了。

若数据链路层不采取其他措施,避免接收方对帧是否结束的误判,就不能成为透明传输。

即数据链路层对上层交付的协议数据单元有限制,其内容不能包含帧定界符。

很显然,这样的数据链路层没有使用价值。

实际上,各种数据链路层协议一定会解决这个问题。例如在发送帧之前,对帧的数据部分进行扫描,每出现一个帧定界符,就在其前面插入一个转义字符。接收方数据链路层在物理层交付的比特流中提取帧,遇到第一个帧定界符时认为这是帧的开始。遇到转义字符时后面1字节的内容虽与帧定界符相同,但它是数据而不是定界符。剔除转义字符后将其后面的内容作为数据继续提取。当再次提取到帧定界符时表明这是帧的结束。

思考:既包含帧定界符,又包含转义字符,如何处理?

在帧定界符和转义字符前插入转义字符。

说明:转义字符是一个特殊的控制字符,长度为1个字节,十进制值为27。

以上介绍的是面向字节的物理链路,使用字节填充(又称字符填充)的方法实现透明传输。

对于面向比特的物理链路,应该使用比特填充的方法来实现透明传输。

举例

问题:数据中出现了帧定界符。

方法:发送前,使用零比特填充法,对数据部分进行扫描,每5个连续的比特1后面插入1个比特0.这样就确保了帧定界符在整个帧中的唯一性。也就可以实现透明传输。

接收方的数据链路层,从物理层交付的比特流中提取帧时,将帧的数据部分的每5个连续的比特1后面的那个比特0剔除即可。

零比特传输习题

A

 3.2.3 补充

因为仅从数据链路层来看,帧的数据部分是真正要传输的数据,帧头和帧尾都是为了实现数据链路层功能而额外添加的。

3.3 差错检测

3.3.1 比特差错

3.3.2 误码率

3.3.3 简单检错方法-奇偶校验

采用奇校验,当比特1的数量的奇性改变,可以检查出错误。

但如果传输过程中发生了两位误码,会误认为传输过程中没有发生误码。

即,采用奇校验,若比特1的数量的奇性不改变,则无法检查出错误。

假设双方规定采用偶校验。

可以发现规律。

总结规律

奇偶校验的漏检率较高,因此计算机网络的数据链路层一般不会采用这种检测方法。

3.3.4 循环冗余校验 CRC

CRC是一种具有很强检错能力的检错方法,漏检率极低。

举例说明

练习

解答

步骤1 构造被除数

步骤2 构造除数

步骤3 做除法

步骤4 检查余数

练习2

解答

注意

3.4 可靠传输

3.4.1 可靠传输的基本概念

接收方的数据链路层通过帧尾中的帧检验序列FCS字段的值,即检错码,可以检测出帧中出现了比特差错。

那么接下来该如何处理呢?

这取决于数据链路层向上层提供的服务类型。

可靠传输服务

比特差错只是传输差错的一种。

分组丢失。

分组失序

分组重复        

可靠传输服务不只局限于数据链路层。

3.4.2 可靠传输的实现机制——停止-等待协议

本节和后面两节介绍可靠传输的三种实现机制。

停止-等待协议

发送方发送的数据分组丢失的情况。

引出超时重传。

接收方发送的确认或否认分组丢失的情况。

引出数据分组编号。

这样,根据数据分组的序号,接收方就可以判断该数据分组是否是重复的。接收方丢弃重复的数据分组,并给发送方发送针对该数据分组的确认分组,以免发送方对该数据分组的再次超时重传。

思考:既然数据分组需要编号,那么确认分组是否也需要编号呢?

 也是需要的,用于解决确认分组迟到的问题。

说明:对于数据链路层点对点信道而言,往返时间比较固定,不会出现确认迟到的情况。因此如果只在数据链路层实现停止-等待协议,可以不用给确认分组编号。

注意事项

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

假设收发双方之间是一个直通的信道。发送方发送完一个数据分组后就停止发送,并等待接收方对该数据分组的确认。当收到确认分组后,可以发送下一个数据分组,如此反复进行。

TD是发送方发送数据所耗费的发送时延,RTT是收发双方之间的往返时间RTT,TA是接收方发送确认分组所耗费的发送时延TA。图中忽略了接收方对数据分组的处理时延(一般不方便计算,做题时常忽略的那个)以及发送方对确认分组的处理时延。

发送方从发送一个数据分组开始到可以发送下一个数据分组为止所经历的总时间——TD+RTT+TA。

仅在TD内用于传送有用数据,也就是数据分组。

因此信道利用率如图所示。

TA一般远小于TD,可以忽略。

当RTT远大于TD时,信道利用率非常低。

举例说明

结论

练习题

D

注意:像停止等待协议,通过确认和重传机制实现的可靠传输协议,常称为自动请求重传协议ARQ,意思是重传的请求是自动进行的,不需要接收方显式请求发送方重传某个出错的分组。

3.4.3 可靠传输的实现机制——回退N帧协议

停止等待协议,发送方每发送一个数据分组,就停止发送并等待接收方的确认分组,当收到接收方发送的确认分组后,才会发送下一个数据分组,如此反复进行。从图中可以看出,发送方发送一个数据分组,就至少等待一个收发双方的往返时间。当往返时间较大时,例如卫星链路,停止等待协议的信道利用率很低,若出现超时重传,信道利用率会更低。

如果发送方在收到接收方的确认分组之前,可以连续发送多个数据分组,则可以大大提高信道利用率。这是一种流水线式传输。就本例而言,同等时间下相同时间内,使用停止等待协议的发送方只能发送一个数据分组,而采用流水线传输的发送方,可以发送5个数据分组。

本节课介绍回退N帧协议,该协议在流水线传输的基础上,利用发送窗口来限制发送方可连续发送数据分组的个数。

假设采用3个比特给分组编号,因此序号范围是0-7。

如图所示,是收发双方各自的分组序号。当序号到7时,下一个序号从0开始。

发送方维持一个发送窗口,序号落在发送窗口内的数据分组可被连续发送,而不必等收到接收方的相应确认分组后再发送。

发送窗口的尺寸记为WT。对于本例,其取值范围是1<WT <= 2^3 -1,其中的3是构成分组序号的比特数量。本例取WT的值为5。(如果WT取值为1,则为停止-等待协议。如果WT取值超过取值范围上限,则会造成严重错误。)

如图所示,序号落在发送窗口内的5个数据分组可被连续发送,而落在发送窗口外的分组不允许发送。

接受窗口的尺寸记为WR。对于回退N帧协议,WR取值只能为1.这一点与停止-等待协议是相同的。

如图所示,序号落在接收窗口内的数组分组允许接收,反之不允许接收。

首先来看最简单的情况——无差错情况

1 无差错情况

发送方将序号落在发送窗口的0-4号数据分组,依次连续发送出去。经过互联网的传输,正确到达了接收方,即没有出现乱序和误码。

接收方按序接收,每接收一个,接收窗口就按序向前滑动一个位置,并给发送方发送所接收分组的确认分组。

p26   3:50

3.4.4 可靠传输的实现机制——选择重传协议

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

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

相关文章

深度学习 --- stanford cs231学习笔记五(训练神经网络之数据的预处理)

数据的预处理(Data Preprocessing) 2 Data Preprocessing数据的预处理 数据预处理的几种方法 2&#xff0c;1 数据的零点中心化 数据的零点中心化的目的就是为了把数据的整体分布拉回到原点附近&#xff0c;也就是让数据的整体均值变为0。 ​ 2&#xff0c;2 数据的标准化 数据…

介绍ES6中的class类:(一) 类的基本语法

一、类的由来与简介 1. 简介 很早很早之前&#xff0c;在JavaScript的世界里&#xff0c;生成实例对象的传统方法是通过构造函数。 嗯哼&#xff1f; function Point(x, y) {this.x x;this.y y; }Point.prototype.toString function () {return ( this.x , this.y )…

MATLAB2024a下的BP神经网络回归工具箱预测

1 打开BP神经网络回归工具箱GUI界面 图1-1 如图1-1所示&#xff0c;虽然叫神经网络拟合但确实是BP神经网络回归工具箱&#xff0c;如果想要使用其他神经网络模型&#xff0c;可以打开左边的深度网络网络设计器&#xff0c;如图1-2、图1-3所示&#xff1a; 图1-2 图1-3 2 导入训…

Java操作Word文档

文章目录 Java操作Word文档引言1、技术选型结论 2、基础文本填充2.1 引入依赖2.1.1. poi2.1.2. poi-ooxml2.1.3. poi-ooxml-schemas 总结2.2 业务思路2.3 业务层 OfficeService2.4 通用工具类 OfficeUtils2.5 控制层 OfficeController 3、表格3.1 准备模板3.2 业务层 OfficeSer…

NVIDIA控制面板3D设置一栏中不能通过预览更改图形设置的解决办法

今天因为GeForce Experience弹窗让我更新之后&#xff0c;手欠直接删掉了 然后图中标出的两个选项就没了 解决方法很简单&#xff0c;就是下回来&#xff0c;hhh https://www.nvidia.cn/geforce/drivers/ 直接下载就行&#xff0c;不用管版本&#xff0c;但是这种驱动千万不要…

本地项目上传到GitHub上(李豆)

本地项目上传到GitHub上(李豆) 准备工作&#xff1a; 本地需要有 git 也需要有一个 GitHub 账号 首先需要在 GitHub 新建一个空仓库 在想要上传项目的文件夹中使用 Git 命令操作 初始化&#xff1a; git init与 github 仓库进行链接 &#xff1a;git remote add origin …

妙手ERP正式接入Lazada 3PF,支持批量设置产品库存,管理多仓发货

Lazada平台近期又有大动作&#xff0c;上线了3PF一店多运模式&#xff01; 一、Lazada 3PF一店多运模式 在介绍3PF一店多运模式前&#xff0c;要先说明一下原有的Lazada履约模式&#xff0c;此前&#xff0c;Lazada为跨境商家提供两大类物流履约方案&#xff1a; 一类&#x…

谷歌网络营销中SEO的策略有哪些?

在网络营销中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;是一种关键策略&#xff0c;旨在提高网站在搜索引擎结果中的排名。首先&#xff0c;要进行关键词研究&#xff0c;找出潜在客户使用的搜索词。接下来&#xff0c;优化网站内容&#xff0c;使其包含这些关键词&…

Android高级面试_8_热修补插件化等

Android 高级面试&#xff1a;插件化和热修复相关 1、dex 和 class 文件结构 class 是 JVM 可以执行的文件类型&#xff0c;由 javac 编译生成&#xff1b;dex 是 DVM 执行的文件类型&#xff0c;由 dx 编译生成。 class 文件结构的特点&#xff1a; 是一种 8 位二进制字节…

“必答题”-中小制造企业如何做好数字化转型

实现数字化转型是当前中小制造企业生存下去的重要保障。通过数字化转型&#xff0c;中小企业可以充分利用数字技术对其生产、运营、管理等环节进行全链路的改造和应用&#xff0c;提升企业的竞争力。 那么&#xff0c;中小制造企业的数字化要如何做&#xff1f; 中小制造企业数…

LLM在软件测试中的革新应用

一、引言 随着人工智能技术的蓬勃发展&#xff0c;大语言模型&#xff08;Large Language Model&#xff0c;简称LLM&#xff09;如GPT系列&#xff0c;在自然语言处理领域取得了显著进展。LLM不仅能够处理复杂的自然语言任务&#xff0c;还在多个领域展现出广泛的应用潜力。在…

项目分层--简单图书管理系统

分层情况 实体类Book代码 //实体类 public class Book {private int id;private String name;private int bsum;public Book() {}public Book(int id, String name, int bsum) {this.id id;this.name name;this.bsum bsum;}public int getId() {return id;}public void set…

目标检测算法之YOLO(YOLOv10)

yolo算法理解 BackgroundConsistent Dual Assignments for NMS-free TrainingHolistic Efficiency-Accuracy Driven Model DesignEfficiency driven model designLightweight classification headSpatial-channel decoupled downsamplingRank-guided block design Accuracy dri…

适用于智慧城市、智慧文旅等在线场景的轻量级3D数字人引擎MyAvatar简介

本人研发的国内首个纯面向web应用和小程序的轻量级3D虚拟人引擎MyAvatar。 功能简述 支持3D模型定制&#xff08;写实或卡通风格均可&#xff0c;人物模型需实现绑定和变形&#xff09;动画可以内置于模型中&#xff0c;也可以单独以glb或fbx格式导出并动态加载支持readyplay…

【区间动态规划】1771. 由子序列构造的最长回文串的长度

本文涉及知识点 动态规划汇总 LeetCode1771. 由子序列构造的最长回文串的长度 给你两个字符串 word1 和 word2 &#xff0c;请你按下述方法构造一个字符串&#xff1a; 从 word1 中选出某个 非空 子序列 subsequence1 。 从 word2 中选出某个 非空 子序列 subsequence2 。 连…

图像、色彩波和抗混叠

阮一峰的博文图像与滤波中分析了图像和波的关系&#xff0c;主要结论如下&#xff1a; 图像本质上就是各种色彩波的叠加。图像就是色彩的波动&#xff1a;波动大&#xff0c;就是色彩急剧变化&#xff1b;波动小&#xff0c;就是色彩平滑过渡。色彩剧烈变化的地方&#xff0c;…

Android 简单的so层逆向

前言 最近搞了一下安卓。简单学习记录一下。 目标程序&#xff1a; xiao shui mian 也就是某个参数的逆向 准备环境 安卓机scrcpyadbfrida解包软件&#xff08;不列举了&#xff09; 这种环境安装这里就不多说了。教程也很多。 参数逆向分析 先抓包看看参数 这里我使用…

时序预测双飞轮,全面超越Transformer,纯MLP模型实现性能效能齐飞

本文作者简介&#xff1a;王世宇&#xff0c;蚂蚁集团算法专家&#xff0c;在AI创新技术部NextEvo主要负责时序算法研究方向&#xff0c;主导时序预测平台建设和时序算法创新研发和架构工作&#xff0c;推动预测与决策联动的双引擎能力。在ICLR, IJCAI, KDD, AAAI, WSDM, ICDM,…

C++面试八股文:std::deque用过吗?

100编程书屋_孔夫子旧书网 某日二师兄参加XXX科技公司的C工程师开发岗位第26面&#xff1a; 面试官&#xff1a;deque用过吗&#xff1f; 二师兄&#xff1a;说实话&#xff0c;很少用&#xff0c;基本没用过。 面试官&#xff1a;为什么&#xff1f; 二师兄&#xff1a;因为使…

OverTheWire Bandit 靶场通关解析(上)

介绍 OverTheWire Bandit 是一个针对初学者设计的网络安全挑战平台&#xff0c;旨在帮助用户掌握基本的命令行操作和网络安全技能。Bandit 游戏包含一系列的关卡&#xff0c;每个关卡都需要解决特定的任务来获取进入下一关的凭证。通过逐步挑战更复杂的问题&#xff0c;用户可…