计算机网络 —— 数据链路层

数据链路层

3.1 数据链路层概述

数据链路层把网络层交下来的数据构成帧发送到链路上,以及把收到的帧数据取出并上交给网络层。链路层属于计算机网络的底层。数据链路层使用的信道主要由以下两种类型:

  1. 点对点通信。
  2. 广播通信。
数据链路和帧

链路:从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。

数据链路:把实现数据传输的协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器(既有硬件,也包括软件)来实现这些协议。

一般的适配器都包括了数据链路层和物理层这两层的功能

帧:数据链路层的协议数据单元。

使用点对点信道的数据链路层

数据链路层协议有很多种,但是有三个基本问题原则是共同的。这三个基本问题是:封装成帧、透明传输、差错检查

使用广播信道的数据链路层
  • 共享式以太网的媒体接入控制协议CSMA/CD

  • 802.11局域网的媒体接入控制协议CSMA/CA

数据链路层的互连设备
  • 网桥和交换机的工作原理

  • 集线器(物理层互连设备)与交换机的区别

3.2 封装成帧
封装成帧

封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之称为帧。

  • 帧头和帧尾中包含有重要的控制信息。
  • 帧头和帧尾的作用之一就是帧定界。

在这里插入图片描述

当数据是由可打印的ASCII码组成的文本内容时,帧定界可以使用特殊的帧定界符。ASCII码时7位编码,一共可组合成128个不同的ASCII码,其中可打印的有95个,而不可打印的有33个。控制字符SOH(十六进制是01)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT(十六进制是04)表示帧的结束。

在这里插入图片描述

假定发送端在尚未发送完一个帧时突然出故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了帧定界符,接收端就知道前面收到的数据是个不完整的帧,必须丢弃。而后面收到的数据有明确的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下。

透明传输

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

  • 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
  • 面向比特的物理链路使用比特填充的方法实现透明填充。

当传送的帧时文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制符。从键盘上不管输入什么字符串都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。

当数据是非ASCII码的文本文件时(如二进制代码的计算机程序或图像等),情况就会有所不同。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样,数据链路层就会中断,把剩下的数据丢下。

在这里插入图片描述

解决方法:

字节填充

发送端地数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制是1B,二进制是00011011)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称位字节填充字符填充

在这里插入图片描述

比特填充

在发送前可以采用零比特填充法,对数据部分进行扫描,每5个连续1后面就插入一个比特0,这样就确保了帧定界在整个帧中的唯一性。

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

在这里插入图片描述

为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU(Maximum Transfer Unit)。

在这里插入图片描述

3.3 差错检验

传输差错可分为两大类:

  1. 比特差错
  2. 传输差错
比特差错

比特在传输过程中可能会出现差错:1可能会变成0,而0也可能会变成1,这就叫做比特差错。在一段时间内传输错误的比特占所传输比特总数的比率称为误码率。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检查措施,目前在数据链路层广泛使用了循环冗余检测 CRC的检错技术。

循环冗余校验CRC:

  1. 收发双方约定好一个生成多项式G(x);
  2. 发送方基于待发送的数据和生成多项式计算出冗余码FCS,将其添加到待传输数据的后面一起传输;
  3. 接收方通过生成多项式来计算收到的数据是否产生了误码;

在数据链路层,发送端帧检测序列FCS的生成和接收端的CRC检验都是用硬件完成的,处理很迅速,因此并不会耽误数据的传输。

传输差错

传输差错分为帧丢失、帧重复或帧失序

假设,在发送放连续传送三个帧:【#1】、【#2】、【#3】

  1. 帧丢失:收到【#1】、【#3】
  2. 帧重复:收到 【#1】、【#2】、【#2】、【#3】
  3. 帧失序:收到【#1】、【#3】、【#2】
3.4 可靠传输
3.4.1 基本概念

数据链路层向上层提供的服务类型:

  • 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做。
  • 可靠传输服务:想办法实现发送什么,接收端就收到什么。

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

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

3.4.2 实现机制 —— 停止- 等待协议SW(Stop - and -Wait)

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

在这里插入图片描述

  • 接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组。
  • 为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1。
  • 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
  • 超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”
    • 在数据链路层点对点的往返时间比较确定,重传时间比较好设定。
    • 然而在运输层,由于端到端往返时间非常不确定,设置合适的重传时间有时并不容易。

停止-等待协议信道利用率:

在这里插入图片描述

当往返时延RTT远大于数据帧发送时延TD时(例如使用卫星链路),信道利用率非常低。若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。

为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议,即回退N帧协议GBN和选择重传协议SR

