社区
网络编程
帖子详情
关于IP校验算法的疑惑
leaber
2004-12-10 12:49:23
IP的校验算法:
置0把被校验的数据16位进行累加,然后取反码,若数据字节长度为奇数,则数据尾部补一个字节的0以凑成偶数。
但是实现代码对为奇数的情况,好象并没有补零,只是转为BYTE后累加。代码如下:
if( nleft==1)
{ *(unsigned char *)(&answer)=*(unsigned char *)w;
sum+=answer;
所以很困惑,为什么理论和实现不一致? 是不是理解错了。
请各位指点
...全文
87
4
打赏
收藏
关于IP校验算法的疑惑
IP的校验算法: 置0把被校验的数据16位进行累加,然后取反码,若数据字节长度为奇数,则数据尾部补一个字节的0以凑成偶数。 但是实现代码对为奇数的情况,好象并没有补零,只是转为BYTE后累加。代码如下: if( nleft==1) { *(unsigned char *)(&answer)=*(unsigned char *)w; sum+=answer; 所以很困惑,为什么理论和实现不一致? 是不是理解错了。 请各位指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
leaber
2004-12-11
打赏
举报
回复
结帐了,自己搞清楚了。要考虑网络字节顺序, 所以最好还是自己抓包分析一下!
leaber
2004-12-10
打赏
举报
回复
顶一下。
leaber
2004-12-10
打赏
举报
回复
上面的也是一样的,并没有在后面补0来实现。难道是理论错误码了!
不过这样算出来的却是正确的。 真是想不明白..
Hendy_So
2004-12-10
打赏
举报
回复
经典的检验函数:
unsigned short checksum(USHORT *buffer,int size)
{
unsigned long cksum=0;
while(size>1)
{
cksum+=*buffer++;
size-=sizeof(unsigned short);
}
if(size)
cksum+=*buffer;
cksum=(cksum>>16)+(cksum & 0xffff);
cksum+=(cksum>>16);
return (unsigned short)(~cksum);
}
《C语言/C++学习指南》加密解密篇(安全相关
算法
)
本套视频教程介绍加密解密相关...具体包含: (1) 数据转换(HEX和base64) (2) 对称加密 (DES, 3DES, AES) (3)
校验
CRC, MD5摘要, SHA1摘要 (4) 数字签名(HMAC-SHA1) , 并介绍了crypto++这个
算法
库的使用方法。
c语言tcp
校验
和
算法
,
IP
、ICMP、UDP、TCP
校验
和
算法
分享
以前看计算机网络相关的书,每次看到
IP
或者UDP报头
校验
和时,都一瞥而过,以为相当简单,不就是16bit数据的相加吗。最近在研究《TCP/
IP
详解...(因为我认为TCP/
IP
协议里面的
算法
和思想一般都是非常经典的,人家这么做...
二进制反码求和
校验
算法
二进制反码求和
校验
算法
经常看计算机网络相关的书时,每次看到关于
IP
或者是UDP报头
校验
和时,都是一笑而过,以为相当简单的东西,不就是16bit数据的相加吗!最近在学习Ping命令的源待时,看到里面有关于
校验
和的...
校验
和
算法
分析【转】
以前看计算机网络相关的书,每次看到
IP
或者UDP报头
校验
和时,都一瞥而过,以为相当简单,不就是16bit数据的相加吗。...(因为我认为TCP/
IP
协议里面的
算法
和思想一般都是非常经典的,人家这么做一...
二进制反码求和
校验
码
算法
经常看计算机网络相关的书时,每次看到关于
IP
或者是UDP报头
校验
和时,都是一笑而过,以为相当简单的东西,不就是16bit数据的相加吗!最近在学习Ping命令的源待时,看到里面有关于
校验
和的
算法
。一头雾水,后来查找...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章