2012-11-03 47 views
0

我必須計算並驗證IP數據包的校驗和(我正在用C編寫路由器)。表示IP頭的結構具有16位校驗和,但結構中的總位數不能被16整除 - 它是8位短的。位數不足的IP校驗和

我的問題是這樣的。我是否一次讀取結構16位,並用零填充最後一組位以計算校驗和?

回答

0

如果您的位數錯誤,您可以將零位填充到數據的末尾

然而,IP計算在報頭字段,因此總是具有在其上計算校驗和16個比特的倍數。 TCP有時需要在數據末尾添加一個零字節。

http://en.wikipedia.org/wiki/IPv4_header_checksum