3.4.3 实现机制 —— 回退N帧协议GBN(Go - Back - N)

回退N帧协议允许发送方连续发送多个帧(即发送窗口可以大于1),以解决停等协议信道利用率低的问题。

发送方可在未收到接收方确认分组的情况下,将序号落在发送窗口内的多个数据分组全部发送出去;但接收方的接收窗口大小仅为1,也就是只有接收到了此窗口所代表的序号的分组,接收方才会回复ACK并且移动接收窗口。同理,发送方收到了发送窗口中最早的那个序号对应分组的ACK,才会移动发送窗口。

在这里插入图片描述

接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后(由具体实现决定)对按序到达的最后一个数据分组发送确认。ACKn表示序号为n及以前的所有数据分组都已正确接收。

在这里插入图片描述

当通信线路质量不好时,GBN协议并不比SW协议效率高。

3.4.4 实现机制 —— 选择重传协议SR(Selective Request)

回退N帧协议的接收窗口尺寸 W R W_R WR只能等于1,因此接收方只能按序接收正确到达的数据分组

一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管它们无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。

为了进一步提高性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸 W R W_R WR不应再等于1(而应大于1),以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。这就是选择重传协议。

在这里插入图片描述

3.5 点对点协议PPP

互联网用户通常都要连接到某个ISP才能接入到互联网。PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。

在这里插入图片描述

3.5.1 PPP协议应满足的需求

(1)简单

(2)封装成帧

(3)透明性

(4)多种网络层协议

(5)多种类型链路

(6)差错检测

(7)检测连接状态

(8)最大传送单元

(9)网络层地址协商

(20)数据压缩协商

3.5.2 PPP协议的帧格式
(1)各字段的意义

PPP帧的首部和尾部分别为四个字段和两个字段。

F7E:表示一个帧的开始或结束

A FF:地址字段(没有携带PPP帧的信息)

C03:控制字段(没有携带PPP帧的信息)

协议:当协议字段为 0 x 0021时,PPP帧的信息字段就是 IP 数据报。若为 0 x C021,则信息字段时PPP链路控制协议LCP的数据,而 0 x 8021表示这是网络层的控制数据

信息部分:信息字段的长度使可变的,最多不超过1500字符

FCS:使用CRC的帧检验序列FCS

在这里插入图片描述

当信息字段中出现和标志字段一样的比特组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段里

(2)字节填充

当PPP使用异步传输时,我们使用0x7D(01111101)作为转义符,转义的规则如下:

  • 把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。
  • 若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。
  • 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列的(0x7D,0x31)。
(3) 零比特填充

PPP协议在同步传输时,采用零比特填充方式来实现透明传输

零比特填充法的具体做法是:在发送端,当一串比特流尚未加上标志字段时,先用硬件扫描整个帧。只要发现5个连续1,则立即填入一个0。因此经过这种零比特填充后的数据,就可以保证不会出现6个连续1。在接收一个帧时,先找到F字段以确定帧的边界。接着再用硬件对其中的比特流进行扫描。每当发现5个连续1时,就将这5个连续1后的一个0删除,以还原成原来的比特流。这样就保证了在所传送的比特流中,不管出现什么样的比特组合,也不至于引起帧边界的判断错误。

3.6 媒体接入控制
3.6.1 基本概念

共享信道要着重考虑的一个问题就是如何协调多个发送和接受站点对一个共享传输媒体的占用,即媒体介入控制MAC(Medium Access Control)。

在这里插入图片描述

媒体接入控制可分为静态划分信道、动态接入控制:

在这里插入图片描述
5139770502)

3.6.2 静态划分信道

信道复用

复用就是通过一条物理线路同时传输多路用户的信号。当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。

在这里插入图片描述

常见的信道复用技术有:频分复用FDM、时分复用TDM、波分复用WDM、码分复用CDM。

频分复用FDM

将传输线路的频带资源划分成多个子频带,形成多个子信道,各子信道之间需要留出隔离频带,以免造成子信道间的干扰。当多路信号输入一个多路复用器时,这个复用器将每一路信号调制到不同频率的载波上。接收端由相应的分用器通过滤波将各路信号分开,将合成的服用信号恢复成原始的多路信号。

在这里插入图片描述

时分复用TDM

时分复用技术将传输线路的带宽资源,按时隙轮流分配给不同的用户,每对用户只在所分配的时隙里使用线路传输数据。

时分复用技术将时间划分成了一段段等长的时分复用帧。每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙。

每一个用户所占用的时隙是周期性出现的,其周期就是时分复用帧的长度。

