必威体育Betway必威体育官网
当前位置:首页 > IT技术

循环冗余检验CRC原理

时间:2019-06-19 03:42:08来源:IT技术作者:seo实验室小编阅读:105次「手机版」
 

循环冗余检查

为什么引入CRC

现实的通信链路都不会是理想的。这就是说,比特在传输的过程中可能会产生差错:1可能会变成0,0可能会变成1,这就叫做比特差错。在一段是时间内,传输错误的比特占所传输比特总数的比率成为误码率BER(Bit ERROR Rate)。误码率与信噪比有很大的关系,在实际通信中不可能使误码率下降到零。

因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。

目前在数据链路层广泛使用了循环冗余检测CRC的检测技术

CRC的原理

CRC运算实际上就是在数据长为k的后面添加供差错检测用的n位冗余码,然后构成帧k+n位发送出去。

首先来介绍几个概念

(1)模2运算:实际上是按位异或运算,即相同为0,相异为1,也就是不考虑进位、借位的二进制加减运算。如:1111+1010 = 0101

(2)FCS:其实就是冗余码,帧检验序列(Frame Check sequence)

(3)生成多项式:其实就是除数,比如下面将要用到的除数p = 1101

这里写图片描述

计算n位冗余码

现假定待传输的数据M = 101001(k = 6),除数p = 1101 (n = 3)比n多一位

这n位冗余码可以用下面的方法得出。

(1)用二进制的模2运算进行(2^n)乘M的运算,相当于在M后面添加n个0

即M后面添加3个0

(2)现在得到M = 101001000(k+n = 9)位的数除以除数p(n = 3)位,

得到商是Q(不关心),余数R =001(n位)R就是冗余码FCS

现在加上FCS后发送的帧是101001001

这里写图片描述

在接收端把接收到的数据M = 101001001以帧为单位进行CRC检验:把收到的每一个帧都除以相同的除数p(模2运算),然后检查得到的余数R。

如果在传输过程中没有差错,那么经过检验后得到余数R肯定是0。

(读者可以自己检验下,被除数现在是M = 101001001,除数P= 1101,看余数是否为0)

总之,在接收端对接收到的每一个帧经过CRC检验后,有两种情况:

(1)余数R = 0,则判断这个帧没有问题,就接受

(2)余数R != 0,则判断这个帧有差错,就丢弃。

总结一下:

在数据链路层若仅仅使用CRC差错检验技术,则只能做到对帧的无差错接收。

相关阅读

相机标定(Camera calibration)原理、步骤

相机标定(Camera calibration)原理、步骤 author@jason_ql(lql0716) http://blog.csdn.net/lql0716 在图像测量过程以及机器视觉

HandlerThread 的使用及原理

Handy class for starting a new thread that has a looper. The looper can then be used to create handler classes. Note tha

CableModem原理

Cable Modem的一些参数321物理层 下行通道的频率范围为88~860MHz,每个通道的带宽为6MHz(NTSC 6 G-MHz,PAL 8MHz),采用64QAM或2

Huffman Code(霍夫曼编码)原理及实例

假设有如下图的数据:数字表示每个词出现的次数。 我们根据每个词出现的频数,画出如下这样的图。其实就是先从最小的频数出发,比如F,H

刷百度相关搜索和下拉框的技术原理

第一:百度搜索SEO出现的相关搜索:以SEO为核心的相关词-什么是SEO,如何进行SEO以SEO语义相关的相关词-网络推广第二:搜狗搜索SEO出现的

分享到:

栏目导航

推荐阅读

热门阅读