当前位置:   article > 正文

网络第二课(3)---ip协议中的校验和。_slop协议 校验和

slop协议 校验和

check_sum计算:

1.校验和置0;

2.ip头部中(20字节),以两个字节为一组(short型),相加。

3.判断这个和是否超出了short型 的范围,如果超出了把超出部分与,下面的16位数相加;

4.最后对这个结果取反。


#include <stdio.h>

unsigned short check_sum(unsigned char *data, int len);
int main()
{
//0xb88f
unsigned char data[1024] = {//下面这段数据是我们通过抓包程序,抓下来的(ip协议头)
0x45, 0x00,
0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11,
0x00, 0x00, 0xc0, 0xa8, 0x00, 0x0f, 0xc0, 0xa8,
0x00, 0xde
};
unsigned short sum = check_sum(data, 20);//首地址与长度。
printf("sum is %x\n", sum);
}


unsigned short check_sum(unsigned char *data, int len)
{
unsigned short sum = 0;
unsigned int tmp = 0;
int i= 0;
for(i=0;i<len-1;i=i+2)//求和大笑
{
tmp = tmp + ((data[i]<<8) + (data[i+1]));
}
while(tmp > 0x10000)//查看是否超出short型数据的范围。 大笑
{
tmp = ((tmp & 0xffff0000)>>16) + (tmp & 0xffff);
}
return 0xffff-tmp;//取反大笑
}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/386032
推荐阅读
相关标签
  

闽ICP备14008679号