自学内容网 自学内容网

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

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


前言

在计算机网络通信中,数据链路层起着关键作用。它为直接相连的网络设备之间提供可靠的数据传输服务。本文将系统介绍数据链路层的通信方式、帧封装机制以及如何使用循环冗余检验 (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 检验,能够实现无比特差错的传输,但这还不是可靠传输。
  • 要实现可靠传输,还必须再加上帧编号、确认和重传等机制。

原文地址:https://blog.csdn.net/2302_80253507/article/details/142892244

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!