IPv4 Header Checksum

#0
19.05.2003, 08:53
Member

Beiträge: 14
#1 Hallo zusammen,

ich bin auf der verzweifelten Suche nach Informationen zur Header Checksum Berechnung. Meines Wissens nach wird die Checksum über Einer-Komplemente berechnet.
Wer kennt sich damit aus? Wer kann es auch für Laien erklären?
Bin für jede Info dankbar.

Leider waren Recherchen im Internet nicht sehr erfolgreich.

Danke und viele Grüsse,
Aliena
Seitenanfang Seitenende
19.05.2003, 11:01
Ehrenmitglied
Avatar Robert

Beiträge: 2283
#2 Addition aller 16-Bit-Halbwörter bei Ihrer Ankunft und nimmt das Komplement als Ergebnis. Dem liegt die Annahme zu Grunden, daß die Checksumme bei Ankunft 0 ist. Checksumme wird bei jedem Router neu berechnet.

Robert
__________
powered by http://different-thinking.de - Netze, Protokolle, Sicherheit, ...
Seitenanfang Seitenende
19.05.2003, 11:08
Member

Themenstarter

Beiträge: 14
#3 Danke,
haste auch nen Beispiel?
So ganz verständlich ist das für nen Laien nämlich nicht. ;)

Aliena
Seitenanfang Seitenende
19.05.2003, 15:13
Member
Avatar Xeper

Beiträge: 5291
#4 Ein IP-Datengramm besteht aus einem Header und den zu übertragenden Daten. Der Header hat einen festen 20Byte großen Teil, gefolgt von einem optionalen Teil variabler Länge. Der Header umfaßt alle Informationen, die notwendig sind, um das Datengramm dem Emfpänger zuzustellen. Ein Datengramm kann theoretisch maximal 64 KByte groß sein, in der Praxis liegt die Größe ungefähr bei 1500 Byte (das hängt mit der maximalen Rahmengröße des Ethernet-Protokolls zusammen).

Header Checksum:

Dieses Feld enthält die Prüfsumme der Felder im IP-Header. Die Nutzdaten des IP Datengramms werden aus Effiziensgründen nicht mit geprüft. Diese Prüfung findet beim Empfänger innerhalb des Transportprotokolls statt. Die Prüfsumme muß von jedem Netzknoten der durchlaufen wird, neu berechnet werden, da der IP-Header durch das Feld 'Time-To-Live' sich bei jeder Teilstrecke verändert. Aus diesem Grund ist auch eine sehr Effiziente Bildung der Prüfsumme wichtig. Als Prüfsumme wird das 1er-Komplement der Summe aller 16-Bit-Halbwörter der zu überprüfenden Daten verwendet. Zum Tweck dieses Algorithmus wird angenommen, dasß die Prüfsumme zu Beginn der Berechnung Null ist.

Edit: Ähm, dies gilt natürlich nur für das IPv4 Protokoll.
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Dieser Beitrag wurde am 19.05.2003 um 15:13 Uhr von Xeper editiert.
Seitenanfang Seitenende
20.05.2003, 08:43
Member

Themenstarter

Beiträge: 14
#5 Das ist das, was man im Internet findet. Ich brauche aber den genauen Berechnungsweg. Ich müsste es an der Tafel vorrechnen können.
Den Aufbau des Headers kenne ich.
Ich weiß, in IPv6 entfällt Header Checksum.
Seitenanfang Seitenende
20.05.2003, 11:00
Member
Avatar Xeper

Beiträge: 5291
#6 Was willste da Rechnen?? Die 16-Bit-Halbwörter der zu überprüfenden Daten ;) Kann man sowas überhaupt bildlich darstellen?? Naja ich hab auf jedenfall kein Plan wie man das darstellen soll, sorry.
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Seitenanfang Seitenende
20.05.2003, 13:21
Ehrenmitglied
Avatar Robert

Beiträge: 2283
#7 Naja, also Bits können den Wert 0 oder 1 haben - somit kann ich da was rechnen, wenn die erste Zeile des Header also so aussieht:

10100101010101001010010110101100, dann rechnest Du:

1010010101010100 + 1010010110101100

Dazu addierst Du dann die anderen Halbwörter!


Robert
__________
powered by http://different-thinking.de - Netze, Protokolle, Sicherheit, ...
Seitenanfang Seitenende
20.05.2003, 13:25
Member

Themenstarter

Beiträge: 14
#8 OK. Das sollte helfen. Ich werd's mal antesten.
Danke!
Seitenanfang Seitenende
20.05.2003, 13:30
Member
Avatar Xeper

Beiträge: 5291
#9 @Aliena

Ich habe gerade mit jemanden gesprochen der Beruflich mit sowas zu tun hat.
Ich gebe den Chat mal hier unkomentiert weiter:

