|
CRC檢驗(yàn)算法:
用途:
一幀bit數(shù)據(jù)在網(wǎng)絡(luò)中傳輸?shù)臅r(shí)候,可能會(huì)因?yàn)榫W(wǎng)絡(luò)中的某些錯(cuò)誤導(dǎo)致傳輸?shù)臄?shù)據(jù)異常(bit位0變1,1變0),這個(gè)時(shí)候就需要在發(fā)送端與接收端制定某種校驗(yàn)數(shù)據(jù)的規(guī)則,來(lái)檢驗(yàn)接收到的數(shù)據(jù)和發(fā)送的端是一致的,而這個(gè)校驗(yàn)規(guī)則就是我們需要制定的校驗(yàn)算法,CRC就是其中一種,能檢測(cè)多位數(shù)據(jù)的校驗(yàn)算法
概念:
1. 首先,發(fā)送端和接收端都統(tǒng)一規(guī)定某一個(gè)除數(shù)(如:1101或者多項(xiàng)式表示為 x3 + x2 + 1)
2. 發(fā)送的m位數(shù)據(jù) + n位CRC校驗(yàn)碼 == 最終發(fā)出的數(shù)據(jù) ---》》 發(fā)向網(wǎng)絡(luò)
3. 接收端 《《== 接收到數(shù)據(jù)從網(wǎng)絡(luò)中,將數(shù)據(jù)除以上面約定統(tǒng)一的除數(shù),如果能夠整除,就說(shuō)明傳輸正確,失敗就說(shuō)明接收的數(shù)據(jù)有誤,需要重傳了;(這里的除法不是數(shù)學(xué)當(dāng)中的除法,是多項(xiàng)式除法,具體請(qǐng)看下面的例子,涉及的除法均是多項(xiàng)式除法)
疑問:看了上面的三個(gè)步驟,你一定還在疑惑CRC碼如何得來(lái)的,我告訴你CRC碼就是CRC算法最終的輸出結(jié)果,我們要求取的就是CRC碼:
例子 -- 計(jì)算CRC碼:
1. 假設(shè)我們需要發(fā)送的原始數(shù)據(jù)為10110011,而我們的發(fā)送端和接收端統(tǒng)一的除數(shù)是 x4 + x3 + 1 = 11001,CRC算法規(guī)定,原始數(shù)據(jù)尾巴附加上(除數(shù)個(gè)數(shù) - 1個(gè)0 )后,
才能讓我們規(guī)定的除數(shù)去除,第一步除法就是
圖片是盜用的哈:
2. 從上面看余數(shù)應(yīng)該是100,但是CRC算法規(guī)定,CRC碼必須只比除數(shù)少一位數(shù),于是就給余數(shù)前面加一個(gè)0變成 0 1 0 0,而這個(gè)余數(shù)就是CRC碼,原始數(shù)據(jù)加上CRC碼就組成了我們最終發(fā)出去的數(shù)據(jù):101100110100
3. 最后,在接收端,接收到的數(shù)據(jù)后除以規(guī)定的除數(shù),能整除就OK了,CRC也計(jì)算完了。CRC檢驗(yàn)算法:
用途:
一幀bit數(shù)據(jù)在網(wǎng)絡(luò)中傳輸?shù)臅r(shí)候,可能會(huì)因?yàn)榫W(wǎng)絡(luò)中的某些錯(cuò)誤導(dǎo)致傳輸?shù)臄?shù)據(jù)異常(bit位0變1,1變0),這個(gè)時(shí)候就需要在發(fā)送端與接收端制定某種校驗(yàn)數(shù)據(jù)的規(guī)則,來(lái)檢驗(yàn)接收到的數(shù)據(jù)和發(fā)送的端是一致的,而這個(gè)校驗(yàn)規(guī)則就是我們需要制定的校驗(yàn)算法,CRC就是其中一種,能檢測(cè)多位數(shù)據(jù)的校驗(yàn)算法
概念:
1. 首先,發(fā)送端和接收端都統(tǒng)一規(guī)定某一個(gè)除數(shù)(如:1101或者多項(xiàng)式表示為 x3 + x2 + 1)
2. 發(fā)送的m位數(shù)據(jù) + n位CRC校驗(yàn)碼 == 最終發(fā)出的數(shù)據(jù) ---》》 發(fā)向網(wǎng)絡(luò)
3. 接收端 《《== 接收到數(shù)據(jù)從網(wǎng)絡(luò)中,將數(shù)據(jù)除以上面約定統(tǒng)一的除數(shù),如果能夠整除,就說(shuō)明傳輸正確,失敗就說(shuō)明接收的數(shù)據(jù)有誤,需要重傳了;(這里的除法不是數(shù)學(xué)當(dāng)中的除法,是多項(xiàng)式除法,具體請(qǐng)看下面的例子,涉及的除法均是多項(xiàng)式除法)
疑問:看了上面的三個(gè)步驟,你一定還在疑惑CRC碼如何得來(lái)的,我告訴你CRC碼就是CRC算法最終的輸出結(jié)果,我們要求取的就是CRC碼:
例子 -- 計(jì)算CRC碼:
1. 假設(shè)我們需要發(fā)送的原始數(shù)據(jù)為10110011,而我們的發(fā)送端和接收端統(tǒng)一的除數(shù)是 x4 + x3 + 1 = 11001,CRC算法規(guī)定,原始數(shù)據(jù)尾巴附加上(除數(shù)個(gè)數(shù) - 1個(gè)0 )后,
才能讓我們規(guī)定的除數(shù)去除,第一步除法就是
圖片是盜用的哈:
2. 從上面看余數(shù)應(yīng)該是100,但是CRC算法規(guī)定,CRC碼必須只比除數(shù)少一位數(shù),于是就給余數(shù)前面加一個(gè)0變成 0 1 0 0,而這個(gè)余數(shù)就是CRC碼,原始數(shù)據(jù)加上CRC碼就組成了我們最終發(fā)出去的數(shù)據(jù):101100110100
3. 最后,在接收端,接收到的數(shù)據(jù)后除以規(guī)定的除數(shù),能整除就OK了,CRC也計(jì)算完了。 |
|