crc循环冗余检验
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,则判定这个帧没有出错。
---------------------
作者:午饭要阳光
来源:CSDN
原文:https://blog.csdn.net/lf_2016/article/details/58276536
crc循环冗余检验的更多相关文章
- 循环冗余检验 (CRC) 算法原理
Cyclic Redundancy Check循环冗余检验,是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误. 算法原理 假设数据传输过程中需要发送15位的二进制信息g=10100 ...
- C#,Java,C -循环冗余检验:CRC-16-CCITT查表法
C#代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...
- 数据链路层差错检测之循环冗余检验CRC
引用https://blog.csdn.net/wenqiang1208/article/details/71641414 为什么引入CRC 现实的通信链路都不会是理想的.这就是说,比特在传输的过程中 ...
- 循环冗余检验算法CRC
http://blog.csdn.net/liyuanbhu/article/details/7882789 首先要了解多项式乘法,除法 了解模2运算的含义,多项式除法后合并同类项时..系数%2处理 ...
- Redis源代码分析(23)--- CRC循环冗余算法RAND随机数的算法
他今天就开始学习Redis源代码的一些工具来实现,在任何一种语言工具.算法实现的原理应该是相同的,一些比較经典的算法.比方说我今天看的Crc循环冗余校验算法和rand随机数产生算法. CRC算法全称循 ...
- CRC循环冗余检测C语言实现----花了几天时间乱写的
由于笔者目前正在上计算机网络的课,老师要我们编一下crc的循环检测过程,所以我想着刚好在学c,那就随便看看写不写的了,首先百度了一下网上资料,基本都是用位移运算符实现的,由于本人懒得去看一下位移运算, ...
- crc循环冗余校验
循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误.它 ...
- 前端学HTTP之网络基础
× 目录 [1]网络 [2]OSI [3]TCP/IP 前面的话 HTTP协议对于前端工程师是非常重要的.我们在浏览网站时,访问的每一个WEB页面都需要使用HTTP协议实现.如果不了解HTTP协议,就 ...
- 从输入URL到页面加载的全过程
前面的话 本文将详细介绍从输入URL到页面加载的全过程 概述 从输入URL到页面加载的主干流程如下: 1.浏览器构建HTTP Request请求 2.网络传输 3.服务器构建HTTP Response ...
随机推荐
- Ex 7_21 在一个流网络中,一条边被称为是临界的...第十三次作业
如果原图中的一条边e(u,v)是临界边,则在求解最大流的过程中这条边的流量将会被占满,即在残量图中只存在反向边e(v,u),不存在正向边e(u,v).但是残量图中并不是所有的只存在反向边的顶点对之间的 ...
- importlib模块
importlib模块 import importlib根据这个字符串来导入这个模块的 a=importlib.import_module('xx.oo')print(a.Person())里面可以传 ...
- GridView的stretchMode属性
stretchMode属性值的作用是设置GridView中的条目以什么缩放模式去填充剩余空间.参数stretchMode 可选值为:none,spacingWidth,columnWidth, spa ...
- Hive学习01-基础常见问题
理论: 什么是hive: 1. Hive旨在实现轻松的数据汇总,即时查询和分析大量数据. 2. 它提供了SQL,使用户可以轻松地进行临时查询,汇总和数据分析. 3. Hive可以使用用户定义函数( ...
- Oracle SQL高级编程——分析函数(窗口函数)全面讲解
Oracle SQL高级编程--分析函数(窗口函数)全面讲解 注:本文来源于:<Oracle SQL高级编程--分析函数(窗口函数)全面讲解> 概述 分析函数是以一定的方法在一个与当前行相 ...
- 关于deepin linux15.6-15.9.1系统播放视频卡顿解决办法
关于deepin linux15.6-15.9.1系统播放视频卡顿解决办法 chrome浏览器 关闭chrome硬件加速模式 设置>高级>使用硬件加速模式 注释:由于视频卡顿是因显卡驱动问 ...
- k倍区间
看大佬的代码看了半天,终于算是懂了 标题: k倍区间 给定一个长度为N的数列,A1, A2, … AN,如果其中一段连续的子序列Ai, Ai+1, … Aj(i <= j)之和是K的倍数,我们就 ...
- 条件为空的sql你们写过么 (我也是醉了碰到了这种需求,当时还真有点o((⊙﹏⊙))o懵逼.jpg)
需求描述:单表,父子关系,有个统一的主键dict_id和一个父级别的parent_id,查询父级别的字典名称,parent_id是空,本渣用的是mybatis奥!!! 废话不多说,直接上代码mappe ...
- stylus入门教程,在webstorm中配置stylus
转载:https://www.cnblogs.com/wenqiangit/p/9717715.html#undefined stylus特点 富于表现力.具有健壮性.功能丰富.动态编码 不需要写 ...
- Centos7上vsftp脚本--> sh vsftp.sh 用户名 密码 --> sh vsftp.sh install
#!/bin/bash #vsftp install . /etc/rc.d/init.d/functions users=/etc/vsftpd/vftpuser.txt login=/etc/vs ...