在这里插入图片描述

波分复用WDM

波分复用是利用多个激光器在单条光纤上同时发送多束不同波长激光的技术。每个信号经过数据(文本、语音、视频等)调制后都在它独有的色带内传输。

在这里插入图片描述

码分复用CDM

码分复用CDM是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,更常用的名词是码分多址CDMA(Code Division Multiple Access)。

复用和多址的区别:

  • 复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。
  • 多址(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样)。

在CDMA中,每一个比特时间再划分为m个短的间隔,称为码片(Chip)。通常m的值是64或128。为了简单起见,在后续的举例中,我们假设m为8。

使用CDMA的每一个站被指派一个唯一的m bit码片序列利(Chip Sequence)。

  • 一个站如果要发送比特1,则发送它自己的m bit码片序列;
  • 一个站如果要发送比特0,则发送它自己的m bit码片序列的二进制反码;

码片序列的挑选原则如下:

  1. 分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列。
  2. 分配给每个站的码片序列必须相互正交(规格化内极为0)。
3.6.3 随机接入控制 —— CSMA/CD 协议

总线局域网使用的协议:CSMA/CD

在这里插入图片描述

3.6.4 随机接入控制 —— CSMA/CA 协议

无线局域网使用的协议:CSMA/CA

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.7 MAC地址、IP地址以及APR协议

在这里插入图片描述

3.8 集线器与交换机区别

在这里插入图片描述

在这里插入图片描述

3.9 以太网交换机学习和转发帧的流程

在这里插入图片描述

3.10 以太网交换机的生成树协议STP

在这里插入图片描述

3.11 虚拟局域网VLAN
3.11.1 概述

在这里插入图片描述

3.11.2 实现机制

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UniRepLKNet实战:使用 UniRepLKNet实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

LV.13 D10 Linux内核移植 学习笔记

一、Linux内核概述 1.1 内核与操作系统 内核 内核是一个操作系统的核心,提供了操作系统最基本的功能,是操作系统工作的基础,决定着整个系统的性能和稳定性 操作系统 操作系统是在内核的基础上添加了各种工具集、桌面管理器、库、…

基于Java SSM框架实现企业车辆管理系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现企业车辆管理系统演示 JSP技术 JSP技术本身是一种脚本语言,但它的功能是十分强大的,因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时,它可以使显示逻辑和内容分开,这就极大的方便了运动员的需求…

关于html导出word总结一

总结 测试结果不理想,html-to-docx 和 html-docx-js 最终导出的结果 都 差强人意,效果可以见末尾的附图 环境 "electron": "24.3.0" 依赖库 html-docx-js html-docx-js - npm html-to-docx html-to-docx - npm file-saver…

如何将重复方法封装为Aop切面并结合注解使用

首先要导入依赖 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId> </dependency> 编写注解 package com.yg.domain.note;import java.lang.annotation.ElementType; import java.lang.annotation.Rete…

PyCharm连接服务器 - 2

文章目录 PyCharm连接服务器-21.如何连接服务器&#xff1f;2.如何在终端窗口打开SSH连接&#xff1f;3.Terminal终端出现中文乱码的解决办法&#xff1f;4.如何查看远程服务器的树目录结构&#xff1f;5.如何配置代码同步&#xff1f;6.如何为项目配置远程服务器中的python解释…

前端 TS 语法继承 多态 修饰符 readonly 抽象类 ts 基本写法 可选 剩余参数 函数重载 接口 类(3)

继承 继承之间的叫法 A类继承了B类&#xff0c;那么A类叫做子类&#xff0c;B类叫成基类 子类 ---》派生类 基类 ---》超类&#xff08;父类&#xff09; // 继承之间的叫法 // A类继承了B类&#xff0c;那么A类叫做子类&#xff0c;B类叫成基类 // 子类 ---》派生类 // 基类 …

【C++ 程序设计入门基础】- 第4节-函数

1、函数 函数是对实现某一功能的代码的模块化封装。 函数的定义&#xff1a; 标准函数&#xff1a; 输入 n 对整数的 a、b &#xff0c;输出它们的和。 #include <iostream> #include <windows.h> using namespace std;int add(int a,int b);//函数原型声明int…

ppt怎么录屏录音并且导出?好用录屏软件推荐

ppt已经成为了日常工作与学习中必不可少的工具&#xff0c;而ppt屏幕录制功能&#xff0c;可以方便用户将他人的演讲或视频中的内容记录下来&#xff0c;以便进一步学习与研究。录制ppt演示并将其导出为视频文件&#xff0c;可以帮助我们进行分享&#xff0c;但是很多人不知道p…

