TCP校验和计算的问题
PTCPData(PIP_HEADER pIpHeader,PTCP_HEADER pTcpHeader)
{
WORD checksum,checksumo;
WORD w1,w2;
BYTE *pdata=NULL;
PSDHEADER AddHeader;
AddHeader.saddr = (DWORD)pIpHeader->SourceIp;
AddHeader.daddr = (DWORD)pIpHeader->DestinationIp;
AddHeader.ptcl = pIpHeader->Protocol;
AddHeader.tcpl = pIpHeader->DatagramLength - pIpHeader->HeaderLength*4;
AddHeader.mbz = 0;
w1 = CheckSum((USHORT*)&AddHeader,sizeof(PSDHEADER));
checksum = pTcpHeader->CheckSum ;
pTcpHeader->CheckSum = 0;
w2 = CheckSum((USHORT*)pTcpHeader,AddHeader.tcpl);
checksumo = ~((~w1)+(~w2));
return 0;
}
计算出的校验和 checksumo 和 原来的校验和checksum
怎么会不一致