關於校驗和(UDP,TCP,IP)

2021-06-23 02:20:34 字數 829 閱讀 1502

關於校驗,感覺大家和我一樣一直對這個概念很模糊,對一些細節還不是很了解!所以就寫了一篇部落格,總結一下校驗和的知識,也加深一下印象!

首先tcp,udp,ip三個協議中校驗和都佔16位,也就是兩個位元組。

udp的校驗和結算相對簡單。首先udp報文長度不是確定的,所以計算校驗和前要先將報文的末尾用『0』補齊。使報文為偶數個位元組。

傳送端計算校驗和:

計算udp的校驗和方法是計算16位的二進位制和包括udp首部資料,將校驗和字段(16位)置0,將每個16位的按位相加,第17、18位出現進製的話,將結果值重新與結果的第1,2位相加,再將所得的結果取反碼,最後得到的結果即為udp校驗和,存在校驗和字段中。

ps:求校驗和的方法寫的有點籠統,詳細演算法自行google二進位制反碼求和!

接收端驗證校驗和:

若傳輸中沒有任何差錯,包含之前的校驗和對報文進行二進位制反碼求和,接收端計算的結果為全1,即報文正確,否則有錯。

在這額外多說一句,一旦驗證udp報文出錯時,報文在分組**時,正常傳送**,不會被丟棄。他被丟棄的地方發生在應用層向上**的時候。一般路由器等三層裝置,不會驗證其校驗和!但是udp的校驗是可選的!也就是可以選擇接收端是否對其進行校驗!

tcp的校驗和演算法和udp的基本相同!不夠偶數個位元組同樣需要『0』填充。求法也是將每個16位進行二進位制反碼求和。但是不同的地方,tcp必須進行校驗,而且他有自己的一些重傳機制,來確保可靠傳輸。

最後再說ip的校驗和,檢驗和的演算法幾個協議都是相同的。唯一不同就是ip協議只驗證頭部。求校驗和時,他並不包括資料部分!

關於資料校驗

1.什麼是資料校驗 通俗的說,就是為保證資料的完整性,用一種指定的演算法對原始資料計算出的乙個校驗值。接收方用同樣的演算法計算一次校驗值,如果和隨資料提供的校驗值一樣,就說明資料是完整的。2.最簡單的檢驗 實現方法 最簡單的校驗就是把原始資料和待比較資料直接進行比較,看是否完全一樣這種方法是最安全最...

關於CRC校驗

一 什麼是crc校驗 crc即迴圈冗餘校驗碼,是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。二 crc的...

關於資料的校驗

在一般的程式設計中,通常是將資料的校驗分成兩個部分實現,乙個是資料格式的校驗,另外就是資料邏輯的校驗,或者是資料業務邏輯校驗 目前我能想到的校驗,只有這兩個部分 資料格式的校驗,是在表示層處理,如果是struts用validate.xml校驗就可以。做邏輯校驗的地方很多都不一樣,我看有在action...