IP首部校验和的计算方法.docVIP

  • 13
  • 0
  • 约1.44千字
  • 约 2页
  • 2020-04-26 发布于江西
  • 举报
IP首部校验和的计算方法: ? 1.把校验和字段清零。 ? 2.然后对每16位(2字节)进行二进制反码求和,反码求和的意思是先对每16位求和,再将得到的和转为反码。 ? 接下来详细描述反码求和的步骤:看下面的代码 ? 算法: SHORT?checksum(USHORT*?buffer,?int?size) { ????unsigned?long?cksum?=?0; ????while(size1) ????{ ????????cksum?+=?*buffer++; ????????size?-=?sizeof(USHORT); ????} ????if(size) ????{ ????????cksum?+=?*(UCHAR*)buffer; ????} ????cksum?=?(cksum16)?+?(cksum0xffff);? ????cksum?+=?(cksum16);? ????return?(USHORT)(~cksum); } ? 参数buffer是指向16位整数的指针,刚开始指向的是IP首部的起始地址,参数size是IP首部的大小。while循环是将IP首部的内容以16位为单元加在一起,如果没有整除(即size还有余下的不足16位的部分),则加上余下的部分,此时的cksum就是相加后的结果,这个结果往往超出了16位,因为校验和是16位的,所以要将高16位和计算得

文档评论(0)

1亿VIP精品文档

相关文档