Ⅰ 計算機網路原理中求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的時候可能會很難懂,看看代碼很不錯的
Ⅱ 計算機網路中差錯控制方法
一、總的方法折疊:
1、前向糾錯。實時性好,單工通信採用。
2、自動重發請求(ARQ)。強調檢錯能力,不要求有糾錯能力,雙向通道採用。
3、混合糾錯。上述兩種方式的綜合,但傳輸設備相對復雜。
二、分類方法折疊:
1、差錯檢測是差錯控制的基礎。能糾錯的碼首先應具有差錯檢測能力,而只有在能夠判定接收到的信號是否出錯才談得上是否要求對方重發出錯消息。具有差錯檢測能力的碼不一定具有差錯糾正能力。由於差錯檢測並不能提高信道利用率,所以主要應用於傳輸條件較好的信道上做為誤碼統計和質量控制的手段。
2、自動請示重發ARQ和前向糾錯FEC是進行差錯控制的兩種方法。
一在ARQ方式中,接收端檢測出有差錯時,就設法通知發送端重發,直到正確的碼字收到為止。ARQ方式使用檢錯碼,但必須有雙向信道才可能將差錯信息反饋到發送端。同時,發送方要設置數據緩沖區,用以存放已發出的數據以便於重發出錯的數據。
二在FEC方式中,接收端不但能發現差錯,而且能確定二進制碼元發生錯誤的位置,從而加以糾正。FEC方式使用糾錯碼,不需要反向信道來傳遞請示重發的信息,發送端也不需要存放以務重發的數據緩沖區。但編碼效率低,糾錯設備也比較復雜。
3、差錯控制編碼又可分為檢錯碼和糾錯碼。
檢錯碼只能檢查出傳輸中出現的差錯,發送方只有重傳數據才能糾正差錯;而糾錯碼不僅能檢查出差錯而且能自動糾正差錯,避免了重傳。
4、演播的檢錯碼有:奇偶校驗碼、循環冗餘碼。
在實際通信網中,往往在不同的應用場合採用不同的差錯控制技術。前向糾錯主要用於信道質量較差、對傳輸時延要求較嚴格的有線和無線傳輸當中;差錯檢測往往用於傳輸質量較高或進行了前向糾錯後的通路的監測管理之中>自動請求重發則多用於象計算機通信等對時延要求不高但對數據可靠性要求非常高的文件傳輸之中。
Ⅲ 計算機網路中循環冗餘檢驗的解釋
教科書定義:循環冗餘校驗碼CRC是一種循環碼,它有很強的檢錯能力,而且容易用硬體實現,在區域網中有廣泛應用。
簡單的說下它的實現:用移位寄存器實現,移位寄存器由k位組成,還有幾個異或門和一條反饋迴路。移位寄存器可以按CCITT-CRC標准生成16位的校驗和。寄存器被初始化為0,數據字從右向左逐位輸入。當一位從最左邊移除寄存器時就從右邊輸入完後再輸入k個0。最後,當這一過程結束時,移位寄存器中就形成了校驗和。k位的校驗和跟在數據位後邊發送,接收端可以按同樣的過程計算校驗和並與接收到的校驗和比較,以檢測傳輸中的差錯。
具體實現和數學分析建議你參考網路http://ke..com/view/575295.htm
Ⅳ 1.簡述計算機網路的主要功能 2.什麼是奇偶校驗有何特點如果採用奇校驗,數據「01000011」的校驗位
主要功能:數據通信,資源共享,負載均衡與分布處理。
奇偶校驗:是一種通過增加冗餘位使得碼字中「1」的個數恆為奇數或偶數的校驗方法。
特點:是一種檢錯法,且查錯能力只能是一位,無糾錯能力(因為它不能指出出錯的是哪一位)。
採用奇校驗,數據「01000011」中「1」的個數為3,是奇數,故校驗位為0(就是該數據中的最高位)
Ⅳ 計算機網路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]]
Ⅵ 在計算機網路中什麼是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)得到的余數就是校驗碼。
謝謝 希望能幫助到你
Ⅶ 在計算機網路的數據通信中廣泛使用的校驗方式是 (15) 。
記得好象是循環冗餘校驗,不太確定。
Ⅷ 求教計算機網路中相關於CRC校驗的模2除法
模2加與模2減兩種運算與邏輯異或運算其運演算法則完全相同,另外,模2乘除法都以模2加減法為基礎,因此我們可以把模2運算看作簡單的異或運算。實際上,CRC除法器就是由異或門以及時序電路構成的。
模2除做法與算術除法類似,但每一位除(減)的結果不影響其它位,即不向上一位借位。所以實際上就是異或。然後再移位移位做下一位的模2減。步驟如下:
a、用除數對被除數最高幾位做模2減,沒有借位。
b、除數右移一位,若余數最高位為1,商為1,並對余數做模2減。若余數最高位為0,商為0,除數繼續右移一位。
c、一直做到余數的位數小於除數時,該余數就是最終余數。