Linux日常——CRC校验
来源:互联网 发布:淘宝全球购假货 编辑:程序博客网 时间:2024/06/07 01:39
CRC
即循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。
循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
比特在传输过程中可能产生差错:1可能会变成0,0可能变成1,这叫比特差错。它是传输差错中的一种。
误码率:传输错误的比特占所传输比特总数的比率。
所以为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检验措施。
校验原理:
在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式P(x)。根据P(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。
任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。
校验码的具体生成过程为:
在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设要发送的信息用多项式C(X)表示,将C(x)左移R位(可表示成C(x)*2R),这样C(x)的右边就会空出R位,这就是校验码的位置。用 C(x)*2R 除以生成多项式G(x)得到的余数就是校验码。
下面是一个检验的具体实例:
CRC运算就是在数据M后添加供差错检验的n为冗余码
在数据端,将数据划分为组,假设每组K 个比特。现在传输数据M
M=101001 , K = 6
生成多项式假设为:P(X)=X^3+x^2+X^0
以下为n位冗余码的计算方法:
补多项式最高次幂个0:101001000
多项式生成除数P: 1101
X^3+x^2+0+X^0
1 1 0 1
二进制模2运算:
得到冗余码为:001
所以最后发送出的帧为:101001001
在接收端把收到的数据以帧为但单位进行CRC检验,把收到的每一个帧都除以同样的除数P(模2运算),然后检查得到的余数R。
R=0,传输中无差错,接受
R!=0,出现差错,丢弃
- Linux日常——CRC校验
- Linux ——CRC校验
- Linux网络基础——CRC校验
- Linux——CRC校验运算的介绍
- Linux/CRC校验
- linux之CRC校验
- linux CRC校验
- [Linux]CRC校验
- 【Linux】详解CRC校验
- Linux CRC校验
- 【Linux】CRC校验
- C#代码——CRC-16校验
- 网络基础 — CRC校验的认识以及校验原理
- 校验编码的原理(奇偶校验,海明校验,CRC校验)——数学分析
- CRC校验——某ATS协议悖论讨论
- STM32F4学习笔记11——CRC循环冗余校验
- 数据链路层MAC帧校验——CRC
- Linux--ARP协议与CRC校验
- 【TGB官网】图片上传实现
- 神经网络基础:七种网络单元,四种层连接方式
- python学习日记(9)
- 超级简单的下载今日头条和西瓜视频的方法
- 实体完整性、参照完整性、完全函数依赖、部分函数依赖
- Linux日常——CRC校验
- 贪心算法
- CRC校验
- bzoj 4925: 城市规划 差分
- 欢迎使用CSDN-markdown编辑器
- 打开PyCharm失败,提示:cannot lock system folders -- internal error please report to http://jb.gg/ide...
- php实现商品栏目分页的逻辑思路
- 深度学习工具1.2 CUDA安装
- Java中this关键字