Ⅰ 求解,计算机网络技术基础详细过程!
1. 在CRC校验中。已知生成多项式是G(x)=x4+x3+1。要求写出信息1011001的CRC校验码。 解:
生成多项式G(x)=11001,为5位,校验余数取4位,按模2除法计算过程如下:
1101010 11001 10110010000
11001 11110
11001 011110 11001 011100 11001 1010 余数R(x)= 1010
CRC校验码=1011001 1010
2. 双方采用CRC循环校验码进行通信,已知生成多项式为x4+x3+x+1,接收到码字为10111010011。判断该信息有无错误。 解:
依题意,生成多项式G(x)=11011,如果信息正确,则模2除法余数应为0
1100101 11011 10111010011 11011 11000
11011 11100 11011 11111 11011 100 结果余数R(x)= 100不为零所以结果有错。
在一个带宽为 3KHZ、没有噪声的信道,能够达到的码元速率极限值为6kbps 码元速率是信道传输数据能力的极限,奈奎斯特(Nyquist)首先给出了无噪声情况下码元速率的极限值与信道带宽的关系:B=2H (Baud)其中,H是信道的带宽,也称频率范围,即信道能传输的上、下限频率的差值。由此可以推出表征信道数据传输能力的奈奎斯特公式:C=2•H•log2N (bps)对于特定的信道,其码元速率不可能超过信道带宽的2倍,但若能提高每个码元可能取的离散值的个数,则数据传输速率便可成倍提高。例如,普通电话线路的带宽约为3kHz,则其码元速率的极限值为6kBaud。若每个码元可能取得离散值的个数为32(即N=32),则最大数据传输速率可达C=2*3k*log2 32=30kbps。
实际的信道总要受到各种噪声的干扰,香农(Shannon)则进一步研究了受随机噪声干扰的信道的情况,给出了计算信道容量的香农公式: C=H*log2(1+S/N) (bps)其中,S表示信号功率,N为噪声功率,由此可见,只要提高信道的信噪比,便可提高信道的最大数据传输速率
希望能帮到你
Ⅱ crc是什么意思
CRC(Cyclic Rendancy Check),即循环冗余校核,是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法,主要用来检测或校核数据传输或者保存后可能出现的错误。CRC利用除法及余数的原理,实现错误侦测的功能,具有原理清晰、实现简单等优点。
CRC也就是循环冗余校验码,是计算机网络通信领域常用的校验码。循环冗余校验码包括一系列移位、相除等数据编码规则,其算法原理、算法程序的设计与分析,都可以通过相应的软件编码进行解决。
循环冗余校验码是利用软件进行校验的算法,因此其检验速度很快,校验的误码率也较低,整个计算机网络通信的信息传输速度很高。CRC差错纠正控制法能够有效减少通信线路的误码率,得到的通信数据传输信息更准确。
在数据的传输过程中由于空间电磁环境复杂等原因,可能会产生误码,即某几位数据0变为1,或1变为0,导致接收端得到错误的数据。为了降低误码率,通常对数据进行特定编码,在收发端进行额外的验证,使接收端能发现某些错误;
进而实现纠错功能,常用的编码方法有CRC-32校验码、CRC-16校验码、汉明码、奇偶校验法等。其中32位循环冗余校验简称CRC-32校验在性能和资源消耗两方面都有较大的优势,因而,在无线电通信、SATA硬盘数据传输等系统中,CRC-32校验是最常用的检错手段之一。
Ⅲ 计算机网络CRC码问题
由于多项式是4阶,所以在信息码后面加上四个0,然后除以多项式地11001,得到地结果是10001
所以说crc码就是110101110001
最后地数据码是不对地
Ⅳ 计算机网络题求解答 谢谢
2017年12月28日,星期四,
兄弟,你这照片上的第一题中多项式的指数看不清呀,
没事,我就现在的情形,给你说一下大概的思路,你参考着,再结合题目中实际的参数,再套一遍就能把题目解出来了,
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)基带冲突检测的载波监听多路访问技术(载波监听多点接入/碰撞检测)。所有的节点共享传输介质。
原理,如下,
1、所有的站点共享唯一的一条数据通道,
2、在一个站点发送数据时,其他的站点都不能发送数据,如果要发送就会产生碰撞,就要重新发送,而且所有站点都要再等待一段随即的时间,
3、对于每一个站而言,一旦它检测到有冲突,它就放弃它当前的传送任务。换句话说,如果两个站都检测到信道是空闲的,并且同时开始传送数据,则它们几乎立刻就会检测到有冲突发生。
4、它们不应该再继续传送它们的帧,因为这样只会产生垃圾而已;相反一旦检测到冲突之后,它们应该立即停止传送数据。快速地终止被损坏的帧可以节省时间和带宽。
5、它的工作原理是: 发送数据前 先侦听信道是否空闲 ,若空闲,则立即发送数据。若信道忙碌,则等待一段时间至信道中的信息传输结束后再发送数据;若在上一段信息发送结束后,同时有两个或两个以上的节点都提出发送请求,则判定为冲突。若侦听到冲突,则立即停止发送数据,等待一段随机时间,再重新尝试。
6、原理简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发。
7、Carrier Sense Multiple Access就是,要发送和发送中都要进行监听,
8、有人将CSMA/CD的工作过程形象的比喻成很多人在一间黑屋子中举行讨论会,参加会议的人都是只能听到其他人的声音。每个人在说话前必须先倾听,只有等会场安静下来后,他才能够发言。人们将发言前监听以确定是否已有人在发言的动作称为"载波监听";将在会场安静的情况下每人都有平等机会讲话成为“多路访问”;如果有两人或两人以上同时说话,大家就无法听清其中任何一人的发言,这种情况称为发生“冲突”。发言人在发言过程中要及时发现是否发生冲突,这个动作称为“冲突检测”。如果发言人发现冲突已经发生,这时他需要停止讲话,然后随机后退延迟,再次重复上述过程,直至讲话成功。如果失败次数太多,他也许就放弃这次发言的想法。通常尝试16次后放弃。
9、核心问题:解决在公共通道上以广播方式传送数据中可能出现的问题(主要是数据碰撞问题)
包含四个处理内容:监听、发送、检测、冲突处理
监听:
通过专门的检测机构,在站点准备发送前先侦听一下总线上是否有数据正在传送(线路是否忙)?
若“忙”则进入后述的“退避”处理程序,进而进一步反复进行侦听工作。
发送:
当确定要发送后,通过发送机构,向总线发送数据。
检测:
数据发送后,也可能发生数据碰撞。因而,要对数据边发送,边检测,以判断是否冲突了。
冲突处理:
当确认发生冲突后,进入冲突处理程序。有两种冲突情况:
① 侦听中发现线路忙
② 发送过程中发现数据碰撞
① 若在侦听中发现线路忙,则等待一个延时后再次侦听,若仍然忙,则继续延迟等待,一直到可以发送为止。每次延时的时间不一致,由退避算法确定延时值。
② 若发送过程中发现数据碰撞,先发送阻塞信息,强化冲突,再进行监听工作,以待下次重新发送
10、
先听后说,边听边说,边说边听;
一旦冲突,立即停说;
等待时机,然后再说;
注:“听”,即监听、检测之意;“说”,即发送数据之意。
11、在发送数据前,先监听总线是否空闲。若总线忙,则不发送。若总线空闲,则把准备好的数据发送到总线上。在发送数据的过程中,工作站边发送边检测总线,是否自己发送的数据有冲突。若无冲突则继续发送直到发完全部数据;若有冲突,则立即停止发送数据,但是要发送一个加强冲突的JAM信号,以便使网络上所有工作站都知道网上发生了冲突,然后,等待一个预定的随机时间,且在总线为空闲时,再重新发送未发完的数据。
12、
CSMA/CD网络上进行传输时,必须按下列五个步骤来进行
(1)传输前监听
(2)如果忙则等待
(3)如果空闲则传输并检测冲突
(4)如果冲突发生,重传前等待
(5)重传或夭折
补充一个重要的知识点:
要使CSMA/CA 正常工作,我们必须要限制帧的长度。如果某次传输发生了碰撞,那么正在发送数据的站必须在发送该帧的最后一比特之前放弃此次传输,因为一旦整个帧都被发送出去,那么该站将不会保留帧的复本,同时也不会继续监视是否发生了碰撞。所以,一旦检测出有冲突,就要立即停止发送,
举例说明,
A站点发送数据给B站点,当A站通过监听确认线路空闲后,开始发送数据给B站点,同时对线路进行监听,即边发送边监听,边监听边发送,直到数据传送完毕,那么如果想要正确发送数据,就需要确定最小帧长度和最小发送间隙(冲突时槽)。
CSMA/CD冲突避免的方法:先听后发、边听边发、随机延迟后重发。一旦发生冲突,必须让每台主机都能检测到。关于最小发送间隙和最小帧长的规定也是为了避免冲突。
考虑如下的情况,主机发送的帧很小,而两台冲突主机相距很远。在主机A发送的帧传输到B的前一刻,B开始发送帧。这样,当A的帧到达B时,B检测到冲突,于是发送冲突信号,假如在B的冲突信号传输到A之前,A的帧已经发送完毕,那么A将检测不到冲突而误认为已发送成功。由于信号传播是有时延的,因此检测冲突也需要一定的时间。这也是为什么必须有个最小帧长的限制。
按照标准,10Mbps以太网采用中继器时,连接的最大长度是2500米,最多经过4个中继器,因此规定对10Mbps以太网一帧的最小发送时间为51.2微秒。这段时间所能传输的数据为512位,因此也称该时间为512位时。这个时间定义为以太网时隙,或冲突时槽。512位=64字节,这就是以太网帧最小64字节的原因。
以上信息的简单理解是:A发送一个帧的信息(大小不限制),B收到此帧,发现有冲突,马上发送包含检测到了冲突的信息给A,这个冲突信息到达A也是需要时间的,所以,要想A成功发送一个帧(并知道这个帧发送的是否成功,冲没冲突)是需要这个帧从A到B,再从B到A,这一个来回的时间,
也就是说,当一个站点决定是否要发送信息之前,一定要先进行线路的检测,那么隔多长时间检测一次合适呢(在没有检测的期间是不进行数据的发送的,因此也就不存在冲突),这就要看, 一个电子信号在这两个站点之间跑一个来回的时间了,试想一下,如果这个信号还没有跑到地方,你就开始检测,显然是浪费检测信号的设备资源,然后,A站点发送一个电子信号给B站点,信号经过一段时间到达了B站点,然后假设B发现了冲突,马上告诉A,那么这个电子信号再跑回A也需要一段时间,如果当这个信号在路上的时候,A就开始检测是不是有冲突,显然是不合适的,因为,B发送的冲突信号还在路上,如果A在这个时间段就检测,一定不会发现有冲突,那么,A就会继续发送信号,但这是错误,因为已经有冲突被检测出来,因此,A这么做是错误的,所以,A要想正确发送一个电子信号给B,并且被B正确接收,就需要,A发送一个电子信号,并等待它跑一个来回的时间那么长,才能确认是没有冲突,然后再继续发送下一个信号,
这个电子信号跑一个来回的时间,是由站点间的距离s、帧在媒体上的传播速度为v(光速)以及网络的传输率为r(bps)共同决定的,
那么,假设电子信号跑一个来回的时间是t,则有如下式子,
t=2s/v;
又有,假设在时间t内可以传送的数据量(最小帧)为L,则有如下式子,
L=t*r;解释:这个就是说,一个电子信号从A跑到B需要t这么长时间,又因为电子信号几乎接近光速,因此,即使在t这么短的时间内,我仍然可以不停的发送很多个电子信号,这样就形成了一串二进制数列在t这个很小的时间段内被从A发送出去,那么我在t这个时间段内究竟能发送出去多少的电子信号,就要看我的传输率r是多少了,因为有这种关系,所以就形成了最小帧的概念,
将 L=t*r 变形为 t=L/r,并将 t=L/r 带入 t2s/v,得到式子:L/r=2s/v,
再将,题目中给出的数据带入上式,得到
2500字节/(1G bps)=2s/200000(Km);将单位统一后,有下式:
(2500*8)/(1024*1024*1024)=2s/200000(Km);继续计算,得:
s=1.86Km,
若1Gbps取值为1000*1000*1000,则s=2Km;
兄弟,我这个利用工作空隙给你写答案,你别着急啊,现在是12:48,第三题,我抓紧时间帮你算。
Ⅳ 计算机网络问题,急,,,
2017年12月13日星期三,
这里需要强调一点,生成多项式(generator polynomial)和多项式不是一个概念,这里需要注意。我个人的理解是你要进行几位的CRC校验,就需要几位的生成多项式(generator polynomial),但还收到生成多项式(generator polynomial)的第一位必须为1的限制,因此生成的多项式还需要注意这一点。原始信息所对应的多项式和生成多项式(generator polynomial)不是一个概念。
首先,我们要知道,任何一串二进制数都可以用一个多项式表示:且这串二进制数的各位对应多项式的各幂次,多项式中假如有此幂次项(比如多项式汇中有幂次项x^2对应二进制串码中从右至左的第三位二进制数一定为1.因为右数第一位的幂次项为x^0,右数第二位的幂次项为x^1),则对应二进制数串码中此位置的1,无此幂次项对应0。
举例:代码1010111对应的多项式为x^6+x^4+x^2+x+1,若我们将缺失的幂次项补全的话就有x^6+(x^5)+x^4+(X^3)+x^2+x+1,又因为x^5和X^3所对应的二进制位为0,不记入多项式中,因此有x^6+x^4+x^2+x+1,就是表示 1010111这个串码。
而多项式为x^5+x^3+x^2+x+1的完整多项式为x^5+(x^4)+x^3+x^2+x+1正好对应二进制串码101111,而x^4对应的二进制串码中右数第五位(左数第二位)为0,不记入多项式中,因此,101111可以使用多项式x^5+x^3+x^2+x+1来表示。
通过上述两个多项式的例子,可以看出,当多项式中的幂次项所对应的那一位二进制为1时,多项式中的那一个幂次项存在,而当二进制串码中的某位为0时,对应的多项式幂次项忽略不记录,例如,10111 1因为从左向右第二位是0,因此对应的多项式分子x^4就没有被记录到多项式中,
书面的说法是:
多项式和二进制数有直接对应关系:X的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:X的最高幂次为R,转换成对应的二进制数有R+1位,
我们现在来看题目中generator plynomial (生成多项式)is X^4+x^2+1,最高幂次是4,因此,其表示的二进制为(4+1=5)5位,
且通过crc的原理,我们知道,循环冗余校验码(CRC)是由两部分组拼接而成的,
第一部分是信息码,
第二部分是校验码,
可得公式:
CRC=信息码+校验码,
很明显校验码是跟在信息码之后的,所以,题目中1101011011中左数的那5位是真正传输的信息(信息码),即actual bit string transmitted(实际传输的信息位流)是11010,而后面的5位(11011)是校验码,
接下来我们结合上面的内容来理解对CRC的定义:
循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设要发送的信息用多项式C(X)表示,将C(x)左移R位(可表示成C(x)*2^R),这样C(x)的右边就会空出R位,这就是校验码的位置。用 C(x)*2^R 除以生成多项式G(x)得到的余数就是校验码。
另一个定义:
利用CRC进行检错的过程可简单描述为:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则,在差错控制理论中称为“生成多项式”。
再看另一个描述,在代数编码理论中,将一个码组表示为一个多项式,码组中各码元当作多项式的系数。例如 1100101 表示为1·x^6+1·x^5+0·x^4+0·x^3+1·x^2+0·x^1+1,即 x^6+x^5+x^2+1。
设,编码前的原始信息多项式为P(x),P(x)的最高幂次加1等于k(这里的K就是整个原始信息的二进制编码的长度,以上例1100101为例,此串二进制编码的最高位对应的多项式幂次为6,根据定义得K=6+1=7,正好是此串二进制编码的长度,);
设,生成多项式为G(x),G(x)的最高幂次等于r,这个r可以随意指定,也就是r可以不等于K,但指定r时,必须满足生成多项式G(x)最高位必须为1的条件,
设,CRC多项式为R(x)。:将P(x)乘以x^r(即对应的二进制码序列左移r位),再除以G(x),所得余式即为R(x)。
设,编码后的带CRC的信息多项式为T(x)。:用公式表示为T(x)=x^r*P(x)+R(x),翻译过来就是,编码后的带CRC校验的多项式由左移了r位的原始信息P(x)后接CRC的校验码R(x)组成,
而在接收端,是使用T(x )去除G(x),若无余数,则表示接收正确。就是接收端使用接收到的信息T(x )去除和发送端约好的生成多项式G(x),若除尽没有余数则表示信息正确接收。
我们再来看本题,
题中给出已传输的信息为:1101011011,即T(x )=1101011011;
而generator polynomial 生成多项式是:x^4+x^2+1,即G(x)=10101;
那么,我们来使用T(x )除以G(x)=110,根据上面的定义,我们知道,出现了没有除尽的情况,有余数,余数为110,则说明信息11010在传递过程出现了错误,而题目中给出,若将此信息串码的左数第三位进行翻转,则接收到的信息为:1111011011,那么,
T(x )=1111011011,
则,再通过T(x )除以G(x)进行校验运算后,得到余数1,没有除尽
即T(x )除以G(x)=1,
所以没有通过CRC校验,此时,接收端能发现这个错误,
但是,如果我们将此串数据的左数第三位和最后一位同时翻转,得到1111011010,那么再经过T(x )除以G(x)的接收端校验后,除尽了,余数为0,则,此时,因为T(x )除以G(x)=0,通过了接收端的校验,因此,接收端并不能发现这个错误,以为是收到了正确的串码:11110,但实际上我们发送的串码是:11010,
最后,我们再来研究一下,T(x )是怎么除G(x)的,实际上我们必须清楚,这里的除法实际上并不是我们传统意义上的十进制除法,而是两个二进制的“按位异或”(请注意每步运算都是先进行高位对齐的。)的算法,在二进制数运算中,这被称为模二除运算,
来看两个例子,
【例一】假设使用的生成多项式是G(X)=X3+X+1。4位的原始报文为1010,求编码后的报文。
解:
1、将生成多项式G(X)=X^3+X+1转换成对应的二进制除数1011。
R=3,R就是生成多项式的最高次幂,
2、此题生成多项式有4位(R+1)(注意:通过对生成多项式计算所得的校验码为3位,因为,生成多项式的R为生成多项式的最高次幂,所以校验码位数是3位),要把原始报文C(X)【这里的C(X)就是1010】左移3(R)位变成1010 000
3、用生成多项式对应的二进制数对左移3位后的原始报文进行模2除(高位对齐),相当于按位异或:
1010000
1011
------------------
0001000, 请注意这里,通过第一次除法,也就是模2除(高位对齐)的运算,将两个二进制代码进行了高位对齐后的按位异或的操作后,得到0001000即1000,接下来,需要进行第二次除法,即使用第一步得到的二进制数1000去除1011【G(x)】,则有下面的式子,
1000
1011
------------------
0011,请注意,结果为0011,也可以写成11,但是我们由上面得知,由生成多项式G(X)=X^3+X+1,已经确定了校验位是3位,因此,
得到的余位011,所以最终编码为:1010 011。
例二:
信息字段代码为: 1011001;对应的原始多项式P(x)=x6+x4+x3+1
假设生成多项式为:g(x)=x4+x3+1;则对应g(x)的代码为: 11001,又因为g(x)最高次幂为4,因此可以确定校验位是4位,
根据CRC给生成多项式g(x)定义的规则,将原始代码整体左移4位,这样在原始数据后面多出4位校验位的位置,即x^4*P(x),得到:10110010000;
接下来使用10110010000去除以g(x),得到最终的余数1010,并与原始信息组成二进制串码:1011001 1010发送出去,
接收方:使用相同的生成多项式进行校验:接收到的字段/生成码(二进制除法)
如果能够除尽,则正确,
给出余数(1010)的计算步骤:
除法没有数学上的含义,而是采用计算机的模二除法,即除数和被除数做异或运算。进行异或运算时除数和被除数最高位对齐,按位异或。
10110010000
^11001
--------------------------
01111010000 ,这里进行第一次按位异或,得到01111010000,即1111010000,将1111010000再去除以11001,如下步骤,
1111010000
^11001
-------------------------
0011110000,进行了第二次模2除后,得到0011110000,即11110000,将
11110000去除11001,
11110000
^11001
--------------------------
00111000,第三次摸2除,得到00111000,即111000,用
111000去除11001,
111000
^11001
-------------------
001010,进行第四次模2除后,得到最终的余数,001010,即1010,
则四位CRC校验码就为:1010。
Ⅵ 计算机网络原理中求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计算
我们知道,一台主机向另外一台主机发送报文的时候,需要一层层经过自己的协议栈进行数据封装,到达最后一层(四层协议的网络接口层)时需要在帧尾部添加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除法时被除数错了,应该是M*2^4,不是M*2^5,因为多项式是4阶的,在M后面添4个0
Ⅹ 计算机网络crc算法。
发送的数据是原数据+余数
接受端收到数据后除以多项式,有余数说明数据在传输的时候改变(如果数据改变了碰巧余数还为0,那只能说明运气太差了。。)