QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1208|回复: 3

请教一下TCP/IP协议报头中是怎样计算校验和的?请详细指

[复制链接]
发表于 2005-2-19 18:59:38 | 显示全部楼层 |阅读模式
如果不麻烦请配以c代码!
发表于 2005-2-19 22:12:00 | 显示全部楼层
用google试试。
回复

使用道具 举报

 楼主| 发表于 2005-2-20 17:53:17 | 显示全部楼层
顶!@
回复

使用道具 举报

 楼主| 发表于 2005-2-22 08:21:31 | 显示全部楼层
既然在这儿我没有得到回复,那我就将从其他地方得到的答案贴出来和大家共享吧!

TCP/IP报头Checksum的计算方法

按16位一组,取补码相加,然后对和取补码
USHORT Checksum(USHORT *buffer, int size)
{
unsigned long cksum=0;

while(size >1)
{
cksum+=*buffer++;
size -=sizeof(USHORT);
}
if(size)
cksum += *(UCHAR*)buffer;
cksum = (cksum >> 16) + (cksum & 0xffff);
cksum += (cksum >>16);
return (USHORT)(~cksum);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 16:42 , Processed in 0.046386 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表