簡介
計算IP數據報的檢驗和方法:
1.把檢驗和字段置為0.
2.對首部中每個16bit進行二進制反碼求和
3.結果存在檢驗和字段中
當收到一份IP數據報后,同樣對首部中每個16bit進行二進制反碼的求和。
由於接收方在計算過程中包含了發送方存在首部中的檢驗和,
因此如果首部在傳輸過程中沒有發生任何差錯,那么接收方計算的結果應該為全1.
如果結果不不是全1,那么IP久丟棄收到的數據報,但是不生成差錯報文,
由上層去發現丟失的數據報並進行重傳
發送方例子
IP檢驗和檢查的是IP頭部字段,所以先拿到IP首部的16進制碼,以16bit為一組得到下面的數值.並且把校驗和字段設置為0.
1.發送方1
4510 0054 7e02 4000 4006 【0000】c0a8 031f c0a8 030e
求和值為:2CAE9
高位溢出為2,0002+CAE9=CAEB 轉換為2進制為:1100101011101011
反碼為:11010100010100 轉為十六進制:3514
接收方例子
1接收方: IP首部校驗和主要是針對IP首部看成16bit為單位的數字組成
,依次進行二進制求和,然后得出反碼
0x4500 0x0040 0x40d2 0x4000 0x8006 0xD272 0xc0a8 0x0301 0x2762 0xfc5c
求和為
3FFFC
高位溢出值為3
FFFC+0x0003=FFFF,轉換為2進制為:1111111111111111
反碼為:0