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