在看网上的一篇文章《Windows 2000下的Raw Socket编程》
http://www.20cn.net/ns/wz/comp/data/20020818035339.htm
其中有一点不能理解,就是计算ip首部校验和的部分
文章中代码如下
memcpy(szSendBuf, &ipHeader, sizeof(ipHeader)); 
memcpy(szSendBuf+sizeof(ipHeader), &tcpHeader, sizeof(tcpHeader)); 
memset(szSendBuf+sizeof(ipHeader)+sizeof(tcpHeader), 0, 4); 
ipHeader.checksum=checksum((USHORT *)szSendBuf, sizeof(ipHeader)+sizeof(tcpHeader)); 
这段代码是把ip首部和tcp首部copy到一个buffer,再对这个buffer做校验和可以看tcpip详解中说,ip首部校验和只是对ip首部进行计算。
而不是对整个ip包进行计算难道这篇文章中的代码有错误?!