checksum校验
生活随笔
收集整理的這篇文章主要介紹了
checksum校验
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原理
??????? P/ICMP/IGMP/TCP/UDP等協(xié)議的校驗(yàn)和算法都是相同的,采用的都是將數(shù)據(jù)流視為16位整數(shù)流進(jìn)行重復(fù)疊加計(jì)算。為了計(jì)算檢驗(yàn)和,首先把檢驗(yàn)和字段置為0。然后,對有效數(shù)據(jù)范圍內(nèi)中每個(gè)16位進(jìn)行二進(jìn)制反碼求和,結(jié)果存在檢驗(yàn)和字段中,如果數(shù)據(jù)長度為奇數(shù)則補(bǔ)一字節(jié)0。當(dāng)收到數(shù)據(jù)后,同樣對有效數(shù)據(jù)范圍中每個(gè)16位數(shù)進(jìn)行二進(jìn)制反碼的求和。由于接收方在計(jì)算過程中包含了發(fā)送方存在首部中的檢驗(yàn)和,因此,如果首部在傳輸過程中沒有發(fā)生任何差錯(cuò),那么接收方計(jì)算的結(jié)果應(yīng)該為全0或全1(具體看實(shí)現(xiàn)了,本質(zhì)一樣; 校驗(yàn)時(shí)可能返回~checksum) 。如果結(jié)果不是全0或全1,那么表示數(shù)據(jù)錯(cuò)誤。
例子:
[cpp]?view plaincopy
編譯運(yùn)行:
總結(jié)
以上是生活随笔為你收集整理的checksum校验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html禁止qq管家弹出广告,教你两招系
- 下一篇: 基于单片机的自动喂食仿真设计(#0051