1. 程式人生 > 其它 >【計網】CRC迴圈冗餘檢驗

【計網】CRC迴圈冗餘檢驗

目錄

CRC迴圈冗餘檢驗

概念

校驗(資料通訊領域)

在傳輸的資料的過程中,對傳輸前的資料和傳輸後的資料進行一致性判斷的過程叫做校驗.

比如在要求錄屏的線上比賽來說,可以對視訊進行md5加密來生成md5碼,並將本地生成的md5傳送給主辦方,主辦方再將接收到的視訊再進行一次md5加密,通過比對傳送過來的md5和接收到的md5碼的比對來判斷視訊是否在中途發生過改變,是否為同一部.

常用的校驗方法

奇偶校驗

奇偶校驗分兩種,一種為奇校驗,一種為偶校驗.

會在傳輸過去的01串後面增加一位奇偶校驗位來使得01串中1的個數滿足預設的奇偶性.

如原資料為0001 1010,共有3個1,若採用奇數校驗,則在01串的後面新增一個0,為0001 1010 0,這樣1的個數還是3個,還是奇數.若採用偶校驗,則在01串的後面新增一個1.變為0001 1010 1,共有4個1,為偶數.

注意的是,將01串偶數個位置進行反轉,是仍被判定為正常,同時每一個要傳輸的資料後面都要增添一位校驗位,會對傳輸速率產生一定的影響.

但不可否認的是,奇偶校驗是簡單的,易於在硬體直接進行實現的,因而,可在一定程度上緩解軟體的壓力.

累加和校驗

通過對資料包的一段要傳輸的資料進行累加,並對這個資料包生成一個累加資料,作為資料包是否相同的判斷依據.

我們要傳輸的資訊為: 7、13、4

加上校驗和後的資料包:7、13、4、24

CRC 校驗演算法

CRC(和奇偶校驗都)是存在於資料鏈路層用來傳輸檢驗的一個工具.

CRC是將傳輸的資料當做一個位數很長的數,用它來除以另一個數,將生成的餘數作為這段要傳輸過去的資料的校驗資料.

CRC的大致流程:

已知要進行處理的數x和一個用來作為除數且位數為dig的數y
(注意CRC演算法中的除法是取消進位的模二除法,實際上可以看成是取消進位了的模二減法,更進一步可以看成異或運算).

  1. 首先對數x進行一個修正,在x後面新增dig-1個0,並將其生成的x'除去y得到餘數m,

    並將x'末尾dig-1個數修正為m,得到x''(這樣的話,x''必然會被y整除).

  2. 將x''傳送給接收方.

  3. 接收方將x''除去y,看是否為0,如果為0,則證明發送時和接收到的時候基本是同一個數字,若不為0,則必然證明發送過程中存在問題.

參考

部落格園_sinferwu

B站_嘟嘟嘿呦嘿