社区
网络编程
帖子详情
关于IP校验算法的疑惑
leaber
2004-12-10 12:49:23
IP的校验算法:
置0把被校验的数据16位进行累加,然后取反码,若数据字节长度为奇数,则数据尾部补一个字节的0以凑成偶数。
但是实现代码对为奇数的情况,好象并没有补零,只是转为BYTE后累加。代码如下:
if( nleft==1)
{ *(unsigned char *)(&answer)=*(unsigned char *)w;
sum+=answer;
所以很困惑,为什么理论和实现不一致? 是不是理解错了。
请各位指点
...全文
94
4
打赏
收藏
关于IP校验算法的疑惑
IP的校验算法: 置0把被校验的数据16位进行累加,然后取反码,若数据字节长度为奇数,则数据尾部补一个字节的0以凑成偶数。 但是实现代码对为奇数的情况,好象并没有补零,只是转为BYTE后累加。代码如下: if( nleft==1) { *(unsigned char *)(&answer)=*(unsigned char *)w; sum+=answer; 所以很困惑,为什么理论和实现不一致? 是不是理解错了。 请各位指点
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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);
}
计算机网络(谢希仁第五版)课后答案.rar
谢希仁第五版 课后答案 计算机网络 o(∩_∩)o 哈哈
c语言tcp
校验
和
算法
,
IP
、ICMP、UDP、TCP
校验
和
算法
分享
以前看计算机网络相关的书,每次看到
IP
或者UDP报头
校验
和时,都一瞥而过,以为相当简单,不就是16bit数据的相加吗。最近在研究《TCP/
IP
详解 卷1:协议》这本书,看到
校验
和是16bit字的二进制反码和(晕,以前都没注意原来是反码和,看来以前看书不仔细啊!罪过,罪过~~),觉得很奇怪,为什么会用反码和,而不是直接求和呢?(因为我认为TCP/
IP
协议里面的
算法
和思想一般都是非常经典的,人家这么做...
二进制反码求和
校验
算法
原文链接:http://blog.chinaunix.net/uid-26758209-id-3146230.html 二进制反码求和
校验
算法
经常看计算机网络相关的书时,每次看到关于
IP
或者是UDP报头
校验
和时,都是一笑而过,以为相当简单的东西,不就是16bit数据的相加吗!最近在学习Ping命令的源待时,看到里面有关于
校验
和的
算法
。一头雾水,后来查找资料,看到
校验
和是16bit字的
IP
、ICMP、UDP、TCP
校验
和
算法
以前看计算机网络相关的书,每次看到
IP
或者UDP报头
校验
和时,都一瞥而过,以为相当简单,不就是16bit数据的相加吗。最近在研究《TCP/
IP
详解 卷1:协议》这本书,看到
校验
和是16bit字的二进制反码和(晕,以前都没注意原来是反码和,看来以前看书不仔细啊!罪过,罪过~~),觉得很奇怪,为什么会用反码和,而不是直接求和呢?(因为我认为TCP/
IP
协议里面的
算法
和思想一般都是非常经典的,人家这么做
计算机网络二进制反码求和
校验
算法
原文链接:http://blog.chinaunix.net/uid-26758209-id-3146230.html
校验
和
算法
经常看计算机网络相关的书时,每次看到关于
IP
或者是UDP报头
校验
和时,都是一笑而过,以为相当简单的东西,不就是16bit数据的相加吗!最近在学习Ping命令的源待时,看到里面有关于
校验
和的
算法
。一头雾水,后来查找资料,看到
校验
和是16bit字的
网络编程
18,358
社区成员
64,186
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章