国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

IP數據包的校驗和算法C#版

2019-11-18 16:50:06
字體:
來源:轉載
供稿:網友

為做偽ip,特地做了一個IP包,用C#改寫IP頭的校驗和算法。
資料一:
IP頭格式:
 版本號 (4位)
 IP頭長度 (4位)
 服務類型 (8位)
 數據包長度 (16位)
 標識段 (16位)
 標志段 (16位)
 生存時間 (8位)
 傳輸協議 (8位)
 頭校驗和 (16位)
 發送地址 (16位)
 目標地址 (16位)
 選項
 填充

資料二:
IP 協議采用統一的校驗算法,其計算比較簡單:設校驗和初值為0,然后對數據每16位求異或,結果取反,便得校驗和。校驗時將數據(含校驗和)按同樣的算法求和,結果為0則數據正確,不為0表示通訊出錯,需要丟棄該數據包。

算法源代碼:

   public static UInt16 checksum(UInt16[] buffer,int size)
  {
   Int32 cksum=0;
   int counter;
   counter=0;
   while(size>0)
   {
        UInt16 val=buffer[counter];
        cksum+=Convert.ToInt32(buffer[counter]);
        counter+=1;
        size=-1;
   }
   cksum=(cksum>>16)+(cksum&0xffff);
   cksum+=(cksum>>16);
   return (UInt16)(~cksum);
  }

注意:buffer數組為整個ip包數組,需要轉換成UInt16[];size為buffer數組的長度。
關于byte[]轉換成UInt16[]的方法比較簡單,在此不介紹了。
http://m.survivalescaperooms.com/tuyile006/archive/2006/12/06/583949.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 淮安市| 彭阳县| 若尔盖县| 株洲市| 凤城市| 孝昌县| 遂昌县| 淳化县| 黑山县| 南开区| 时尚| 湟中县| 湘潭县| 汕头市| 宁安市| 浙江省| 温州市| 都兰县| 永州市| 曲周县| 苏尼特右旗| 民勤县| 沛县| 万州区| 哈密市| 礼泉县| 南充市| 正安县| 玉林市| 石嘴山市| 富平县| 青州市| 高唐县| 肥东县| 邵东县| 景谷| 新民市| 蕉岭县| 商河县| 巫溪县| 浮梁县|