13:22 <chefin> also
13:22 <chefin> mal nachdenken
13:23 <chefin> meinst er muss binär dazu auch erklären
13:23 <chefin> oder kann man davon ausgehen das das binärsystem bekannt ist
13:24 <chefin> hm
13:24 <chefin> pass auf er soll vom dezimalsystem ausgehen
13:24 <chefin> 31,27,45,13,61 als beispielzahlen
13:25 <chefin> die checksumme darf auch nur 2 stellig werden
13:25 <chefin> und dann soll er das komplimentär anhand des dezimalen
systems erklären
13:25 <chefin> 3 + 7 = 1013:25 <chefin> 7 ist also komplimentär zu 3
13:26 <chefin> und zum schluss soll er das ganze aufs binär reduzieren
13:26 <chefin> also obige 5 dezimalzahlen als binärzahlen benutzen
13:26 <Xeper> so wird die Checksum zusammen gewürfelt?
13:27 <Xeper> kommt die nicht aus den daten selbst?
13:27 <chefin> doch
13:27 <chefin> checksumme aus obigen 5 zahlen wäre 31+27+45+13+61 = 177
13:28 <chefin> checksumem also 22
13:28 <chefin> alle überträge werden ignoriert und vom endergebniss das
komplimentär gebildet
13:29 <chefin> chechsumme ist eine Methode, sie wird unabhängig vom
zahlensystem immer das selbe ergebniss bringen
3:31<chefin> immer auf 9 auffüllen
13:32 <chefin> also immer auf die höchste ziffer des zahlensystems kommen
13:32 <chefin> bei binär gibts eben nur 2


Vielleicht kannst du damit was anfangen.
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Dieser Beitrag wurde am 20.05.2003 um 13:33 Uhr von Xeper editiert.
Seitenanfang Seitenende
22.05.2003, 07:58
Member

Themenstarter

Beiträge: 14
#10 Danke.
Bin für alle Infos dankbar.
Werde das Ganze mal in Ruhe ausprobieren.
Binär brauch ich nicht zu erklären. Ist für nen Informatiklehrer, der mal wissen wollte, wie das geht. Kann ich vielleicht ne bessere Note abfassen. ;)

Gruß, Aliena
Seitenanfang Seitenende
03.06.2003, 10:21
Member

Themenstarter

Beiträge: 14
#11 Moin!
So weit, so gut!

Jetzt hab ich noch ein Problem, und zwar...
In verschiedenen Quellen findet man auch verschiedene Angaben.
1. So habe ich Texte gefunden, in denen steht, dass die Einer-Komplemente der 16-Bit-Wörter addiert werden und dann das Einer-Koplement dieser Summe die Checksum bildet.
2. In anderen Texte wird behauptet, dass nur die 16-Bit-Wörter addiert werden und dann das Einer-Komplement der Summe als Checksum dient.

Die Beschreibung bei 1. war ziemlich genau und ich fand sie überzeugender, aber bei Infos aus dem Internet kann man sich ja nie sicher sein.

Hat da irgendwer wirklich Ahnung? ;)
Was ist denn nun richtig? ;)

Bitte um Hilfe.
Danke schon mal im Voraus!
Gruß,
Aliena
Seitenanfang Seitenende
03.06.2003, 10:42
Ehrenmitglied
Avatar Robert

Beiträge: 2283
#12 Also in meinem Buch steht die zweite Variante ;)

R.
__________
powered by http://different-thinking.de - Netze, Protokolle, Sicherheit, ...
Seitenanfang Seitenende
03.06.2003, 10:56
Member

Themenstarter

Beiträge: 14
#13 Ich habe mittlerweile auch folgendes gfunden:

typedef unsigned short u16;
typedef unsigned long u32;

u16 ip_sum_calc(u16 len_ip_header, u16 buff[])
{
u16 word16;
u32 sum=0;
u16 i;

// make 16 bit words out of every two adjacent 8 bit words in the packet
// and add them up
for (i=0;i<len_ip_header;i=i+2){
word16 =((buff[i]<<8)&0xFF00)+(buff[i+1]&0xFF);
sum = sum + (u32) word16;
}

// take only 16 bits out of the 32 bit sum
while (sum>>16)
sum = (sum & 0xFFFF)+(sum >> 16);

// one's complement the result
sum = ~sum;

return ((u16) sum);
}

Demnach auch Variante 2.

Danke.
Seitenanfang Seitenende
05.06.2003, 09:53
Member

Themenstarter

Beiträge: 14
#14 Moin nochmal.

Ich bin mir immer noch nicht sicher, welche Variante stimmt.
Das Problem ist, dass ich immer mehr Texte finde, in denen Variante 1 beschrieben wird.

Kann mir nicht irgendwer Klarheit verschaffen? *fleh*


Gruß, Aliena
Seitenanfang Seitenende
06.06.2003, 10:44
Member

Themenstarter

Beiträge: 14
#15 Ich habe jetzt nachvollziehbare Rechenbeispiele für Varinat 1 gefunden.
Das war's dann wohl. ;)
Seitenanfang Seitenende
Um auf dieses Thema zu ANTWORTEN
bitte erst » hier kostenlos registrieren!!

Folgende Themen könnten Dich auch interessieren: