网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

帧中的CRC如何判断数据是否完整呢?

更新时间:2026年03月27日   作者:spoto   标签(Tag):

在数字信号中,由于传输线路中的噪声,错误是不可避免的。因此,发送方发送的数据会发生变化,可能与发送时的原始数据不一致。假设发送方向接收方发送了“hi”这样的消息。将其转换为二进制形式后,结果为01101000 01101001。现在,假设由于某种噪声的影响,有3位二进制位发生了翻转,导致数据变成了01101011 01101101。那么,接收方接收到的数据就变成了“km”,从而改变了整个信息内容。

那么,接收者如何知道他接收到的数据中存在一些错误呢?这里就需要错误控制机制来发挥作用了。

错误控制:

这是一种检测并纠正数据帧中因传输线路中的噪声而导致的错误的过程。这些错误会导致数据被损坏或丢失。

错误控制可以分为以下几个部分:错误检测以及错误修正各种错误检测技术包括奇偶校验、循环冗余校验(CRC)、纵向冗余校验(LRC)以及校验和等。错误校正可以通过两种方式进行。前向错误纠正以及逆向错误修正其中包括汉明码、二进制卷积码、里德-所罗门码以及低密度奇偶校验码,这些都被视为主要的纠错编码方式。

循环冗余校验(CRC)

这是一种非常常用的错误检测方法,用于识别数字数据中的错误。这些错误可能是由于传输通道中的噪声所导致的比特位的偶然变化而产生的。

它能够检测单比特错误、长度为n的连续错误(即所选CRC多项式的阶数所允许的错误类型),同时还能检测奇数个错误,前提是所选多项式能够被(x+1)整除。生成的多项式被用作错误检测的工具。该多项式在发送方和接收方双方都存在。

以下是所遵循的步骤:

附加到有效载荷中的冗余位:

  • 发送方希望发送的数据为10101011。假设生成的多项式为x4+x2+1。那么,该数据帧中的总比特数将是(m+n),其中m表示有效数据的长度,n则表示附加在有效数据上的冗余比特的数量。因此,可以称其为“……”冗余/重复这样做会有助于减少CRC错误,因为被附加的位实际上并不提供任何有用的信息。术语“周期性之所以使用这种方法,是因为它基于一种循环实现的系统来进行操作(即涉及模运算)。冗余位的长度则由所生成的多项式的阶数来决定。
    在我们的例子中,结果将是4。之后会进行模2二进制除法操作,其中除数包含的比于冗余位数的数量正好多1位。该值实际上就是多项式中各个变量的系数。
  • 二进制除法中的模2运算其操作过程与普通的除法相同,唯一的区别在于,我们采用的是 XOR 运算,而不是减法运算。
 
  • 剩下的二进制分割结果,会替换掉之前被添加到有效载荷中的、长度为n的0序列。最终,有效的载荷加上那些多余的位,会被发送给接收方。

传输给接收方的数据:

检查接收端是否存在潜在的错误:

  • 在接收到数据之后,系统会进行模2二进制除法操作。因此,接收方必须事先拥有与发送方相同的多项式。除法的余数可能为零,也可能不为零。如果余数为零,则接收方认为数据无误,从而接受该数据;而如果余数为非零,那么接收方会要求发送方重新发送数据,因为他认为数据中可能存在错误。
 

因此,CRC能够判断数据在发送时是否完好无损,或者是否存在一些错误。

CRC之所以如此受欢迎,主要是因为以下几个原因:

  • 能够检测单比特错误、突发错误以及奇数个的错误情况。
  • 在二进制硬件中实现起来非常简单。
  • 只需进行简单的数学分析,然后快速检查即可。
  • 这种技术被广泛用于检查模拟传输中的数据完整性。

缺点:

  • 可能会出现数据溢出的情况。
  • 对于数据被故意攻击的情况,几乎没有任何保护措施可言。
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料