前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用点对点信道的数据链路层

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

原创
作者头像
Heaven645
发布2024-10-14 00:28:31
1342
发布2024-10-14 00:28:31

前言

在计算机网络通信中,数据链路层起着关键作用。它为直接相连的网络设备之间提供可靠的数据传输服务。本文将系统介绍数据链路层的通信方式、帧封装机制以及如何使用循环冗余检验 (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) 位冗余码,构成帧并发送。
  1. 计算步骤
    • 对数据 (M) 进行模 2 运算,将其扩展为 (k + n) 位。
    • 用事先选定的多项式 (P)(长度为 (n + 1) 位)对扩展后的数据进行除法,得到商 (Q) 和余数 (R)。
    • 将余数 (R)(长度为 (n) 位)作为冗余码附加到原数据 (M) 后,一起发送。

③帧检验序列 (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 检验,能够实现无比特差错的传输,但这还不是可靠传输。
  • 要实现可靠传输,还必须再加上帧编号、确认和重传等机制。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1 通信信道类型
  • 2 数据链路
  • 3 帧
  • 4 透明传输
  • 5 差错检测
相关产品与服务
数据传输服务
腾讯云数据传输服务(Data Transfer Service,DTS)可帮助用户在业务不停服的前提下轻松完成数据库迁移上云,利用实时同步通道轻松构建高可用的数据库多活架构,通过数据订阅来满足商业数据挖掘、业务异步解耦等场景需求。同时,DTS 还提供私有化独立输出版本 DTS-DBbridge,支持异构数据库和同构数据库之间迁移和同步,可以帮助企业实现完整数据库迁移(如 Oracle)。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档