Page 1 of 1
Checksum Berechung bei IP-Header
Posted: 2005-06-07 23:43
by nurre
Hallo Zusammen,
ich suche zur Zeit den Alg. zur Berechnung der Checksum im IP-Header... Das Problem ist nicht die Berechnung, sondern eher was ich mit dem Ergebnis der Berechung machen muss?
Direkt vergleichen, Einer-Komplement bilder? Addieren?
Wäre schön wenn mir da jemand helfen könnte!
Schönen Abend noch...
Re: Checksum Berechung bei IP-Header
Posted: 2005-06-08 05:27
by dodolin
Du meinst, du hast die Checksumme und willst nun validieren, ob das Paket in Ordnung ist?
Re: Checksum Berechung bei IP-Header
Posted: 2005-06-08 08:11
by mydani
Code: Select all
/*
* Recalculate any IP checksum.
*/
unsigned short
svz_raw_ip_checksum (svz_uint8_t *data, int len)
{
register unsigned checksum = 0;
/*
* Calculate the 16 bit one's complement of the one's complement sum
* of all 16 bit words in the header. For computing the checksum,
* the checksum field should be zero. This checksum may be replaced in
* the future.
*/
while (len > 1)
{
/* This is the inner loop */
checksum += *data | (*(data + 1) << 8);
len -= 2;
data += 2;
}
/* Add left-over byte, if any */
if (len > 0)
checksum += *data;
/* Fold 32-bit checksum to 16 bits */
while (checksum >> 16)
checksum = (checksum & 0xffff) + (checksum >> 16);
checksum = ~checksum;
return htons ((unsigned short) checksum);
}
Add.
http://www.ietf.org/rfc/rfc791.txt
Vielen Dank!!!
Posted: 2005-06-10 10:13
by nurre
Danke für die Antworten,
ich denke die einfachste Methode ist die Summe alle 4-Byte-Wörter (in Hex) zu addieren, und wenn das FFFF ergibt (bzw. das 1er Komplement 0000) dann ist der Header korrekt?!
Was meint ihr?