2011-10-03 83 views
3

在TCP/UDP中,發送方xors 16位字,最終結果再次補充以獲取校驗和。現在,這樣做是爲了讓接收方重新計算帶有數據和校驗和的校驗和,如果結果都是1,那麼可以肯定(好吧,差不多!)沒有錯誤。我的問題是爲什麼我們必須對發件人的結果做最後的補充。我們不妨發送它,以便當接收機重新計算校驗和時,它必須檢查所有的零,而不是像其他情況下的所有零。爲什麼最終補充TCP/UDP校驗和?

回答

0

這樣接收器就可以完成所有數據(包括校驗和字段)的1的補碼和,看看它是否爲-0 (0xffff)

+0

接收器爲什麼不能接受1的補碼和,並用0來檢查數據,而不是-0? – borncrusader

3

因爲0有特殊的含義。它用於指示校驗和計算將被忽略。