① 计算机网络crc算法。
发送的数据是原数据+余数
接受端收到数据后除以多项式,有余数说明数据在传输的时候改变(如果数据改变了碰巧余数还为0,那只能说明运气太差了。。)
② 计算机网络原理中求CRC校验码。
01100。算法你可以用手算,或者用代码计算,代码分按位和按字节。手算算法是:多项式为101101你在信息的后面补5个0信息码变为1101101100000这时开始用多项式对上面的信息码进行异或操作,要打的话很麻烦。我只把没一次运算的结果写一下1:011011(注意,前面一位已经为零,这时,要在此数后面补一个数,也就是说,现在已经对8为信息码操作了一位)移位以后变为110111。(此时的首位又为1,再与多项式异或,下面的类似)2:0110103:0110004:0111015:0101116:000011 注意此时的信息码已经被操作了5次了,就是说还有3位没有操作,这时把这个数左移3位就好了,因为他的前3位都为零,所以最后的crc码为01100整个要发送的数据为11011011+01100中间算的可能有错误,开始看crc的时候可能会很难懂,看看代码很不错的
③ 计算机网络的题,CRC-16标准规定的生成多项式是G(x)=x16+x15+x2+1(数字为平方
校验码位数就是最高次幂16吧
④ 关于计算机网络的crc计算
我们知道,一台主机向另外一台主机发送报文的时候,需要一层层经过自己的协议栈进行数据封装,到达最后一层(四层协议的网络接口层)时需要在帧尾部添加FCS校验码(通过CRC算法得出)。当对端主机收到时,在接收端同样通过CRC算法进行验证,确认传输过程中是否出现错误。它只能确认一个帧是否存在比特差错,但没有提供解决措施。
循环冗余校验的原理
在发送端,先把数据划分为组(即:一帧)。假定每组 k 个比特。
在每组后面,添加供差错检测用的 n 位冗余码一起发送。即:实际发送长度为:k+n 比特。
发送前双方协商n+1位的除数P,方便接收方收到后校验。
给K比特的数据添加除数减一个0(P-1)作为被除数,与第三步确定的除数做“模2除法”。得出的余数即FCS校验序列,它的位数也必须是(P-1)。
将FCS校验序列添加至K个比特位的后面发送出去。
接收方对接收到的每一帧进行校验,若得出的余数 R = 0,则判定这个帧没有差错,就接受(accept)。若余数 R ≠ 0,则判定这个帧有差错,就丢弃。
对“模2除法”进行说明:
“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。相当于二进制中的逻辑异或运算。
计算示例
那么接收方拿到的就是:101001001。再以它为被除数,1101为除数进行“模2除法”。
⑤ crc 计算机网络
2017年12月29日,星期五,
兄弟,我先给你简单再捋一遍CRC编码的概念和计算公式,原理明白了,以后不管碰到什么样的题,你都会迎刃而解了。
首先,需要知道如下几个概念,
CRC编码,就是你题目中所说的“待发字串”,它是经加工后带有CRC校验的待发送信息,
CRC校验码,就是你题目中所说的“CRC循环冗余码”,以下都简称为CRC校验码,它是通过CRC规则计算得来,
多项式,即真实信息,就是未经CRC编码规则处理的原始的信息,就是你题目中说的“已知信息码”,原始的真实信息有两种表现形式,以本题为例,
a、原始信息的 二进制字串(形式):1000100101,
b、原始信息的 多项式(形式):X^9+X^5+X^2+1,
X^9+X^5+X^2+1多项式,就是由原始信息的二进制形式1000100101得来的,多项式中每一个因数都对应二进制形式 1000100101 中值为1的那一位,X^9 X^5 X^2就是2^9+2^5+2^2,那表示二进制数的权位,
1000100101
1*2^90*2^80*2^70*2^6 1*2^5 0*2^4 0*2^3 1*2^2 0*2^11*2^0
2^0=1...2^9=1 000 000 000,凡是二进制字串中值为1的权位都出现在了多项式中,例如,二进制字串最高位(左1)的1,就是2^9,所以它出现在了多项式中,形状为X^9,而二进制数串中值为0的权位都没有出现在多项式中,可以数一下,二进制数串中有4个1,所以对应的多项式中有4个因子:X^9、X^5、X^2、1,其中多项式的最后一个因子1,其实就是X^0,而我们都知道,任何数的0次幂都是1(0除外),可以看出,这两种形式是等价的,即1000100101=X^9+X^5+X^2+1,当我们再遇到多项式时,就是去数原始信息(1000100101)中的1,然后把它的值为1的权位放到一起,写成式子(X^9+X^5+X^2+1),两者意义是一样的,从二进制形式能推导出多项式,也可以从多项式推导出二进制形式,
生成多项式,就是你题目中提到的“G(x)=X^5+X^4+X^2+1”,生成多项式也可以写成二进制形式,X^5+X^4+X^2+1其对应的二进制形式:110101,
通常,我们为了方便说明问题将生成多项式叫做:G(x),这里请注意,需要将
“生成多项式”和“多项式”进行区分,G(x)中的G就是generator polynomial,生成多项式的意思,
多项式:指的是原始信息1000100101中所有权位为1的权位写在一起的形式X^9+X^5+X^2+1
生成多项式:是人为指定的多项式,由编码人指定的东西,本例被人为指定成X^5+X^4+X^2+1即 110101 ,这个生成多项式是人为指定的,不是固定的,个人理解你指定成X^5+X^3+X^2+1也行,制定成X^5+X^4+X^3+X^2+1也行,
好了,接下来,我们要说最关键的CRC的定义和计算过程了,
CRC的定义:
多项式*2^(G(x)的最高次幂指数,你给的图片题目中G(x)的最高次幂指数是5)/G(x)=CRC校验码;
用文字表达,就是原始数据信息乘以,2的 【生成多项式中最高幂指数】 次幂,乘2的多少次幂,就是在右边加几个0,比如乘以2^2,就是在右边加2个零,因为是二进制数,所以乘几个2就是加几个零,和十进制数乘几个10就是加几个零道理一样,然后再去除以生成多项式,请注意,这里的除,不是数学中的除法,而是指计算机中的模二除运算,实际上就是逻辑异或运算,说白了,就是将除数和被除数高位,进行左对齐后,相同为0,不同为1,然后一直除下去,直到得到最后的余数为止,这个余数就是我们需要的CRC校验码,而且这个最后得到的余数,取几位由生成多项式中最高幂指数决定,最高幂指数是5就取5位,最高幂指数是6就取6位,最高幂指数是4就取4位,是根据生成多项式的最高次幂来定取几位的.本例中,最高次幂是5,所以,最后的余数是5位二进制数,
X^5+X^4+X^2+1写成二进制就是: 110101
你的图片题目中,G(x)=X^5+X^4+X^2+1,也就是生成多项式是110101,
结合本题,我们来做一遍,原始数据:1000100101,生成多项式:110101,根据上面的规则有,
1000100101*2^5=1000100101 00000
把原始值右边加上5个零:1000100101 00000之后,去除以生成多项式:110101
1000100101 00000
110101
----------------------------
0101110101 00000
左对齐,并开始按位异或,得0101110101 00000,
进行第二次除运算:
101110101 00000
110101
--------------------------
011011101 00000
左对齐,再按位异或,得到011011101 00000
开始第三次除运算:
11011101 00000
110101
--------------------
00001001 00000
左对齐,再按位异或,得到00001001 00000
进行第四次除运算:
100100000
110101
-----------------
010001000
左对齐,再异或,得到010001000
进行第五次除运算:
10001000
110101
------------
01011100
左对齐,再异或,得到01011100
进行第六次除运算:
1011100
110101
-------------
0110110
左对齐,再异或,得到0110110
进行第七次,最后一次除运算:
110110
110101
------------
000011
最终余数为000011,而由G(x)的最高次幂X^5的幂指数决定了,CRC校验码取5位,因此,最终得到的CRC校验码为:00011,
多项式*2^(G(x)的最高次幂指数,本例中G(x)的最高次幂指数是5)+G(x)=最终在物理线路上传送的CRC编码待发字串,
用文字表达就是,原始数据乘以,2的 【生成多项式中最高幂指数】 次幂,然后再加上生成多项式,最终得到要在线路中传送的CRC编码待发字串,
接着,以本例进行余下的计算,原始数据:1000100101,CRC校验码(CRC循环冗余码)为:00011,
根据上面的定义,有:
1000100101*2^5=1000100101 00000,
1000100101 00000
+ 00011
----------------------
100010010100011
所以最终的“待发字串”CRC编码为:100010010100011
⑥ 求教计算机网络中相关于CRC校验的模2除法
模2加与模2减两种运算与逻辑异或运算其运算法则完全相同,另外,模2乘除法都以模2加减法为基础,因此我们可以把模2运算看作简单的异或运算。实际上,CRC除法器就是由异或门以及时序电路构成的。
模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。所以实际上就是异或。然后再移位移位做下一位的模2减。步骤如下:
a、用除数对被除数最高几位做模2减,没有借位。
b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。
c、一直做到余数的位数小于除数时,该余数就是最终余数。
⑦ 计算机网络CRC码问题
由于多项式是4阶,所以在信息码后面加上四个0,然后除以多项式地11001,得到地结果是10001
所以说crc码就是110101110001
最后地数据码是不对地
⑧ 计算机网络试题: 设有一个(7,3)码,其生成多项式为g(x)=X4+X3+X2++1,当传输信息为101时,求CRC码字。
101先用转换到GF(2)上的多项式,就是s(x)=x2+1
在用生成多项式去对信息进行编码:
g(x)*s(x)=x6+x5+x3+1,注意这是有限域GF(2)上的多项式运算,系数要模2才行
所以码字是:1101001
⑨ 在计算机网络中什么是crc校验和,怎么计算
计算机网络原理的计算题(crc校验和数据传输问题)第1题:设要发送的二进制数据为10110011,若采用crc校验方法,生成多项式为x^4+x^3+1,度求出实际发送的二进制数字序列。(要求写出计算
计算机网络原理的计算题(crc校验和数据传输问题)
第1题:设要发送的二进制数据为10110011,若采用crc校验方法,生成多项式为x^4+x^3+1,度求出实际发送的二进制数字序列。(要求写出计算过程)
这是自考08年四月份的试题,我总是跟答案算的不一样。
答案是:待发送的序列m=10110011,除数p=11001,m*2^5与除数p进行模2除法运算,得余数r=1000,所以要发送的二进制序列为:101100111000
我不明白为什么m要乘以2的5次方,我是用101100110000除以11001得到的余数是100。
第2题:一条长度为100km的点对点链路,对于一个100字节的分组,带宽为多大时传播延迟等于发送延迟?(信道传输速度为2*10^8m/s)
答案是:
传播延迟为:100km/(2*10^8m/s)=50ms
发送延迟等于传播延迟时:100/c=50ms
则信道传输速率:c=200kbps
⑩ 计算机网络原理的计算题(CRC校验和数据传输问题)
第一题:进行模2除法时被除数错了,应该是M*2^4,不是M*2^5,因为多项式是4阶的,在M后面添4个0