当前位置: 首页 > news >正文

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

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅!

文章目录

  • 前言
  • 1 通信信道类型
  • 2 数据链路
  • 3 帧
  • 4 透明传输
  • 5 差错检测


前言

在计算机网络通信中,数据链路层起着关键作用。它为直接相连的网络设备之间提供可靠的数据传输服务。本文将系统介绍数据链路层的通信方式、帧封装机制以及如何使用循环冗余检验 (CRC) 实现差错检测,确保无比特差错的传输。

1 通信信道类型

①点对点信道
点对点信道采用一对一的通信方式,在两个设备之间直接传输数据,常用于串行线路或某些专用网络中。

②广播信道
广播信道采用一对多的通信方式,将数据包发送给所有接入信道的设备。在广播信道上,主机需通过共享信道协议进行协调,以避免数据冲突和干扰。

在这里插入图片描述

2 数据链路

①链路 (Link)
链路是无源的点到点物理线路段,中间没有任何交换节点,也称为物理链路。

②数据链路 (Data Link)
当链路中添加控制数据传输的协议的硬件和软件后,就构成了数据链路,也称为逻辑链路。

3 帧

①封装成帧 (Framing)
在传输过程中,需要对数据进行封装,在一段数据的前后加上首部和尾部,构成一个帧。首部和尾部的主要作用是进行帧定界,即确定每一帧的开始和结束。

②最大传送单元 (MTU)
MTU 规定了每帧的数据部分的长度上限,避免数据包过大导致传输失败。
在这里插入图片描述
在这里插入图片描述

③控制字符作为帧定界符

  • SOH (Start Of Header):放在帧的首部,表示帧的开始。
  • EOT (End Of Transmission):放在帧的尾部,表示帧的结束。

在这里插入图片描述

4 透明传输

①定义
透明传输指的是在数据链路层中,无论发送的数据包含何种比特组合,都能确保数据按照原样不受干扰地传输到接收端。

“透明”意味着即使数据中存在与控制字符(如 SOH、EOT 等)相同的比特模式,这些数据也不会被链路层误解为帧的起始或结束,从而避免数据边界的错误解析。

在数据链路层透明传送数据:无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错地通过这个数据链路层。

【情景引入】
如果数据内容中包含的某些字节的二进制代码与控制字符 (如 SOH、EOT) 相同,数据链路层可能会误判帧边界,导致传输错误。
在这里插入图片描述

【解决方案】
用“字节填充”或**“字符填充**”法解决透明传输的问题。
在检测到与控制字符冲突的字节时,通过添加特殊字符来避免错误解析。这种填充技术确保无论数据的比特组合如何,都能无误传输,实现透明传输
在这里插入图片描述

5 差错检测

①误码率 (BER)
在数据传输过程中,比特可能出现错误(如 1 被误判为 0,或 0 被误判为 1)。
误码率 (BER) 是一段时间内错误比特占比特总数的比率,用于衡量传输质量。
在这里插入图片描述
②循环冗余检验 (CRC)

a. CRC 原理与计算

  1. 划分数据组:将数据划分为长度为 (k) 比特的组。

  2. 添加冗余码:CRC 运算会在每组数据后面添加 (n) 位冗余码,构成帧并发送。
    在这里插入图片描述

  3. 计算步骤

    • 对数据 (M) 进行模 2 运算,将其扩展为 (k + n) 位。
    • 用事先选定的多项式 (P)(长度为 (n + 1) 位)对扩展后的数据进行除法,得到商 (Q) 和余数 (R)。
    • 将余数 (R)(长度为 (n) 位)作为冗余码附加到原数据 (M) 后,一起发送。
      在这里插入图片描述

【CRC 冗余码的计算举例】
在这里插入图片描述

③帧检验序列 (FCS)
FCS 是在帧的末尾添加的冗余码,用于检测传输中的比特差错。

【注意】
循环冗余检验 CRC 和帧检验序列 FCS 并不等同:

  • CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
  • FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。

④常用的 CRC 生成多项式
CRC 检验的效果取决于选用的生成多项式。以下是常见的生成多项式:

  • CRC-16:(X^{16} + X^{15} + X^2 + 1)
  • CRC-CCITT:(X^{16} + X^{12} + X^5 + 1)
  • CRC-32:(X^{32} + X^{26} + X^{23} + X^{22} + X^{16} + X^{12} + X^{11} + X^{10} + X^8 + X^7 + X^5 + X^4 + X^2 + X + 1)

【注意】
无比特差错”与“无传输差错”区别:

  • 可靠传输:数据链路层的发送端发送什么,在接收端就收到什么。
  • 传输差错可分为两大类:
    • 比特差错;
    • 传输差错:帧丢失、帧重复或帧失序等。
  • 在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输。
  • 要实现可靠传输,还必须再加上帧编号、确认和重传等机制。
http://www.lryc.cn/news/459917.html

相关文章:

  • 台式机来电自启动设置
  • 【最新华为OD机试E卷-支持在线评测】考勤信息(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
  • netdata保姆级面板介绍
  • 苹果最新论文:LLM只是复杂的模式匹配 而不是真正的逻辑推理
  • Python知识点:基于Python工具,如何使用Scikit-Image进行图像处理与分析
  • MongoDB初学者入门教学:与MySQL的对比理解
  • Oracle AI Vector Search
  • 基于SpringBoot的健身会员管理系统实战分享
  • Elasticsearch高级搜索技术-结构化数据搜索
  • ffmpeg面向对象——类所属的方法探索
  • TensorRT-LLM七日谈 Day3
  • 如何使用Pandas库处理大型数据集?
  • XHR 创建对象
  • # 在执行 rpm 卸载软件使用 nodeps 参数时,报错 error: package nodeps is not installed 分析
  • C++的类和动态内存分配(深拷贝与浅拷贝)并实现自己的string类
  • 通过观测云 DataKit Extension 接入 AWS Lambda 最佳实践
  • MySQL-三范式 视图
  • 多线程(三):线程等待获取线程引用线程休眠线程状态
  • Hi3244 应用指导
  • 【LeetCode热题100】哈希
  • Java的四种循环语句
  • Qt杂记目录
  • 项目开发--基于docker实现模型容器化服务
  • C语言 | Leetcode C语言题解之第477题汉明距离总和
  • Bug剖析
  • HI3516DV500 相机部分架构初探
  • 训练yolo系列出现问题mAP, R, P等为零
  • 数字媒体技术基础:色度子采样(4:4:4、4:2:2 、4:2:0)
  • tkinter库的应用小示例:文本编辑器
  • 信息抽取数据集处理——RAMS