計算機網路原理的計算題(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
B. 計算機網路CRC檢驗中為什麼選擇16或32位效驗碼,效率最高
循環冗餘校驗(CRC)是一種根據網路數據封包或電腦檔案等數據產生少數固定位數的一種散列函數,主要用來檢測或校驗數據傳輸或者保存後可能出現的錯誤。生成的數字在傳輸或者儲存之前計算出來並且附加到數據後面,然後接收方進行檢驗確定數據是否發生變化。一般來說,循環冗餘校驗的值都是32位的整數。由於本函數易於用二進制的電腦硬體使用、容易進行數學分析並且尤其善於檢測傳輸通道干擾引起的錯誤,因此獲得廣泛應用。它是由W.WesleyPeterson在他1961年發表的論文中披露[1]。{{noteTA|T=zh-hans:循環冗餘校驗;zh-hant:循環冗餘校驗;|1=zh-hans:循環冗餘校驗;zh-hant:循環冗餘校驗;}}'''循環冗餘校驗'''(CRC)是一種根據網路數據封包或[[電腦檔案]]等數據產生少數固定位數的一種[[散列函數]],主要用來檢測或校驗數據傳輸或者保存後可能出現的錯誤。生成的數字在傳輸或者儲存之前計算出來並且附加到數據後面,然後接收方進行檢驗確定數據是否發生變化。一般來說,循環冗餘校驗的值都是32位的整數。由於本函數易於用二進制的[[電腦硬體]]使用、容易進行數學分析並且尤其善於檢測傳輸通道干擾引起的錯誤,因此獲得廣泛應用。它是由[[W.WesleyPeterson]]在他1961年發表的論文中披露{{citejournal|author=Peterson,W.W.andBrown,D.T.|year=1961|month=January|title=CyclicCodesforErrorDetection|journal=ProceedingsoftheIRE|doi=10.1109/JRPROC.1961.287814|issn=0096-8390|volume=49|pages=228}}。==簡介==CRC「校驗和」是兩個位元數據流採用二進制除法(沒有進位,使用XOR異或來代替減法)相除所得到的余數。其中被除數是需要計算校驗和的信息數據流的二進製表示;除數是一個長度為n+1的預定義(短)的二進制數,通常用多項式的系數來表示。在做除法之前,要在信息數據之後先加上n個0.CRCa是基於[[有限域]]GF(2)([[同餘|關於2同餘]])的[[多項式環]]。簡單的來說,就是所有系數都為0或1(又叫做二進制)的多項式系數的集合,並且集合對於所有的代數操作都是封閉的。例如::(x^3+x)+(x+1)=x^3+2x+1\equivx^3+12會變成0,因為對系數的加法都會模2.乘法也是類似的::(x^2+x)(x+1)=x^3+2x^2+x\equivx^3+x我們同樣可以對多項式作除法並且得到商和余數。例如,如果我們用''x''3+''x''2+''x''除以''x''+1。我們會得到::\frac{(x^3+x^2+x)}{(x+1)}=(x^2+1)-\frac{1}{(x+1)}也就是說,:(x^3+x^2+x)=(x^2+1)(x+1)-1這里除法得到了商''x''2+1和余數-1,因為是奇數所以最後一位是1。字元串中的每一位其實就對應了這樣類型的多項式的系數。為了得到CRC,我們首先將其乘以x^{n},這里n是一個固定多項式的[[多項式的階|階]]數,然後再將其除以這個固定的多項式,余數的系數就是CRC。在上面的等式中,x^2+x+1表示了本來的信息位是111,x+1是所謂的'''鑰匙''',而余數1(也就是x^0)就是CRC.key的最高次為1,所以我們將原來的信息乘上x^1來得到x^3+x^2+x,也可視為原來的信息位補1個零成為1110。一般來說,其形式為::M(x)\cdotx^{n}=Q(x)\cdotK(x)+R(x)這里M(x)是原始的信息多項式。K(x)是n階的「鑰匙」多項式。M(x)\cdotx^{n}表示了將原始信息後面加上n個0。R(x)是余數多項式,既是CRC「校驗和」。在通訊中,發送者在原始的信息數據M後加上n位的R(替換本來附加的0)再發送。接收者收到M和R後,檢查M(x)\cdotx^{n}-R(x)是否能被K(x)整除。如果是,那麼接收者認為該信息是正確的。值得注意的是M(x)\cdotx^{n}-R(x)就是發送者所想要發送的數據。這個串又叫做''codeword''.CRCs經常被叫做「[[校驗和]]」,但是這樣的說法嚴格來說並不是准確的,因為技術上來說,校驗「和」是通過加法來計算的,而不是CRC這里的除法。「[[錯誤糾正編碼]]」常常和CRCs緊密相關,其語序糾正在傳輸過程中所產生的錯誤。這些編碼方式常常和數學原理緊密相關。==實現====變體==CRC有幾種不同的變體*shiftRegister可以逆向使用,這樣就需要檢測最低位的值,每次向右移動一位。這就要求polynomial生成逆向的數據位結果。''實際上這是最常用的一個變體。''*可以先將數據最高位讀到移位寄存器,也可以先讀最低位。在通訊協議中,為了保留CRC的[[突發錯誤]]檢測特性,通常按照[[物理層]]發送數據位的方式計算CRC。*為了檢查CRC,需要在全部的碼字上進行CRC計算,而不是僅僅計算消息的CRC並把它與CRC比較。如果結果是0,那麼就通過這項檢查。這是因為碼字M(x)\cdotx^{n}-R(x)=Q(x)\cdotK(x)可以被K(x)整除。*移位寄存器可以初始化成1而不是0。同樣,在用演算法處理之前,消息的最初n個數據位要取反。這是因為未經修改的CRC無法區分只有起始0的個數不同的兩條消息。而經過這樣的取反過程,CRC就可以正確地分辨這些消息了。*CRC在附加到消息數據流的時候可以進行取反。這樣,CRC的檢查可以用直接的方法計算消息的CRC、取反、然後與消息數據流中的CRC比較這個過程來完成,也可以通過計算全部的消息來完成。在後一種方法中,正確消息的結果不再是0,而是\sum_{i=n}^{2n-1}x^{i}除以K(x)得到的結果。這個結果叫作核驗多項式C(x),它的十六進製表示也叫作[[幻數]]。按照慣例,使用CRC-32多項式以及CRC-16-CCITT多項式時通常都要取反。CRC-32的核驗多項式是C(x)=x^{31}+x^{30}+x^{26}+x^{25}+x^{24}+x^{18}+x^{15}+x^{14}+x^{12}+x^{11}+x^{10}+x^8+x^6+x^5+x^4+x^3+x+1。==錯誤檢測能力==CRC的錯誤檢測能力依賴於關鍵多項式的階次以及所使用的特定關鍵多項式。''誤碼多項式''E(x)是接收到的消息碼字與正確消息碼字的''異或''結果。當且僅當誤碼多項式能夠被CRC多項式整除的時候CRC演算法無法檢查到錯誤。*由於CRC的計算基於除法,任何多項式都無法檢測出一組全為零的數據出現的錯誤或者前面丟失的零。但是,可以根據CRC的[[#變體|變體]]來解決這個問題。*所有隻有一個數據位的錯誤都可以被至少有兩個非零系數的任意多項式檢測到。誤碼多項式是x^k,並且x^k只能被i\lek的多項式x^i整除。*CRC可以檢測出所有間隔距離小於[[多項式階次]]的雙位錯誤,在這種情況下的誤碼多項式是E(x)=x^i+x^k=x^k\cdot(x^{i-k}+1),\;i>k。如上所述,x^k不能被CRC多項式整除,它得到一個x^{i-k}+1項。根據定義,滿足多項式整除x^{i-k}+1的{i-k}最小值就是多項是的階次。最高階次的多項式是[[本原多項式]],帶有二進制系數的n階多項式==CRC多項式規范==下面的表格略去了「初始值」、「反射值」以及「最終異或值」。*對於一些復雜的校驗和來說這些十六進制數值是很重要的,如CRC-32以及CRC-64。通常小於CRC-16的CRC不需要使用這些值。*通常可以通過改變這些值來得到各自不同的校驗和,但是校驗和演算法機制並沒有變化。CRC標准化問題*由於CRC-12有三種常用的形式,所以CRC-12的定義會有歧義*在應用的CRC-8的兩種形式都有數學上的缺陷。*據稱CRC-16與CRC-32至少有10種形式,但沒有一種在數學上是最優的。*同樣大小的CCITTCRC與ITUCRC不同,這個機構在不同時期定義了不同的校驗和。==常用CRC(按照ITU-IEEE規范)=={|class="wikitable"!名稱||多項式||表示法:正常或者翻轉|-|CRC-1||x+1(用途:硬體,也稱為[[奇偶校驗位]])||0x1or0x1(0x1)|-|CRC-5-CCITT||x^{5}+x^{3}+x+1([[ITU]]G.704標准)||0x15(0x??)|-|CRC-5-USB||x^{5}+x^{2}+1(用途:[[USB]]信令包)||0x05or0x14(0x9)|-|CRC-7||x^{7}+x^{3}+1(用途:通信系統)||0x09or0x48(0x11)|-|CRC-8-ATM||x^8+x^2+x+1(用途:ATMHEC)||0x07or0xE0(0xC1)|-|CRC-8-[[CCITT]]||x^8+x^7+x^3+x^2+1(用途:[[1-Wire]][[匯流排]])|||-|CRC-8-[[Dallas_Semiconctor|Dallas]]/[[Maxim_IC|Maxim]]||x^8+x^5+x^4+1(用途:[[1-Wire]][[bus]])||0x31or0x8C|-|CRC-8||x^8+x^7+x^6+x^4+x^2+1||0xEA(0x??)|-|CRC-10||x10+x9+x5+x4+x+1||0x233(0x????)|-|CRC-12||x^{12}+x^{11}+x^3+x^2+x+1(用途:通信系統)||0x80For0xF01(0xE03)|-|CRC-16-Fletcher||參見[[Fletcher'schecksum]]||用於[[Adler-32]]A&BCRC|-|CRC-16-CCITT||''x''16+''x''12+''x''5+1([[X25]],[[V.41]],[[Bluetooth]],[[PPP]],[[IrDA]])||0x1021or0x8408(0x0811)|-|CRC-16-[[IBM]]||''x''16+''x''15+''x''2+1||0x8005or0xA001(0x4003)|-|CRC-16-[[BBS]]||x16+x15+x10+x3(用途:[[XMODEM]]協議)||0x8408(0x????)|-|CRC-32-Adler||See[[Adler-32]]||參見[[Adler-32]]|-|CRC-32-MPEG2||See[[IEEE802.3]]||參見[[IEEE802.3]]|-|CRC-32-[[IEEE802.3]]||x^{32}+x^{26}+x^{23}+x^{22}+x^{16}+x^{12}+x^{11}+x^{10}+x^8+x^7+x^5+x^4+x^2+x+1||0x04C11DB7or0xEDB88320(0xDB710641)|-|CRC-32C(Castagnoli)||x^{32}+x^{28}+x^{27}+x^{26}+x^{25}+x^{23}+x^{22}+x^{20}+x^{19}+x^{18}+x^{14}+x^{13}+x^{11}+x^{10}+x^9+x^8+x^6+1||0x1EDC6F41or0x82F63B78(0x05EC76F1)|-|CRC-64-ISO||x^{64}+x^4+x^3+x+1(use:ISO3309)||(0xB000000000000001)|-|CRC-64-[[EcmaInternational|ECMA]]-182||x^{64}+x^{62}+x^{57}+x^{55}+x^{54}+x^{53}+x^{52}+x^{47}+x^{46}+x^{45}+x^{40}+x^{39}+x^{38}+x^{37}+x^{35}+x^{33}+x^{32}+x^{31}+x^{29}+x^{27}+x^{24}+x^{23}+x^{22}+x^{21}+x^{19}+x^{17}+x^{13}+x^{12}+x^{10}+x^9+x^7+x^4+x+1(asdescribedin[CRC16toCRC64collisionresearch]*[index.htm#SAR-PR-2006-05ReversingCRC–TheoryandPractice.]{{math-stub}}[[Category:校驗和演算法]][[bg:CRC]][[ca:Controlderendànciacíclica]][[cs:Cyklickýrendantnísoučet]][[de:ZyklischeRendanzprüfung]][[en:Cyclicrendancycheck]][[es:Controlderendanciacíclica]][[eu:CRC]][[fi:CRC]][[fr:Contrôlederedondancecyclique]][[he:בדיקתיתירותמחזורית]][[id:CRC]][[it:Cyclicrendancycheck]][[ja:巡迴冗長検査]][[ko:순환중복검사]][[nl:CyclicRendancyCheck]][[pl:CRC]][[pt:CRC]][[ru:Циклическийизбыточныйкод]][[simple:Cyclicrendancycheck]][[sk:Kontrolacyklickýmkódom]][[sv:CyclicRendancyCheck]][[vi:CRC]]
C. crc怎麼樣
還可以。循環冗餘校驗(Cyclic Rendancy Check, CRC)是一種根據網路數據包或計算機文件等數據產生簡短固定位數校驗碼的一種信道編碼技術,主要用來檢測或校驗數據傳輸或者保存後可能出現的錯誤。它是利用除法及余數的原理來作錯誤偵測的。
在計算機網路通信中運用CRC校驗時相對於其他校驗方法就有一定的優勢。CRC可以高比例的糾正信息傳輸過程中的錯誤,可以在極短的時間內完成數據校驗碼的計算,並迅速完成糾錯過程,通過數據包自動重發的方式使得計算機的通信速度大幅提高,對通信效率和安全提供了保障。
由於 CRC 演算法檢驗的檢錯能力極強,且檢測成本較低,因此在對於編碼器和電路的檢測中使用較為廣泛。從檢錯的正確率與速度、成本等方面,都比奇偶校驗等校驗方式具有優勢。因而,CRC 成為計算機信息通信領域最為普遍的校驗方式。
D. 計算機網路原理中求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的時候可能會很難懂,看看代碼很不錯的
E. 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
F. 在計算機網路中什麼是crc校驗和,怎麼計算
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)*2R),這樣C(x)的右邊就會空出R位,這就是校驗碼的位置。用 C(x)*2R 除以生成多項式G(x)得到的余數就是校驗碼。
謝謝 希望能幫助到你
G. CRC是什麼意思
循環冗餘校驗(Cyclic Rendancy Check, CRC)是一種根據網路數據包或計算機文件等數據產生簡短固定位數校驗碼的一種信道編碼技術,主要用來檢測或校驗數戚衫擾據傳輸或者保存後可能出現的錯誤。它是利用除法及余數的原理來作錯誤偵測的。
循環冗餘校驗同其他差錯檢測方式一樣,通過在要傳輸的k比特數據D後添加(n-k)比特冗餘位(又稱幀檢驗序列,Frame Check Sequence,FCS)F形成n比特的傳輸幀T,再將其發送出去。
(7)計算機網路中的crc效驗擴展閱讀
在數據傳輸過程中,無論傳輸系統的設高旦計再怎麼完美,差錯總會存在,這種差錯可能會導致在鏈路上傳輸的一個或者多個幀被破壞,從而接受方接收到錯誤的數據。
為盡量提高接受方收到數據的正確率,在接收方接收數據之前需要對數據進行差錯檢測,當且僅當檢測的結果為正塌答確時接收方才真正收下數據。
檢測的方式有多種,常見的有奇偶校驗、網際網路校驗和循環冗餘校驗等。循環冗餘校驗是一種用於校驗通信鏈路上數字傳輸准確性的計算方法。
參考資料來源:網路-CRC