ip数据包的校验和算法c#版_c#应用
2008-02-23 05:42:18来源:互联网 阅读 ()
为做伪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://www.cnblogs.com/tuyile006/archive/2006/12/06/583949.html
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇: c#一个象棋游戏程式_c#应用
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash