什麼是CRC以及如何生成檢驗

2021-07-31 22:18:04 字數 1818 閱讀 2653

在網路的資訊的傳輸中,現實的通訊鏈路都不會是理想的。這就是說,位元在傳輸過程中可能會產生差錯:1可能變為0,而0也可能變為1.這就是位元差錯。因此,為了保證資料傳輸的可靠性,在計算機網路傳輸資料時,必須採用差錯檢測措施。目前在資料鏈路層廣泛使用了迴圈冗餘檢驗crc的檢錯技術。

crc即

迴圈冗餘校驗碼

(cyclicredundancy check

) :是資料通訊領域中最常用的一種查錯校驗碼,其特

徵是信

息欄位和校驗欄位的長度可以任意選定。迴圈冗餘檢查(crc)是一種資料傳輸檢錯功能,對資料進行多項式計

算,並

將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。

在傳送端,先把資料劃分為組,假定每組k個位元。現假定待傳送資料m=101001(k=6)。crc運算就是在資料

m 的後面新增供差錯檢測的n位冗餘碼,然後構成乙個幀傳送出去,一共傳送(k+n)位。在所要傳送的資料後面增加n

位冗餘碼,雖然增大了資料傳輸的開銷,但卻可以進行差錯檢測。當傳輸可能出現差錯時,付出這種代價往往是值得的。

借助於模2除法則,其餘數為校驗字段。

例如:資訊字段**為: 1011001;對應m(x)=x6+x4+x3+1

假設生成多項式為:g(x)=x4+x3+1;則對應g(x)的**為: 11001

x4m(x)=x10+x8+x7+x4 對應的**記為:10110010000;

採用模2除法則: 得餘數為: 1010(即校驗欄位為:1010)

傳送方:發出的傳輸欄位為: 1 0 1 1 0 0 1 1010

資訊字段 校驗字段

接收方:使用相同的生成碼進行校驗:接收到的字段/生成碼(二進位制除法)

如果能夠除盡,則正確,

給出餘數(1010)的計算步驟:

除法沒有數學上的含義,而是採用計算機的模二除法,即除數和被除數做異或運算。進行異或運算時除數和被除數最高位對齊,按位異或。

10110010000

^11001

--------------------------

01111010000

1111010000

^11001

-------------------------

0011110000

11110000

^11001

--------------------------

00111000

111000

^11001

-------------------

001010

則四位crc校驗碼就為:1010。

利用crc進行檢錯的過程可簡單描述為:在傳送端根據要傳送的k位二進位製碼序列,以一定的規則產生乙個校驗用的r位監督碼(crc碼),附在原始資訊後邊,構成乙個新的二進位製碼序列數共k+r位,然後傳送出去。在接收端,根據資訊碼和crc碼之間所遵循的規則進行檢驗,以確定傳送中是否出錯。這個規則,在差錯控制理論中稱為「生成多項式」。

如何檢驗

在接收端吧接收到的資料以幀為單位進行crc檢驗:把收到的每乙個幀都除以同樣的除數p(模2運算),然後檢查得到的餘數r。

如果在傳輸過程中無差錯,那麼經過crc檢驗得出的餘數r肯定是0。

但如果出現誤碼,那麼餘數r仍等於0的概率是非常非常小的。

需要強調的是,在資料鏈路層若僅僅使用迴圈冗餘檢驗crc差錯檢測技術,則只能做到對幀的無差錯接收,即「凡是接收端資料鏈路層接受的幀,我們都能以非常接近於1的概率認為這些幀在傳輸過程中沒有產生差錯」。接收端丟棄的真雖然曾收到了,但最終還認為因為有差錯被丟棄,即沒有接受。以上所述的可以近似的表述為:凡是接收端資料鏈路層接受的幀均無差錯。

什麼是T檢驗

很多的檢驗和我們的直覺是一致的,前陣子在乙個群裡,有管理學院的人問說想看兩個樣本是不是來自於同乙個分布,我叫他畫兩個cdf,一看就知道。對方說不要看圖,我就讓他用kolmogorov smirnov tests。我自己搜了一下,發現ks.test檢驗的就是拿兩個cdf的距離做為統計量,雖然計算很複雜...

什麼是假設檢驗?

目錄 假設檢驗原理 置信區間 反證法小概率思想 假設檢驗步驟 假設檢驗的意義 在引數估計的區間估計中,我們提到置信區間的概念,有提到置信區間最主要的應用是用於假設檢驗。詳情請見 什麼是引數估計 那什麼是假設檢驗?假設檢驗 test of bypothesis 是統計推斷的乙個重要內容,用於判斷某個假...

什麼是 GUID?以及 GUID 的生成

guid 的格式為 xx x x x 其中每個 x 是 0 9 或 a f 範圍內的乙個十六進製制的數字。例如 6f9619ff 8b86 d011 b42d 00c04fc964ff 即為有效的 guid 值。世界上的任何兩台計算機都不會生成重複的 guid 值。guid 主要用於在擁有多個節點 ...