网络第二课(3)---ip协议中的校验和。
2013-10-24 20:56
274 查看
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;//取反
}
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;//取反
}
相关文章推荐
- 计算机网络:网络层与IP协议
- 第二人生的源码分析(三十)UDP接收数据和Windows网络关闭
- 【网络协议】IP协议、ARP协议、RARP协议
- iso15675 道路车辆控制局域网络诊断 第二部分 网络层服务 阅读笔记 (2)
- TCP/IP 网络精讲:OSI七层模型(第二课)
- 深度学习第二课 改善深层神经网络:超参数调试、正则化以及优化 第二周Mini_batch+优化算法 笔记和作业
- 网络解析4——网络层-IP协议
- 2010年Q2 Facebook成第二大网络视频
- 网络适配器“无线网络连接”没有正确配置为使用ip协议
- 网络基础知识讲座之八:初步理解IP协议
- 网络的校验和计算
- 网络子系统53_ip协议分片重组_内存阈值
- tcp-ip协议第二、三章
- 网络基础知识学习3-IP协议
- 网络营销第二课:网络营销基础
- 第二人生的源码分析(三十)UDP接收数据和Windows网络关闭
- Android菜鸟练习第二课 ViewPager自动循环加载网络图片
- [计算机网络笔记]第二部分——应用层协议
- TCP/IP 网络探索之旅:OSI七层模型(第二课)