uniapp 制作 wgt 包(用于 app 的热更新)

升级版本号 修改 manifest.json 的配置&#xff0c;应用版本名称和应用版本号 必须高于上一版的值。 制作 wgt 包 发布 wgt 包 打开 uni-admin 项目的升级中心 上传后会自动生成下载链接 app 的静默热更新 发布新版后&#xff0c;用户打开app&#xff0c;后台会自动下载 wgt…

【NR技术】RRC状态转移以及RRC重建立过程

1 概述 本文介绍NR RRC状态转移的过程以及RRC重建立相关的过程。 2 RRC状态转移 2.1 RRC connected 态到 RRC inactive转移 RRC connected到RRC inactive state状态转换&#xff0c;gNB由gNB- cu和gNB- du (s)组成的场景下&#xff0c;如图1所示 图1 RRC connected to RRC …

odoo17基础培训1-odoo开发基础知识准备以及odoo17开发环境安装

odoo17基础培训 一、odoo开发基础知识准备以及odoo17开发环境安装 1、odoo是什么&#xff1f; 当我介绍客户使用odoo系统作为业务管理平台时&#xff0c;有时会被问到Odoo是什么&#xff1f; 简单点&#xff0c;可以这么说&#xff1a; Odoo是一套完整的系统&#xff0c;是…

强化学习(一)简介

强化学习这一概念在历史上来源于行为心理学&#xff0c;来描述生物为了趋利避害而改变自己行为的学习过程。人类学习的过程其实就是为达到某种目的不断地与环境进行互动试错&#xff0c;比如婴儿学习走路。强化学习算法探索了一种从交互中学习的计算方法。 1、强化学习 强化学…

ftp安装与配置 云服务器 CentOS7

1、FTP的安装 #安装 yum install -y vsftpd#设置开机启动 systemctl enable vsftpd.service#启动 systemctl start vsftpd.service#停止 systemctl stop vsftpd.service#查看状态 systemctl status vsftpd.service 2、配置FTP #修改前先进行备份文件 cp /etc/vsftpd/vsftpd…

SAP PI之MessageMapping

下图是ESR配置中各种对象的关联关系&#xff0c;注意OperationMapping和MessageMapping的方向性 MsgMapping是两个MassageType之间的关系&#xff0c;用于ServiceInterface的OperationMapping中发送和接收方在Request和Response结构之间的映射&#xff0c;如果ServiceInterface…

《SRE Google 运维解密》笔记

指导思想 介绍 Google 生产环境介绍 borg 是 k8s 的前身。 拥抱风险 服务质量 现在的 SLO 没有更细粒度的划分到季度 如果划分到季度&#xff0c;需要用这个数据来限制什么或者进行什么活动&#xff1f; L1S 链路的 SLA 的签署工作已经做了很多 对于 SLA 的达成情况数据没有…

代码随想录算法训练营第七天|哈希表理论基础,454.四数相加II ,383. 赎金信 ,15. 三数之和 ,18. 四数之和

刷题建议 刷题建议与debug 代码随想录目前基本都有了视频讲解&#xff0c;一定要先看视频&#xff0c;事半功倍。写博客&#xff0c;将自己的感悟沉淀下来&#xff0c;不然会忘大家提问的时候&#xff0c;记得要把问题描述清楚&#xff0c;自己在哪一步遇到了问题&#xff0c…

AWS EC2的SSM配置(AWS云中的跳板机)

问题 开发人员需要访问AWS云中私有子网的数据库服务等&#xff0c;都需要通过EC2进行SSH隧道代理。这里假设本地已经有一款稳定优秀的SSH客户端工具&#xff0c;并且假设已经会熟练使用SSH的隧道代理。 1.创建EC2 搜索找到EC2服务&#xff0c;如下图&#xff1a; 点击“启动…

Docker 配置国内镜像源加速

1. 国内镜像源总览 名称路径中国官方镜像https://registry.docker-cn.com网易163镜像http://hub-mirror.c.163.com中科大镜像https://docker.mirrors.ustc.edu.cn阿里云镜像https://[xxx].mirror.aliyuncs.com 2. 阿里云镜像源 地址&#xff1a;https://cr.console.aliyun.c…

【开源】基于JAVA+Vue+SpringBoot的校园电商物流云平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 商品数据模块2.3 快递公司模块2.4 物流订单模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 商品表3.2.2 快递公司表3.2.3 物流订单表 四、系统展示五、核心代码5.1 查询商品5.2 查询快递公司5.3 查…