網際校正和演算法(Internet CheckSum)

來源:互聯網
上載者:User
網際校正和演算法

                                          佟強  2008.10.20

反碼算數運算:兩個數進行二進位反碼求和的運算很簡單。它的規則是從低位到高位逐列進行計算。0和0相加是0,0和1相加是1,1和1相加是0但要產生一個進位1,加到下一列。如果最高位相加後產生進位,則最後得到的結果要加1

網際校正和演算法

在發送方,先把被校正的資料劃分為許多16位字的序列。如果資料的位元組長度為奇數,則在資料尾部補一個位元組的0以湊成偶數。用反碼算數運算把所有16位字相加後,然後再對和取反碼,便得到校正和。

在接收方,將收到的資料報(包括校正和欄位),將所有16位字再使用反碼算數運算相加一次,將得到的和取反,即得出校正和的計算結果。如果資料報在傳輸過程中沒有任何變化,則此結果必為0,於是就保留這個資料報。否則即認為出差錯,並將此資料報丟棄。

“A,B,C,...,Y,Z”分別表示一系列8位組,用[A,B]這樣形式的位元組組來表示A*256+B的整數,那麼該位元組序列的反碼和就可以通過以下兩種運算式之一給出:

[A,B] +' [C,D] +' ... +' [Y,Z]

[A,B] +' [C,D] +' ... +' [Z,0]

其中,+' 表示反碼算數運算相加,第一個公式適用於偶數個位元組的校正和,第二個公式適用於計算奇數個位元組的校正和。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.