求以太网的C语言解释

来源:百度知道 编辑:UC知道 时间:2024/05/19 19:41:43
请逐行解释 越详细越好
uint16 CreateIpHeadCrc(uint8 * Ip)
{
union w CrcTemp;
uint8 i;
CrcTemp.dwords = 0;
for(i=0;i<10;i++)
{
CrcTemp.dwords = CrcTemp.dwords + ((uint32)Ip[2*i]<<8)+(uint32)Ip[2*i+1];
}
while(CrcTemp.words.high>0)
{
CrcTemp.dwords = (uint32)(CrcTemp.words.high + CrcTemp.words.low);
}
CrcTemp.words.low = 0xffff - CrcTemp.words.low; /*取反*/
return(CrcTemp.words.low);

有一本书叫 <TCP/IP 实现> 非常厚 整本书一大半是实现TCP/IP的代码,一小半是说明,你可以去买本大致看看,从UDP,TCP/IP到上面的HTTP,FTP什么的都有

这就是一个生成IP头部校验值的一个算法,用于检测得到的IP帧信息是否有错。就是把一块内存加加减减的弄成一个数,传到另一端时同样这样处理一下看是否相同,有必要研究这个吗?

CreateIpHeadCrc不看这个函数名根本不知道这代码是干吗的