CRC校验算法[通俗易懂]

CRC(CyclicRedundancyCheck):循环冗余检验。在链路层被广泛使用的检错技术。CRC原理:1、发送端1.1、在发送端先将数据分组,每组k个数据。假定要传送的数据是M。1.2、在数据M后面添加供差错检测的n位冗余码,然后构成一帧发送出去,一共发送(k+n)位。虽然添加n位冗余码增大了数据传送的开销,但是可以进行差错检测,当传输可能出现差错时,付出这种代价是值

大家好,又见面了,我是你们的朋友全栈君。

CRC(Cyclic Redundancy Check):循环冗余检验。在链路层被广泛使用的检错技术。
CRC原理:
1、发送端
1.1、在发送端先将数据分组,每组k个数据。假定要传送的数据是M。
1.2、在数据M后面添加供差错检测的n位冗余码,然后构成一帧发送出去,一共发送(k+n)位。
虽然添加n位冗余码增大了数据传送的开销,但是可以进行差错检测,当传输可能出现差错时,付出这种代价是值得的。

1.3、冗余码可以用下面的方法得出:
3.1、用二进制模2运算进行2^n*M(相当于M左移n位)的运算。意思就是在M后面补n个0。现在M就变成了k+n位。
1.3.2、用M除以收发双方事先商定的长度为n+1的除数P。
1.3.3、得到的余数R,这个R就是FCS(帧检验序列)。将这个FCS序列加到M上然后发出去。

2、接受端
2.1、在接受端把接受到的数据以帧为单位进行CRC校验
2.2、把收到的每一个帧都除以同样的除数P,然后检查余数R。
2.3、如果余数R为0,如果在传输过程中没有差错。
2.4、如果出现误码,那么余数R为零的概率是非常小的。

总结:在接收端对接收到的每一帧进行CRC检验后,若余数R为,则表示这个帧没有错,就接受。若R不为0,则判定这个帧出错,就丢弃。

例:M=101001,P=1101,n=3。
在发送端:
1、M=(2^n*M);
则:M=101001000
2、用M除以P
这里写图片描述
3、得到余数R也就是FCS,将FCS加到M上,就得到了要发送的帧。
M=101001000+FCS=101001001

在接收端:
接收到的每一帧都要进行差错检验,假设收到101001001,P=1101。
这里写图片描述
最后余数R=0,则判定这个帧没有出错。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125611.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • React项目的国际化

     最近做的react项目需要支持国际化,网上查了一下,发现一款很好的插件“react-intl-universal”,由阿里巴巴团队开发,这款插件是原先的国际化插件“react-intl”的升级版,“react-intl”因为一些“致命”缺陷现已被其取代,npm官网有罗列原因,有兴趣的可以去了解一下。下面具体介绍一下这款插件的使用方法。1.安装npminstallreact-i…

    2022年4月12日
    43
  • 基于SwipeRefreshLayout的上拉加载控件

    基于SwipeRefreshLayout的上拉加载控件距离上一篇博客,居然已经过了大半年的时间,时间过得真快啊!CSDN最近大改版,各种用户体验也是被无数人吐槽,让人提不起任何写博客的兴趣,不过,该写的博客还是必须得写,话不多话,直接进入正题。现在项目中用列表来展示数据比比皆是,ListView和RecyclerView大家也是耳熟能详。实际项目中,后台肯定的接口肯定都是分页的,那么,分页加载也是自然而然的事,下面基于Google原生的下拉刷新控

    2022年6月25日
    26
  • srvctl start_局部视图的配置规定是

    srvctl start_局部视图的配置规定是SRVCTL概述SRVCTL是ORACLERAC集群配置管理的工具,可以管理Database、Instance、ASM、Service、Listener和NodeApplication,NodeApplication包括GSD,ONS,VIP。srvctl的命令格式为srvctl<command><target>[options]srvctlUs…

    2025年10月31日
    3
  • 图像处理-激光测距技术&工业相机基本原理概述「建议收藏」

    图像处理-激光测距技术&工业相机基本原理概述「建议收藏」激光测距技术与一般光学测距技术相比,具有操作方便、系统简单及白天和夜晚都可以工作的优点.与雷达测距相比,激光测距具有良好的抗干扰性和很高的精度,而且激光具有良好的抵抗电磁波干扰的能力,尤其在探测距离较长时,激光测距的优越性更为明显.激光测距技术是指利用射向目标的激光脉冲或连续波激光束测量目标距离的距离测量技术.比较常用的激光测距方法有脉冲法、相位法、三角法和干涉法激光测距.本文主要探讨下激光三角法的基本原理和工业相机原理:1.1激光三角法的基本原理光电技术的快速发展,以及计算.

    2022年5月30日
    40
  • Qt 之图形(QPainter 的基本绘图)「建议收藏」

    Qt 之图形(QPainter 的基本绘图)「建议收藏」Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice和QPaintEngine这三个类。-QPainter用于执行绘图操作,其提供的API在GUI或QImage、QOpenGLPaintDevice、QWidget和QPaintDevice显示图形(线、形状、渐变等)、文本和图像。

    2025年8月2日
    4
  • SVM参数详解[通俗易懂]

    SVM参数详解[通俗易懂]svm参数说明———————-如果你要输出类的概率,一定要有-b参数svm-traintraining_set_filemodel_filesvm-predicttest_filemodel_fileoutput_file自动脚本:pythoneasy.pytrain_datatest_data自动选择最优参数,自动

    2022年6月15日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号