IPV4首部检验和算法分析与实现

来源 :硅谷 | 被引量 : 0次 | 上传用户:jiaomengni
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]探讨IPV4首部检验和校验和算法分析,并给出实现代码。
  [关键词]IPV4 首部检验和 访问控制 数字签名
  中图分类号:TP3文献标识码:B 文章编号:1671-7597 (2008) 0220058-01
  
  一、校验和概述
  
  所谓校验和是把8位字节视为整数,然后把该8位字节构成的序列求和所计算出的小的整数值。校验和用于检测当8位字节序列从一台计算机向另一台计算机传送时所产生的差错。一般校验和由协议软件计算,当传送时把它附加在分组中。接收时协议软件重新计算校验和,并与发送的校验和进行比较,从而达到核对分组内容的目的。许多TCP/IP协议采用反码运算计算16位校验和,分组中所有整数字段均按网络字节次序存储。
  首部校验和用于确保头部数值的完整性。IP校验和把头部视为按网络字节次序的16位整数序列,采用反码运算把它们累加起来,然后再取结果的反码。为达到计算校验和的目的,假定头部校验和字段内容为0。
  指出下面一点是重要的,即校验和只适用于IP头部,而不适用于数据。把头部校验和和数据校验和分开,有优点也有缺点。因为和数据相比头部通常只占较少8位字节,把校验和分开,路由器只需计算头部校验和,从而缩短了路由器处理时间。把校验和分开也使高层协议可以选择自己的数据校验和模式。主要的缺点头部校验和可用来检测路由器内存坏字引起的差错。采用反码运算比标准加法更健壮。应该指出,头部校验和每次跳跃(在每个路由器)必须重新计算,因为至少有一个字段总是改变(生命期字段),不过可以采用IPv4有头部校验和,但IPv6是否要校验和有争议。反对校验和的人说,任何应用程序如果确实关心数据的完整性,无论如何也要有传输层校验和,除了数据链路层校验和之外,在IP层再加另外一个校验和太过分了。而且经验指出,IP校验和计算是IPv4的主要开销。最后反校验和阵营取得了胜利,IPv6 不再有校验和。
  
  二、校验和算法
  
  (一)校验和生成器
  在发送方,校验和生成器将数据单元细分成大小都为N(通常是16)比特的分段。这些分段采用反码算法加在一起,使得整个结果仍然是N比特长。该校验和随后取反,并当作冗余位加在原始数据单元的末尾,称作校验和字段。发送方遵循以下步骤:数据单元被分成K段,每段N比特;将所有段按反码方式相加求和;对最后结果取反得到校验和;将校验和与数据一起发送。接收方遵循以下步骤:数据单元被分成K段,每段N比特将所有段按反码方式相加求和;取反。若结果为0,则接收数据;否则丢弃。
  
  (二)校验和校验器
  接收方切分数据单元,将所有分段相加并对结果取反。如果扩展的数据单元是完整正确的,那么各数据段和校验和字段相加的最后结果应该是0。如果结果不是0,就意味着数据包包含着差错,因而接收方丢弃该数据单元。
  
  三、校验和算法的分析
  
  校验和检测所有涉及奇数个比特的差错,以及大多数涉及偶数个比特的差错。如果在某一分段中的一个或多个比特被破坏,并且在下一个分段中具有相反值的对应位也被破坏,这些列的将不变,因此接收方将检测不出差错。如果一个分段的最后一个数位是0并且在传输中变成了1,那么另一个分段的最后一个1变成了0将造成该差错的不可检测。校验和保留了所有的进位,尽管两个0变成了1不会改变它们自身列的值,却会改变高位列的数值。当一个比特的反相被另一个数据分段对应数位上具有相反值的比特反相所抵消时,该差错对于校验和来说是不可检测的。
  
  四、校验和算法的实现
  
  typedef struct IPHead//报头结构
  {BYTE ip_type;BYTE ip_verlen; WORD ip_totallength; WORD ip_id;
  WORD ip_offset; BYTE ip_protocol; BYTE ip_time;
  WORD ip_checksum; DWORD ip_srcaddr; DWORD ip_destaddr; }
  *IPhPot;
  class IP
  {public: //计算首部检验和
   static WORD checksum(IPHead *ip,int hsize)
   {if (ip == NULL)
   {::MessageBox(NULL,"how are you","空指针",MB_OK); }
   ip->ip_checksum = 0x0000;
   DWORD checkSum = 0x00000000; //存放二进制求和结果
   WORD hight = 0x0000; //存放二进制求和结果的高16位
   WORD low = 0x0000; //存放二进制求和结果的低16位
   WORD *p = (WORD *)ip;
   while(hsize>0)//各位求和
   { checkSum += *p++; //将指向对象的指针转化成指向无符号短整数指针
   hsize -= sizeof(WORD); }
   low = (WORD)checkSum;
   hight = (WORD)(checkSum >>= 16);
   return ~(low + hight); //返回求和结果的取反值 }
   //判断给定的ip数据报是否正确
   static BOOL isRight(IPHead *ip)
   {if (ip == NULL)
   {::MessageBox(NULL,"how are you","空指针",MB_OK); }
   int hsize = sizeof(*ip);
   WORD sum = 0x0000; //ip首部效验和
   DWORD checkSum = 0x00000000; //存放二进制求和结果
   WORD hight = 0x0000; //存放二进制求和结果的高16位
   WORD low = 0x0000; //存放二进制求和结果的低16位
   WORD *p = (WORD *)ip;
   while(hsize>0)//各位求和
   {checkSum += *p++;//将指向对象的指针转化成指向无符号短整数指针
   hsize -= sizeof(WORD); }
   low = (WORD)checkSum;
   hight = (WORD)(checkSum >>= 16);
   sum = ~(low + hight); //返回求和结果的取反值
   if (sum == 0) {return TRUE; }
   Else {return FALSE; }}};
  最终实现了IPV4首部检验和校验和算法代码。
  
  参考文献:
  [1]Tanenbaum A S.Computer Networks[M].3rd ed,北京:清华大学出版社,1997.
  [2]李毅、张帆等,IPv4头部校验和的反码算法,武汉理工大学学报2003,4.
其他文献
[摘要]农村雷电灾害日益严重的主要原因是:生态环境破坏造成气候异常;农村城镇化和城镇集群化带来负面影响;农村人群雷电自我防护能力低下等。基本对策为:改善生态环境,保持当地气候良性自稳;摒弃“经济优先潜规则”,坚持可持续发展的村镇规划建设思想;农村所有基本建设项目依法列入防雷安全行政许可范围。  [关键词]农村雷电 灾害原因 分析对策  中图分类号:P4文献标识码:A 文章编号:1671-7597(
期刊
[摘 要]针对“湖广填四川”大移民时期四川地区的植被发生的变化,运用GIS技术来恢复反映当时四川地区的森林植被演变情况。  [关键词]湖广填四川 植被变迁 GIS技术  中图分类号:P9 文献标识码:A 文章编号:1671-7597 (2008) 0220002-01  历史上四川植被一直保存良好,保持着完好的生态环境。在接踵而至的历时105年(公元1671年至1776年)的“湖广填四
期刊
[摘要]Java语言作为程序员及所有网络工作者的“宠物”,正以不可阻挡的趋势强势发展。分析Java的前进路程,探讨其生存现状。  [关键词]Java 生存现状 分析  中图分类号:TP3文献标识码:A文章编号:1671-7597(2008)0220021-01  Java自问世以来,以其得天独厚的优势,在IT业界掀起了研究、开发它的浪潮,显示了鹏程万里的美好前景。作为一种与底层硬件无关的、“编写一
期刊
[摘要]C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效力高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点"这一双重性使它既能做系统描述语言,又是通用的程序设计语言,它是计算机应用人员应掌握的一种程序设计工具。对计算机C语言程序进行了简单探讨研究,希望能够对我们认识、了解和使用C语言程序有所帮助。  [关键词]C语言程序设计 难点分析 重点函数与指针  中图分类号:TP
期刊
[摘要]随着中国3G移动通信网络正式商用期限的来临,各利益相关方纷纷从自身视角出发寻求对市场规则、运营秩序的最大影响。各方利益博弈的激烈交锋,既阻抑了中国3G正常平稳的发展步伐,也从某种层面上推动并见证了中国轰轰烈烈的3G时代的到来。而在这样复杂多变的环境中,中国的3G发展,以至于整个中国电信产业的发展必须有自己清晰而坚定的思路。  [关键词]3G 移动通讯 政策 利益博弈  中图分类号:TP3
期刊
[摘要]根据实际工作经验,分析QS型潜水泵在使用过程中的注意事项,系统分析影响其寿命的各种因素,并对针对常见故障提出排除措施。  [关键词]潜水泵 故障 维修 寿命  中图分类号:TV5 文献标识码:A 文章编号:1671-7597 (2008) 0220036-01  Qs系列潜水泵属于三相充水式结构,分为水泵和电机两大部分。水泵机座上有两排进出水孔,工作时电机内部始终充满流动的水,确保电机在工
期刊
[摘要]运用PDMS优化施工图可在冶建施工中最大化的缩短施工周期、节省施工人力及物力成本。  [关键词]PDMS 管道等级库 管道元件库 数据库 三维技术  中图分类号:TF3 文献标识码:A 文章编号:1671-7597(2008)0220032-01    一、前言    冶建单位的施工模式都是采用二维图纸施工,工程技术人员只能在实际施工阶段才能发现图纸的错误,往往造成施工方及甲方人力物力的大
期刊
[摘要]在经过多年的Photoshop教学实践,总结出了八条使用窍门。可以帮助使用者提高操作水平和速度,达到节约时间,得到美观图片的效果。   [关键词]Photoshop 图层   中图分类号:TP3 文献标识码:B 文章编号:1671-7597(2008)0220013-01  密技一:当你需要快速隐藏工具栏和多个浮动面板时,逐一点击面板上的关闭按钮,接下来使用时又要打开,十分不方便。其实你可
期刊
[摘要]“价格歧视”是当今社会普遍存在而且备受关注的话题,从国家垄断企业到贩卖衣服食品的商贩,都在自觉或者刻意应用经济学中的这一理论来尽量获取最大利润,消费者有必要知道此种现象发生的原因和本质,即对此现象的原因和本质进行论述。  [关键词]价格歧视 消费者剩余  中图分类号:O29 文献标识码:A 文章编号:1671-7597(2008)0520198-01    一、背景资料    某市水价改革
期刊
[摘要]介绍CMM的概念、关键技术和在企业中实施的要点以及在软件工程化发展中的作用,以及以CMM带动后的软件工程化发展方向。目的是让软件开发人员认识CMM过程环节和实施CMM的必要性以及CMM的不足和软件工程化的发展方向。  [关键词]CMM 关键过程域 目标 关键实践 软件工程  中图分类号:TP3文献标识码:A文章编号:1671-7597 (2008) 0220016-02    20世纪80
期刊