📜  CRC和FCS有什么区别?

📅  最后修改于: 2022-05-13 01:57:01.337000             🧑  作者: Mango

CRC和FCS有什么区别?

循环冗余校验 (CRC):循环冗余校验通常被称为错误检测机制,因为特殊数字附加有数据块,以便检测到的更改与存储中引入的任何更改有关。
它是一种更复杂的算法,源自简单的 CHECKSUM、MODULO ARITHMETIC,因为它是多项式的一组系数,所以在每个输入字上都对其进行处理。
CRC 通常用于数字网络和存储设备中,以检测原始数据的意外变化。如果 CRC 生成器为 n 位,则 CRC 为 (n-1) 位。

CRC工作条件:

启用 CRC 的设备为要发送或存储的每个数据块计算一个短的、固定长度的二进制序列,称为校验值或 CRC,并将其附加到数据中,形成一个代码字。如果 CRC 值不匹配,则该块包含数据错误。

CRC工作

例子:

问题:构造CRC报文,令除数为1101,数据为1011011。

解决方案:由于除数的长度是 4,我们必须在单词末尾添加 4-1=3 个零。
给定数据为 1011011 且 CRC 位为 000 ,即 1011011000 {data + CRC received)

发送方:

发送方

因此,CRC 001 被添加到消息 1011011 中。
发送的消息是 1011011001

接收方:

接收端

上面的例子,说明发送方将数据无误地发送给接收方,接收方接收到正确的数据。
假设如果接收方收到一个损坏的数据包,则提醒在接收方不会为零。

帧校验序列:FCS(帧校验序列)是在协议中添加到帧的错误检测代码。帧用于将有效负载数据从源发送到目标,也就是说,此帧用于将数据从源发送到目标的应用程序。

  • FCS 是唯一提供错误检测和恢复的设备。它在协议的各种不同方式上执行。
  • 通常,当接收器能够计算出整个帧的运行总和以及预期会看到固定结果的大多数尾随 FCS 时,通常会发送 FCS。
  • 以帧校验序列 (FCS) 结尾的帧有助于检测 32 位循环冗余校验数据的传输中损坏。

例子:

问题– 考虑一条 1011 0001 1011 位和 110101 的除数的消息,然后找到帧校验序列 (FCS)?

解决方案– 如果除数是 n 位,我们在消息末尾附加 n-1 位。这里,除数是 6 位,所以在消息末尾附加 5 个零并执行 XOR 操作。
给定的模式序列或除数是 110101

FCS 中的位 = 模式序列的位数 - 1
                  = 6-1
= 5 位。

考虑给定的数据是 101100011011

填充 5 个零,因为 FCS 位为 5。

要找出 FCS 代码,请通过执行 XOR 操作应用循环冗余校验方法。

注意-在 FCS 中,当 MSB 位为零时,我们插入与除数相同长度的零位序列并执行XOR 操作。

FCS 示例

因此帧校验序列为1 0 0 0 0 。其余部分给出 FCS 代码。

传输序列为message+FCS Code
因此,传输的序列为 101100011011 10000

CRC和FCS之间的区别

 CRCFCS
1.The full form of CRC is a Cyclic Redundancy Check.The full form of FCS is Frame Check Sequence.
2.CRC is not restricted to networking, it is used by a number of technologies.FCS is specific to Ethernet framing.
3.CRC is a checksum type that uses a specific algorithm for checking computation or transmission integrity.FCS is the method of using algorithms to check frames.
4.It is an error detection mechanism.It provides error detection and recovery.
5.CRC Error indicates when data is corrupted.FCS errors indicate when frames of data are corrupted during transmission.
6.In CRC the data may be corrupted.The data is not corrupted in the middle.