当前位置: 首页 > article >正文

计算机网络之差错控制中的 CRC(循环冗余校验码)

文章目录

  • 1 概述
    • 1.1 简介
    • 1.2 特点
    • 1.3 基本原则
  • 2 实现步骤
  • 3 例题

1 概述

1.1 简介

  • CRC:Cyclic Redundancy Check(循环冗余校验)是计算机网络中常用的一种差错控制编码方法,用于检测数据传输或存储过程中可能出现的错误。

1.2 特点

特点描述
检错能力强检错,但不能 纠错
计算效率高可用硬件快速实现
广泛应用以太网(CRC-32)、磁盘存储、无线通信等

1.3 基本原则

CRC 基于 多项式除法原理

  1. 发送方和接收方预先商定一个生成多项式 G(x)
  2. 发送方在 原始数据后 附加CRC校验码,使整个数据能被 G(x) 整除
  3. 接收方用同样的 G(x) 去除接收到的数据,若 余数为 0 则认为数据正确

2 实现步骤

假设数据信息为 1100,生成多项式为 G(x) = X3 + X + 1,问:CRC校验码 和 CRC编码 分别是多少?

CRC 编码 = CRC 校验码 + CRC 数据

序号步骤描述
1获取【校验码】位数 N对应生成多项式的 最高次方 的数值,如示例 N = 3
2获取【新数据】D新数据 = 原始数据 + 0…0(M 个 0), 如示例 D = 1100 000
3提取生成多项式的【系数】C G ( x ) = X 3 + X + 1 G(x) = X^3 + X + 1 G(x)=X3+X+1
= 1 ∗ X 3 + 0 ∗ X 2 + 1 ∗ X 1 + 1 ∗ X 0 = 1*X^3 + 0*X^2 + 1*X^1 + 1*X^0 =1X3+0X2+1X1+1X0
C = 1 0 1 1
4模 2 除法,取余数,得校验码D 除以 C,进行 模2除法(异或运算:相同为 0,不同为 1),取余数。
余数 就是 CRC 校验码,余数的位数 = N,若余数位不够校验位数,前面补 0

3 例题

【例题1】 在采用CRC校验时,若生成多项式为 G ( X ) = X 5 + X 2 + X + 1 G(X)=X^5+X^2+X+1 GX=X5+X2+X+1,传输数据为1011110010101时,生成的帧检验序列为() 。
A.10101
B.01101
C.00000
D.11100

参考答案:C
① 获取【校验码】位数 N。G(X) 的最高次方为 5,则 N= 5,都满足题意
② 获取【新数据】D。D = 1011110010101 00000
③ 提取生成多项式的【系数】C。C = 100111
④ 步骤 ② 的结果 除以 步骤③ 的结果,取余数。101111 001010 100000 / 101111,余数位
在这里插入图片描述

【例题2】以下关于采用一位奇校验方法的叙述中,正确的是( )。
A.若所有奇数位出错,则可以检测出该错误但无法纠正错误
B.若所有偶数位出错,则可以检测出该错误并加以纠正
C.若有奇数个数据位出错,则可以检测出该错误但无法纠正错误
D.若有偶数个数据位出错,则可以检测出该错误并加以纠正

参考答案:C

【例题3】CRC是链路层常用的检错码,若生成多项式为 X 5 + X 3 + 1 X^5+X^3+1 X5+X3+1,传输数据10101110,得到的CRC校验码是( )。
A.01000
B.01001
C.1001
D.1000

参考答案:A
① 获取【校验码】位数 N。最高项是5,N = 5,排除 C,D
② 获取【新数据】D。D = 1010111000000
③ 提取生成多项式的【系数】C。C = 101001
④ 步骤 ② 除以 步骤 ③(异或运算,余数位不够,前面补 0)。得到 A

http://www.lryc.cn/news/2393091.html

相关文章:

  • 红客 Linux 系统性全解析
  • 【深度学习】7. 深度卷积神经网络架构:从 ILSVRC、LeNet 到 AlexNet、ZFNet、VGGNet,含pytorch代码结构
  • 基于cornerstone3D的dicom影像浏览器 第二十七章 设置vr相机,复位视图
  • 2025年渗透测试面试题总结-匿名[校招]高级安全工程师(代码审计安全评估)(题目+回答)
  • Jenkins实践(7):Publish over SSH功能
  • SQLite 中文写入失败问题总结
  • JavaScript篇:闭包:JavaScript中的魔法口袋,装下你的编程智慧
  • ubuntu系统安装Pyside6报错解决
  • DeepSeek 赋能智能零售:从数据洞察到商业革新
  • 榕壹云医疗服务系统:基于ThinkPHP+MySQL+UniApp的多门店医疗预约小程序解决方案
  • 苏州SAP代理公司排名:工业园区企业推荐的服务商
  • 数据结构中无向图的邻接矩阵详解
  • .NET 7 AOT 使用及 .NET 与 Go 语言互操作详解
  • OpenCV 第7课 图像处理之平滑(一)
  • React 编译器
  • HCIP:MPLS静态LSP的配置及抓包
  • VASP 教程:VASP 结合 Phonopy 计算硅的比热容
  • YOLO使用SAHI进行小目标检测
  • [论文阅读]Prompt Injection attack against LLM-integrated Applications
  • 【SpringCache 提供的一套基于注解的缓存抽象机制】
  • DALI DT6与DALI DT8介绍
  • day13 leetcode-hot100-24(链表3)
  • Python实战:打造高效通讯录管理系统
  • 图解深度学习 - 基于梯度的优化(梯度下降)
  • MySql--定义表存储引擎、字符集和排序规则
  • 【部署】在离线服务器的docker容器下升级dify-import程序
  • 优化版本,增加3D 视觉 查看前面的记录
  • 写作-- 复合句练习
  • WWW22-可解释推荐|用于推荐的神经符号描述性规则学习
  • Linux:shell脚本常用命令