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...
Checksum Berechung bei IP-Header
-
- Posts: 3840
- Joined: 2003-01-21 01:59
- Location: Sinsheim/Karlsruhe
Re: Checksum Berechung bei IP-Header
Du meinst, du hast die Checksumme und willst nun validieren, ob das Paket in Ordnung ist?
-
- Posts: 152
- Joined: 2003-08-18 19:34
Re: Checksum Berechung bei IP-Header
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);
}
http://www.ietf.org/rfc/rfc791.txt
-
- Posts: 10
- Joined: 2003-06-22 15:39
Vielen Dank!!!
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?
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?