弗萊徹校驗和


弗萊徹校驗和是一種錯誤檢測技術,它使用兩個校驗和來確定透過網路通道傳輸的訊息中的單位元錯誤。它是一種塊碼技術,由 John G. Fletcher 於 1970 年代在美國勞倫斯利弗莫爾實驗室發明。

校驗和是根據要傳輸的資料塊中的資料值建立的,並附加到資料中。當接收方收到此資料時,將重新計算校驗和並與現有校驗和進行比較。不匹配表示發生錯誤。

此方法的錯誤檢測能力幾乎與迴圈冗餘校驗 (CRC) 相同,但所需的計算量要少得多。

弗萊徹校驗和的版本

弗萊徹校驗和有三種流行的演算法:

  • 弗萊徹-16 - 資料字被分成 8 位塊。然後,計算兩個 8 位校驗和,並將其追加以形成一個 16 位弗萊徹校驗和。

  • 弗萊徹-32 - 資料字被分成 16 位塊。計算兩個 16 位校驗和,並將其追加以形成一個 32 位弗萊徹校驗和。

  • 弗萊徹-64 - 資料字被分成 32 位塊。計算兩個 32 位校驗和,並將其追加以形成一個 32 位弗萊徹校驗和。

計算弗萊徹校驗和的演算法

INPUT : data blocks of equal sizes, 𝑏1,𝑏2………… 𝑏𝑛
OUTPUT : two checksums, 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚1 and 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚2, of 1 byte each

步驟 1) 初始化部分和以及總和,𝑐1=0 和 𝑐2=0

步驟 2) 對於每個資料塊,𝑏𝑖

  • i. 將 𝑏𝑖 加到 𝑐1
  • ii. 將 𝑐1 的更新值加到 𝑐2

步驟 3) 計算校驗和,

  • 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚1= 𝑐𝑀𝑂𝐷 256 和 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚2= 𝑐𝑀𝑂𝐷 256

步驟 4) 將校驗和 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚1 和 𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚2 附加到資料塊 𝑏1、𝑏2………… 𝑏𝑛

弗萊徹校驗和計算示例

假設有五個資料塊,163、200、19、74 和 88。計算如下:

Block Number    Data Block   c1    c2
     -              -        0     0
     1             163      163   163
     2             200      363   526
     3              19      382 908
4 74 456 1364
5 88 544 1908

𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚= 544 𝑀𝑂𝐷 256 = 34 

𝑐ℎ𝑒𝑐𝑘𝑠𝑢𝑚= 1908 𝑀𝑂𝐷 256 = 123

更新於: 2020年6月30日

4K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告