计算机网络-数据链路层上篇

目录

一、数据链路层概述

二、封装成帧

三、差错检测

(一)奇偶校验

(二)循环冗余校验CRC

四、可靠传输

(一)停止-等待协议SW 

(二)后退N帧协议GBN

(三)选择重传协议SR

五、点对点协议PPP

(一)点对点协议PPP的帧格式

​(二)透明传输- 面向字节的异步链路采用插入转义字符的字节填充法

(三)透明传输-面向比特的同步链路采用插入比特0的比特填充法 

(四)点对点协议PPP的工作状态

六、媒体接入控制MAC

(一)静态划分信道

1、频分复用FDM

2、时分复用TDM

3、波分复用WDM

4、码分复用CDM

(二)动态接入控制

1、随机接入-总线局域网使用的协议:CSMA/CD(载波监听多址接入/碰撞检测)

2、随机接入-无线局域网使用的协议:CSMA/CA(载波监听多址接入/碰撞避免)


一、数据链路层概述

数据链路层在网络体系结构中所处的地位如下,当我们专门研究数据链路层时,可以视为,数据直接在数据链路层上通过链路传输

链路(Link)就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。

数据链路(Data Link)是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。

数据链路层的三个重要问题:

① 封装成帧

经过层层封装后,到达数据链路层时加上帧头和帧尾形成帧

封装后的格式如下:

② 差错检测

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

此时接收方如何知道产生了误码呢? 可以利用检错码,发送方发送数据之前可以基于待发送的数据和检错算法计算出检错码,将其封装于帧尾。接收方接收到数据后就可以通过帧尾中的检错码和检错算法检测帧中是否有误码。

③ 可靠传输

当接受方接收到的数据有误码出现时,如果是基于非可靠传输协议发送的数据,那么直接丢弃而不做任何措施。如果是可靠传输协议,则发送方需要重新发送使接收方能正确的接收到数据

上述是基于点对点的协议,如果是使用广播信道的数据链路层,那么除上述外还需要解决发送目的和碰撞问题

即如何知道数据是发送给C的,可以将帧发送的目的地址添加在帧中一起传输

 

 碰撞问题是共享式局域网不可避免的,可以使用以太网的媒体接入控制协议CSMA/CD

二、封装成帧

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

  • 帧头和帧尾中包含有重要的控制信息。

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

当数据链路层将帧交付到物理层,物理层将构成帧的各比特转换为电信号发送到传输媒体后,接收方如何从物理层交付的比特流中提取出一个个的帧呢?这就是帧头和帧尾存在的意义之一了,即帧定界

 如PPP帧的格式,在帧头和帧尾会加上帧定界标志

 但并不是每一种数据链路层的帧都包含帧定界标志,比如以太网版本2的MAC帧格式,是通过物理层在帧的前面添加前导码,并规定帧发送帧间间隔时间

 

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

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

面向字节的物理链路

那当上层交付的数据中也包含了和帧定界一样的数据时,此时接收方会错误接收帧。解决方法是对数据进行扫描,每出现一个和帧定界一样的数据或者转义字符则在其后添加转义字符、接收端物理层在遇到第一个帧定界符时知道是帧的开始,接下来遇到转义字符就知道之后的1字节虽然与帧定界符相同,但其内容是数据了。

面向比特的物理链路:

在和帧定界一样的数据中使用零比特填充法,保证帧定界在整个帧中的唯一性

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

三、差错检测

实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。这称为比特差错
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。

使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。

如下所示的帧中都包含了帧检验序列FCS字段,其作用是让接收方的数据链路层检测接收到的数据是否产生误码。

接下来介绍校验方法

(一)奇偶校验

在待发送的数据后面添加1位奇偶校验位使整个数据(包括所添加的校验位在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)。

  • 如果有奇数个位发生误码则奇偶性发生变化可以检查出误码,
  • 如果有偶数个位发生误码则奇偶性不发生变化不能检查出误码(漏检)

 (二)循环冗余校验CRC

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

练习题

