当前位置首页 > 资格/认证考试 > 自考
搜柄,搜必应! 快速导航 | 使用教程  [会员中心]

IP首部校验算法

文档格式:DOC| 9 页|大小 99.50KB|积分 10|2022-04-02 发布|文档ID:68518962
第1页
下载文档到电脑,查找使用更方便 还剩页未读,继续阅读>>
1 / 9
此文档下载收益归作者所有 下载文档
  • 版权提示
  • 文本预览
  • 常见问题
  • IP首部校验算法IP首部校验算法刘派,北京邮电大学软件学院,北京100876,摘要,协议为提高数据传输效率简化了协议舍弃了许多为提供可靠 性所需要的工作如建立连接、维护连接、拆除连接、确认应IP ,(答、时间片处理等其唯一的正确性检验即依靠头部校验和以保证 头部数据的完整性为了研究首部校验算法,查看了相关的),IPRFC文档并利用wireshark 11具进行了抓包, 并对抓包取得的数据进行 了计算验证研究发现了一些算法存在一定的问题并对它的改进算法进行了研 究关键词,IP,头部校验和,算法,验证中图分类号,文献标识码,文章编号,TP393 A 1009-3044 (2010)19-5194-03IP Header ChecksumAlgorithm LIU Pai(Schoolof Software Engineerin,Beijingg Universityof PostsandTelecommunications, Beijing 100876, China) Abstract: In order to increasetheefficiencyof data transmission, IP simplifie s the protocolby not providingareliable communication fa - cility. There areno acknowledgments either end-to -end or hop -by -hop. There isno error control for data, only a headerchecksum provides a verification that the information usedin processinginternet datagram has been transmitted correctly. There no retransmi are s一sions There no is flow contro1. The RFC documents give the algorithmsusedto computethe checksum andthe wireshark softwarepro一vides the functionof catching thelP packets This data can beto usedverify the algorithms The research also shows there isin athe bug algorithm and can be overcomedoptimised andKey words: internet protocol: header checksum:algorithm: verification1 IP首部如图1所示,IP数据报首部的固定部分中的各字段,版本占位,指协议的版本。

    1) 4 IP首部长度占位,可表示最大十进制数值是2) 4 153)区分服务占8位,用来获得更好地服务总长度总长度 是指首部和数据之和的长度4)标识占16位,IP软件在存储器中维持一个计数器,每产 生一个数据报,计数器就加1,并将该值赋给标识字段 标志占位,但目前只有两位有意义还有分片5) 3MF = 1不能分片DF二1图片偏移占位片偏移指出较长的分组在分片后,某1 6) 13片在分组中的相对位置7)生存时间占8位,表明数据报在网络中的寿命协议占位,指出此数据报携带的数据时使用何种协议8) 8首部检验和占位这个字段只检验数据报的首部但不包括数据部分9)16源地址位10) 32目的地址位11) 322 IP校验和算法2. 1发送方将校验和字段置为然后将包头按比特分成多个单元如包头长度不是比 特的倍数则用比特填充到比特的1) 0, IP 16 ,16 ,0 16倍数;2)对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算 是直接丢掉溢出的高位),将得到的和的反码填入校验和字段;收稿日期,2010-04-26作者简介,刘派,北京邮电大学软件学院级在读1989-07第卷第期年 月6 19 (2010 7 )不技术Computer Knowledge and Technology电脑知识发送数据包。

    3)2. 2接收方1)将IP包头按16比特分成多个单元,如包头长度不是16比特的倍数,则用0比特填充到16比特的倍数;对各个单元采用反码加法运算检查得到的和是否符合是全有的实现可能对得 到的和会取反码然后判断最终值是不是全2) ,1(,0);3)如果是全1则进行下步处理,否则意味着包已变化仍而丢弃之.需要强 调的是反码和是采用高位溢出加到低位的,如3比特的反 码和运 算:100b+101b=010b因(为100b+101b=1001b高,位溢出1,其应该加到低位,即001b+lb igj(位溢出位)=010b) 2.3校验和源码in 6 register long sum二0;while( count 1 ) sum+= * (unsigned short) addr+;count-二2;i f( count 0 ) sum+= (unsigned char*) addr; while (su m16) sum二(sum& Oxffff)+ (sum 16) ;checksum二sum;第1个while循环是做普通加法,因为IP包头和TCP整个报文段比较 短(没达到2“17数量级),所以不可能导致4字节的sum溢出.紧接着的一 个判断语句是为了能处理输入数据是奇数个字节的这种情况再接着的数据循环 是实现反码算法,山反码和的高位 溢出加到低位的性质,可 得 到32位 的数 据的高位比特移位16比特,再加上原来的低16比特, 不影响最终结果 这个 等价运算, 因为sum的最初值(刚开始循环时)可能很尢所以这 个等价运算需循环进行, 直到sum的高比特(16比特以上)全为0.对于32位的sum,事实上这个运算循环至多只有两轮,所以也有程序直接用两 条” sum = (sum&.串計丨吧500別?吧 T8fli7*5Tih rwfc nnlt奇他】皿出,_Wil16-iv.oim ollh utcu nilo或虑砸育|山WOI mi IIXHfnOxffff) + (sum 16);代替了整个循环.最后,对和取反返回。

    2.4校验和算法特性1)奇、偶字节可仅意排列组合,2)字节顺序独立,并行计算3)2.5采取反码而不用补码的原因1)反码和的溢出有后效性(蔓延性)反码和将高位溢出加到低位,导致这个溢出会对后面操作有永久影响,有后效性;而补码和直接将高位和溢出,导致这个溢出对后面的操作再无影响, 因此无后效性2)反码校验无需考虑字节序正因为反码和的溢出有后效性导致大端字节序和小端字节序,(big-endian)对同一数据序列如两个比特的序列产生的校验和也只是字(little-endian) (16 )节 序 相 反,而补码和因为将溢出丢掉了,不同字节序之间的校验和大不相 同且nnn ionPSOQacca4MH! !Q3UUPJUU 0101 QOKIIOLV uwu loir :iwnil in侵:mw iK(iouim- Udo mooiir-伽uin OOftjihi uOi7H0没什么联系2. 6 wireshark抓包验证算法如图2所示3增量式修改校验和的加速算法图2在实际的应用中,存在对收到的数据包进行修改若干个地方,并回送 至发送方戒者转发的情况此时需要重新计算数据包的检验和最常见的可能 就是将收到的数据包的字段减,并转发的情况。

    如TTL 1果久旧按照 传统的计算检验和的方式进行计算,特别是当数据包长度很大时,为了重新 计算校验和而将整个数据包的数据遍历一边,反码求和,效率肯定比较低 为提高转发效率,要求重校验算法尽可能快,故出现了如下所示的重校验算法,UpdateTTL(struct ip_hdr*ipptr, unsigned charn) unsigned longsum;unsigned short old;old = ntohs(*(unsigned short*)&ipptr-ttl);ipptr-ttl一二n;sum= old + (ntohs(*(unsigned short*)&ipptr -ttl) & Oxffff);sum+= ntohs(ipptr-Checksum);sum= (sum& Oxffff) + (sum16);ipptr-Checksum= htons (sum+ (sum16) ;s 算法的实现依据是这样的假设包头原校验和为C,改变的字段的原始值是m,更改后的值是乩设C为重校验和,RFC1017中给岀C二(C+(-m)+m,)二C+(m -mJ )但山于该式不是更新的校验和的反码,而且反码减法运算在机 器内较难实现,于 是RFC1141给出 s 适合在机器内运算的式子C+m+m,该等价 关系的成立基于反码的运算性质:取反运算满足结合律,按位取反运算不符号取反 (及相、反数)是等价的(即C二-C)。

    4可能存在的问题及其解决4. 1存在的问题RFC1071和1141所提出的增量式修改校验和有一个BUG,就是按照公式计算 新的检验和时,有可能出现计算结果为0XFFFF本栏目责仅编辑,冯蕾网络 通讯及安全5195第卷第期年 月6 19 (2010 7 )不技术Computer Knowledge andTechnology电脑知识的情况,则意味着数据包中所有部分相加的结果为这是不可能的0 x0000例如,一个IP包头16位域m二0 x5555变为m二0 x3285.包头其它部分反 码和为0 xCD7A.HC旧的检验和HC新的检验和某个域字修改前的值m (16- bit )m某个域修改后的值包头校验和是:HC二(0 xCD7A+ 0 x5555) =0 x22D0= 0 xDD2F “HC=(0 xCD7A+ 0 x3285) =0 xFFFF= 0 x0000如用RFC1141给出的公式C二C +m + m HC二HC + m + m二0 xDD2F+ 0 x5555+ 0 x3285=OxFFFF不不用加速算法讣算出的结果不一样4.2问题解决1) RFC1141里规定,对于更新了的头校验值为+0时,它会改为-0,因为它假定反码有一个分布式的属性,当结果为0时它不会一直保持 不变、2) RFC1624里假定上面的属性成立仍而避免了这个可能出现的问题,正 确的等式如下HC =(C + (-m) + m )、HC,=(c+ (-m) +m,) = (0 x22D0+ 0 x555+ 0 x3285)二OxFFFF二0 x0000参考文献,1一Borman D, Research C, PartridgeC. Computing the Internet checksumES.RFC1071, 1988. 2 Mallory T, KullbergA. Incremental updatingof the InternetchecksumES. RFC1141, 1990.3_ Rijsinghani A. Computationof the Internet checksumvia increments1 update. RFC1624, 1994. 4谢希仁.计算机网络M.5版.北京:电子 工业出版社,2008.,上接第页,5185%要确定两次访问是否在一个星期内,首先确定两个日期是否同年佯、是 否同一月佯,若是同一月,则需要判断两个日期差的时间是否七天之内, 若在七天之内,则可以更改周访问次数,若不在同一月佯,则要判 断两个月是否跨年度的相邻两个月,并判断是否同一周内的时间。

    若同 一周内,“”字段的值增,否则重新开始一周的统计weekhitl3总结个人网站建设中,需要知识的积累,同时也需要不断的实践,仍简单的编程开 始,不断提高自己,完善自我,才能更快更好地在网络世界里游刃有 余参考文献,1朱志宇.基于ASP和ADO技术的励态交互式教学网站J.河北大学 学报:哲学社会科学版,2006(7). 2李沫沫, 李宇亮.运用ASP技术实现励 态网站的设计不开发J.河北大学学报:哲学社会科学版,2004(1). 3龚 宇花.基于关系型数据库的WEB 0A公文流转系统J.自励化不仪 表,2006(3).赵小林陈英刘然励态网页规划不实现机制河南大学学报自然科学 版4J. :,2001(1).本栏口责低编辑,冯蕾网络通讯及安全5196。

    点击阅读更多内容
    卖家[上传人]:痛苦女王
    资质:实名认证