UDP校验
采用二進制反碼運算求和
具體規則:(求到反碼后的運算規則)
1,從低位到高位逐列計算
2,0 +0=0 0+1=1 1+1 =10(1進位)
???????? 3,最高位進位的話要加到最后的結果上
?
直接在原碼基礎上求反碼和:
1,從低位到高位逐列計算
2,0 +0=10 0+1=1 1+1 =0(其實是一樣啦,這里00-》11后相加是不是10哦,向最高位進1)
???????????????? 3,最高位進位的話要加到最后的結果上
?
?
?
?
0100 1111 0001 1010
0111 1010 0001 1000
-------------------------------------
0011 0110 1100 1100最后最高位有進位,結果加1
變為: 0011 0110 1100 1101
?
?
在發送數據時,為了計算數據包的檢驗和。應該按如下步驟:
??? 1、把校驗和字段設置為0;
??? 2、把需要校驗的數據看成以16位為單位的數字組成,依次進行二進制反碼求和;
??? 3、把得到的結果存入校驗和字段中
??? 在接收數據時,計算數據包的檢驗和相對簡單,按如下步驟:
??? 1、把首部看成以16位為單位的數字組成,依次進行二進制反碼求和,包括校驗和字段;
??? 2、檢查計算出的校驗和的結果是否為0;
??? 3、如果等于0,說明被整除,校驗和正確。否則,校驗和就是錯誤的,協議棧要拋棄這個數據包。
?
書上有一句話:“如果校驗和的計算結果為0,則存入的值為全1(65535),這在二進制反碼計算中是等效的”
? ? ? 來自 <http://blog.csdn.net/dingmin1860/article/details/48268927>
?
?
總結
- 上一篇: 撕不撕?如何撕?跟谁撕?权力游戏致胜手册
- 下一篇: 四六级分数根据比例给分