Ip 首部檢驗和字段

2021-07-23 00:23:50 字數 935 閱讀 4380

ip/icmp/igmp/tcp/udp等協議的校驗和演算法都是相同的,演算法如下:

在傳送資料時,為了計算數ip據報的校驗和。應該按如下步驟:

(1)把ip資料報的首部都置為0,包括校驗和字段。

(2)把首部看成以16位為單位的數字組成,依次進行二進位制反碼求和。

(3)把得到的結果存入校驗和字段中。

在接收資料時,計算資料報的校驗和相對簡單,按如下步驟:

(1)當接收ip包時,需要對報頭進行確認,檢查ip頭是否有誤,演算法同上2、3步,然後判斷取反的結果是否為0,是則正確,否則有錯。

1、傳送方

i)將校驗和字段置為0,然後將ip包頭按16位元分成多個單元,如包頭長度不是16位元的倍數,則用0位元填充到16位元的倍數;

ii)對各個單元採用反碼加法運算(即高位溢位位會加到低位,通常的補碼運算是直接丟掉溢位的高位),將得到的和的反碼填入校驗和字段;

iii)傳送資料報。

2、接收方

i)將ip包頭按16位元分成多個單元,如包頭長度不是16位元的倍數,則用0位元填充到16位元的倍數;

ii)對各個單元採用反碼加法運算,檢查得到的和是否符合是全1(有的實現可能對得到的和會取反碼,然後判斷最終值是不是全0);

iii)如果是全1則進行下步處理,否則意味著包已變化從而丟棄之。需要強調的是反碼和是採用高位溢位加到低位的,如3位元的反碼和運算:100b+101b=010b(因為100b+101b=1001b,高位溢位1,其應該加到低位,即001b+1b(高位溢位位)=010b)

IP首部檢驗和計算

計算ip首部檢驗和 如上圖,計算?是多少?計算 從08 00之後開始計算到後面的08 00即 兩個位元組的相加 45 00 00 20 d5 56 00 00 80 01 de b7 45 5d c0 a8 00 dc 等於 3800f 然後溢位的再次加到後面即 800f 3 等於 8012 最後用...

IP首部校驗和字段計算方法

ip首部有16bit的校驗和,因此,ip首部以16bit為單位計算校驗和,ip首部的長度一定是16bit的整倍數,這是由於首部長欄位是以32bit為單位計算的,不足的補0。傳送方計算方法 1.首先把校驗和的16bit置0。2.將首部以16bit為單位異或 或模2加,結果相同 3.將異或結果取反,並填...

ip首部TCP首部

ip資料報的首部 version 版本號 如ipv4,ipv6 ihl inernet header length,ip包頭的長度 4位元組為1個單位來記錄 type of service 服務型別 d 若為0表示一般延遲,若為1表示為低延遲,t 若為0表示一般傳輸量,若為1表示高傳輸量 r 若為0...