首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CRC校验算法[通俗易懂]

CRC校验算法[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-08-02 00:48:58
发布于 2022-08-02 00:48:58
4.8K1
举报

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

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.cn/125611.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
知道一组数据和校验码, 能反推出校验算法吗?
知道一组数据和校验码, 能反推出校验算法吗?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
数据链路层的三个基本问题
帧检验序列FCS 刚才最后得到的余数,就是在数据后面添加上的冗余码,称为帧检验序列FCS(Frame Check Sequence)
孙晨c
2020/07/21
6920
数据链路层的三个基本问题
数据链路层之信道:数字通信的桥梁与守护者
广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
Srlua
2024/04/02
2020
数据链路层之信道:数字通信的桥梁与守护者
数据链路层
数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
Java3y
2018/09/14
2.8K1
数据链路层
【计算机网络】第三章·数据链路层 超硬核复习好物,考前必看!!!
广播信道(使用一对多的广播通信方式,过程较复杂,必须使用专用的共享信道协议来协调该信道上连接的主机的数据发送)
用户11162265
2024/06/14
2440
使用点对点信道的数据链路层
在计算机网络通信中,数据链路层起着关键作用。它为直接相连的网络设备之间提供可靠的数据传输服务。本文将系统介绍数据链路层的通信方式、帧封装机制以及如何使用循环冗余检验 (CRC) 实现差错检测,确保无比特差错的传输。
Heaven645
2024/10/14
3342
使用点对点信道的数据链路层
【计算机网络】数据链路层 : 差错控制 ( 检错编码 | 奇偶校验码 | CRC 循环冗余码 )★
奇偶校验码 特点 : 该编码方法 , 只能检查 奇数个 比特错误 , 如果有 偶数个比特错误 , 无法检查出来 , 检错率是
韩曙亮
2023/03/28
3.3K0
【计算机网络】数据链路层 : 差错控制 ( 检错编码 | 奇偶校验码 | CRC 循环冗余码 )★
【计算机网络】学习笔记,第三篇:数据链路层(谢希仁版)
当我们专心研究数据链路层找那个的问题的时候,在许多情况下我们可以只关心在协议栈中水平方向的各数据链路层,于是当主机 H1 向主机 H2 发送数据的时候,我们可以想象数据就是在数据链路层中从左向右沿着水平方法传送的
BWH_Steven
2020/11/10
1.6K0
【计算机网络】学习笔记,第三篇:数据链路层(谢希仁版)
CRC校验的FPGA实现
CRC定义 CRC(Cyclic Redundancy Check),循环冗余校验,其特征是信息字段和校验字段的长度可以任意选定,CRC编码格式是在k位有效数据之后添加r位校验码,形成总长度为n(K+R)位的CRC码。
根究FPGA
2020/06/30
3.8K0
CRC校验的FPGA实现
CRC校验算法详解及代码实现[通俗易懂]
异或,就是不同为1,相同为0,运算符号是^。 0^0 = 0 0^1 = 1 1^1 = 0 1^0 = 1
全栈程序员站长
2022/08/01
13.3K0
CRC校验算法详解及代码实现[通俗易懂]
3.3 差错控制
概括地说,传输中的差错都是由于噪声引起的。噪声有两大类:一类是信道中所固定的、持续存在的随机热噪声;另一类是由于外界特定个的短暂原因所造成的冲击噪声。前者可以通过提高信噪比来减少或避免干扰,而后者不可能靠提高信号幅度来避免干扰造成的差错,是产生差错的重要原因。
week
2018/08/24
6620
计算机网络(三)—— 数据链路层
为了使数据链路层能更好地适应多种局域网标准,802委员会就将局域网的数据链路层拆成两个子层
繁依Fanyi
2023/05/07
1.8K0
计算机网络(三)—— 数据链路层
CRC码计算及校验原理的最通俗诠释
在上一篇发布了我的最新著作《深入理解计算机网络》一书的原始目录(http://blog.csdn.net/lycb_gz/article/details/8199839),得到了许多读者朋友的高度关注和肯定,本篇接着发一篇关于CRC码校验原理和CRC码计算方面的通俗诠释的试读文章。本书将于12月底出版上市,敬请留意!!
全栈程序员站长
2022/11/16
1.6K0
CRC码计算及校验原理的最通俗诠释
【计算机网络】数据链路层 : 总结 ( 封装成帧 | 流量控制与可靠传输 | 差错控制 | 介质访问控制 | 局域网 | 广域网 | 数据链路层设备 ) ★★★
① 可靠性服务 : “数据链路层” 在 物理层 提供的服务的基础上 , 提供可靠性服务 ;
韩曙亮
2023/03/28
3.4K0
【计算机网络】数据链路层 : 总结 ( 封装成帧 | 流量控制与可靠传输 | 差错控制 | 介质访问控制 | 局域网 | 广域网 | 数据链路层设备 ) ★★★
计算机网络学习--数据链路层
第一章 概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层
shimeath
2020/08/01
7690
CRC校验码
CRC简介: 循环冗余校验码(CRC),简称循环码,是一种常用的、具有检错、纠错能力的校验码,在早期的通信中运用广泛。循环冗余校验码常用于外存储器和计算机同步通信的数据校验。奇偶校验码和海明校验码都是采用奇偶检测为手段检错和纠错的(奇偶校验码不具有纠错能力),而循环冗余校验则是通过某种数学运算来建立数据位和校验位的约定关系的。
GeekLiHua
2025/01/21
2870
CRC校验码
计算机网络:差错控制
比特在传输过程中可能会产生差错,1可能会变成0,0也可能会变成1,这就是比特差错。比特差错是传输差错中的一种。
timerring
2022/11/16
1K0
计算机网络:差错控制
计算机网络(谢希仁第八版)第三章:数据链路层
本章最重要的内容: (1)数据链路层的==点对点信道==和==广播信道==的特点,以及这两种信道所使用的协议(==PPP协议==以及==CSMA/CD协议==)的特点。 (2)数据链路层的三个基本问题:==封装成帧、透明传输和差错检测==。 (3)以太网==MAC层的硬件地址==。 (4)适配器、转发器、集线器、网桥、以太网交换机的作用以及使用场合。 (5)数据链路的两层:
roydonGuo
2022/11/02
1.9K0
计算机网络(谢希仁第八版)第三章:数据链路层
计算机和网络(三) 数据链路层
封装成帧就是在一段数据的前后分别添加首部和尾部,然后就构成一个帧。首部和尾部的作用是进行帧定界。(首部是用来确定帧的数据部分是从哪里开始的,而尾部是用来确定数据部分什么时候结束)
赤蓝紫
2023/01/02
1K0
计算机和网络(三) 数据链路层
【愚公系列】软考高级-架构设计师 005-校验码
计算机中的校验码(Check Code 或 Error-Detecting Code)是用于检测数据在存储或传输过程中是否发生错误的一种机制。校验码通过在数据中添加额外的信息来实现,这些信息可以在数据接收端被用来检查数据是否完整、正确。校验码的使用非常广泛,包括内存校验、网络通信、数据存储等多个领域。
愚公搬代码
2024/05/09
3450
数据链路层的三个基本问题
当PPP使用异步传输时,我们使用0x7D(01111101)作为转义符,转义的规则如下:
一个风轻云淡
2024/02/02
6000
推荐阅读
相关推荐
数据链路层的三个基本问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档