1、检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。
2、要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用
3、循环元余校验CRC有很好的检错能力(检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层
4、在计算机网络中通常采用我们后续课程中将要讨论的检错重传方式来纠正传输中的差错或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务

四、可靠传输

当接收方检测出帧中出现误码,如果数据链路层向上层提供的服务类型不同做法也不同

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

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

可靠传输的三种实现机制

(一)停止-等待协议SW 

 

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

当往返时延RTT远大于数据帧发送时延To时 (例如使用卫星链路),信道利用率非常低。

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

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

(二)后退N帧协议GBN

停止-等待协议的利用率很低,当出现超时重传,其利用率更低。而使用流水线传输可提高信道利用率

回退N帧协议就是基于流水线传输,每次发送窗口内的组,得到接收方的ACK后,发送窗口往后移动

接收方接收后给发送方发送ACK确认后,发送窗口往后移动

接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后 (由具体实现决定),对按序到达的最后一个数据分组发送确认。ACKn表示序号为n及以前的所有数据分组都已正确接收,即累计确认。如下图,接收方接收到数据后向发送方发送了ACK1和ACK4,而ACK1在发送过程中丢失了,但此时不需要重传,因为ACK4被收到了,代表着接受方确认了ACK4前面的分组

当出现差错时,比如下图,分组5出现错误被接收方丢弃,此时因为接收方的窗口序号为5,后面的1076分组都不匹配,都被丢弃,此时接收方每丢弃一个分组就会发给发送方一个ACK,该ACK是最后一个正确接收分组的序号,即ACK4。发送方接收到ACK4后就知道刚才发送的几个分组都被丢弃了,此时根据发送方设置的接收重复ACK个数来决定是否立即重传,或者等待超时计时器超时结束再重传。

可以看到该过程中1076也连带被丢弃了,这就是所谓的回退N帧,可见,当通信线路不好时,回退N帧协议的利用率并不比停止-等待协议高。

总结

 (三)选择重传协议SR

回退N帧协议的接收窗口尺寸Wr只能等于1,因此接收方只能按序接收正确到达的数据分组
一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃 (尽管它们无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。
可设法只重传出现误码的数据分组。因此,接收窗口的尺寸Wr不应再等于1 (而应大于1),为了进一步提高性能,以便接收方先收下失序到达但无误码并目序号(使用逐一确认而不是累计确认)落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层,这就是选择重传协议

 

当2号分组出现差错,接收方丢弃后,由于发送方只接收到3号分组的ACK,此时窗口不能往前滑动,等2号分组的重传计时器超时,重新发送2号分组

总结

五、点对点协议PPP

点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议

PPP协议是因特网工程任务组IETF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661,RFC1662]。

PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:

  • 对各种协议数据报的封装方法 (封装成顿)
  • 链路控制协议LCP        用于建立、配置以及测试数据链路的连接
  • 一套网络控制协议NCPs        其中的每一个协议支持不同的网络层协议

 

(一)点对点协议PPP的帧格式

当数据中出现和帧定界相同的数据时

(二)透明传输- 面向字节的异步链路采用插入转义字符的字节填充法

 

(三)透明传输-面向比特的同步链路采用插入比特0的比特填充法 

(四)点对点协议PPP的工作状态

六、媒体接入控制MAC

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

随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术 

(一)静态划分信道

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

1、频分复用FDM

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

很显然,频分复用的所有用户同时占用不同的频带资源进行通信

2、时分复用TDM

时分复用技术将传输线路的带宽资源按时隙轮流分配给不同的用户,每对用户只在所分配的间隙里使用线路传输数据、时分复用技术将时间划分为了一段段等长的时分复用帧。每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙,如下图所示,每一个用户所占用的时隙是周期性出现的,其周期就是时分复用帧的长度。很显然,时分复用的所有用户在不同时间占用同样的频带宽度。

3、波分复用WDM

波分复用就是光的频分复用,下图是8路传输速率均为2.5Gbit/s的光载波,其波长均为1310nm,经光调制后,分别将波长变换到1550~1561.2nm,每个光载波相隔1.6nm。这8个很接近的光载波经过光复用器(或称合波器),就在一根光纤上传输,因此在一根光纤上传输的速率就达到了8*2.5Gbit/s=20Gbit/s。光信号传输一段时间后会衰减,需要对衰减了的信号进行放大才能继续传输,这就是掺铒光纤放大器的作用。

4、码分复用CDM

(二)动态接入控制

1、随机接入-总线局域网使用的协议:CSMA/CD(载波监听多址接入/碰撞检测)

CSMA/CD协议-争用期

 CSMA/CD协议-最小帧长

  CSMA/CD协议-最大帧长

 

CSMA/CD协议-帧发送流程

CSMA/CD协议-帧接收流程

 2、随机接入-无线局域网使用的协议:CSMA/CA(载波监听多址接入/碰撞避免)

隐蔽站问题

 

帧间间隔IFS

CSMA/CA的工作原理

问题1:源站为什么在检测到信道空闲后还要再等待一段时间DIFS?

就是考虑到可能有其他的站有高优先级的帧要发送。若有,就要让高优先级帧先发送

问题2:目的站为什么正确接收到数据帧hou还要等待一段时间SIFS才能发送ACK帧?

SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧在这段时间内,一个站点应当能够从发送方式切换到接收方式。

问题3:信道由忙转为空闲且经过DIFS时间后,还要退避一段随机时间才能使用i信道?

防止多个站点同时发送数据产生碰撞

CSMA/CA的退避算法

CSMA/CA的信道预约和虚拟载波监听

为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约

  1. 源站在发送数据之前先发送一个短的控制帧,称为请求发送RTS(Resquest to Send),它包括地址,目的地址以及这次通信(包括相应确认帧)所需的持续时间。
  2. 若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS(Clear To Send),它也包括这次通信所需的持续时间 (从RTS顿中将此持续时间复制到CTS帧中)。
  3. 源站收到CTS倾后,再等待一段时间SIFS后,就可发送其数据帧
  4. 若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK.

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AutoSAR系列讲解(入门篇)4.6-BSW的Watchdog功能

一、架构与术语解释 前面都挺难的吧?实践出真知,后面实践篇的时候,大家应该就能明白了。这一节就来讲个简单的功能------看门狗。看门狗想必大家应该都再熟悉不过了吧,主要就下面三层结构,简单明了,这节确实…

mac 文件批量重命名001开始

mac 文件批量重命名001开始,怎么操作?我们平时在整理办公文件的时候,经常需要对文件的名称进行修改,将文件修改为数字形式的名称,例如001、002、003、004......这样的形式,尤其是某项工作涉及非常多文件的时…

进程的基本概念解读

目录 什么是进程 PCB OS中用于管理控制的数据结构 进程控制块PCB的作用 进程控制块中的信息 前趋图 背景 作用 表示 示例 程序的顺序执行 程序顺序执行的特征 程序的并发执行 程序的并发执行的特征 例题解读 进程的三种基本状态 进程的三种状态之间的转换 进…

Spring面试题--Spring的bean的生命周期

这个问题比较困难,设计到了spring的底层,但是通过这个的学习,可以帮助我们了解Spring容器是如何管理和创建bean实例,以及方便调试和解决问题。 BeanDefinition bean的定义信息,Spring容器在进行实例化时,…

初学mybatis(二)CRUD操作及配置解析

学习回顾:初学mybatis(一) 一、namespace 1、将上面案例中的UserMapper接口改名为 UserDao;2、将UserMapper.xml中的namespace改为为UserDao的路径 .3、再次测试 结论: 配置文件中namespace中的名称为对应Mapper接口或…

常州工学院数字图像处理及应用2022-2023第二学期实验报告 + 期末

《数字图像处理及应用》 课程 实验报告书 专业班级: 21计二 姓 名: 王梓权 学 号: 21030228 指导教师: 徐则中 计算机信息工程学院 《数字图像处理》实验 实验教学目的和要求 《数字图像处理》课程内容是一门综合…

Linux 用户名称高亮和最近路径显示

1、通常情况下,Linux中的路径名称会不断叠加显示,如下图,这样看起来会很长。 2、为了设置路径只是当前最近的文件路径,先进入自己的家目录,然后进入.bashrc: 3、在.bashrc文件中的最后一行加入以下内容…

【Data Studio 2.1.0连接openGauss2.1.0】

Data Studio 2.1.0连接openGauss2.1.0 一、实验环境说明二、配置客户端接入方式三、Data Studio2.1.0连接openGauss数据库 一、实验环境说明 openGauss2.1.0版本Data Studio 2.1.0 版本 二、配置客户端接入方式 【以下操作是omm用户进行】 修改配置文件pg_hba.conf&#xf…

tiny tool - get_file_path_name_by_drop_file

文章目录 tiny tool - get_file_path_name_by_drop_file概述工程效果收获的知识点vs2022工程, 必须自己设置对话框可以接受文件的风格vs2022建立的工程, 默认是unicode编码, 设置剪贴板数据时, 必须要设置为unicode的格式, 否则剪切板中只有第一个字符工程主要实现END tiny too…

【Linux】线程同步(互斥锁和读写锁)

概念 线程同步是指多个线程之间协调和管理彼此的执行顺序,以避免竞态条件和不确定的结果。线程同步的目的是确保共享资源的正确访问和保护临界区的完整性。 作用 避免竞态条件:当多个线程同时访问和修改共享资源时,可能会导致竞态条件的发生…

微信小程序的跨页面传参以及data-方法的相关细节

🙂博主:小猫娃来啦 🙂文章核心:微信小程序的跨页面传参以及data-方法的相关细节 目录 前言wx.navigateTo()方法微信小程序传参的几种方式通过data-属性传参关于data-方法配合点击事件传参的细节 前言 其实在学习新东西的过程中&a…