IPv4 Header Checksum |
||
---|---|---|
#0
| ||
19.05.2003, 08:53
Member
Beiträge: 14 |
||
|
||
19.05.2003, 11:01
Ehrenmitglied
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, ... |
|
|
||
19.05.2003, 11:08
Member
Themenstarter Beiträge: 14 |
||
|
||
19.05.2003, 15:13
Member
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.
|
|
|
||
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. |
|
|
||
20.05.2003, 11:00
Member
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 |
|
|
||
20.05.2003, 13:21
Ehrenmitglied
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, ... |
|
|
||
20.05.2003, 13:25
Member
Themenstarter Beiträge: 14 |
#8
OK. Das sollte helfen. Ich werd's mal antesten.
Danke! |
|
|
||
20.05.2003, 13:30
Member
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.
|
|
|
||
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 |
|
|
||
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 |
|
|
||
03.06.2003, 10:42
Ehrenmitglied
Beiträge: 2283 |
#12
Also in meinem Buch steht die zweite Variante
R. __________ powered by http://different-thinking.de - Netze, Protokolle, Sicherheit, ... |
|
|
||
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. |
|
|
||
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 |
|
|
||
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. |
|
|
||
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