IP效验和的计算不太明白。
sboom 2004-04-11 04:26:03 IP校验和的计算方法是:首先将IP首部的校验和字段设为0(IP_HEADER.checksum=0),然后计算整个IP首部(包括选项)的二进制反码的和。
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);
}