Forum: PC-Programmierung Doppelte Checksumme in UDP- /MAC-Frame notwendig?


von unknown (Gast)


Lesenswert?

Hallo, ich habe da ein Verständnisproblem. Wenn ich eine UDP oder TCP 
Nachricht übertrage beinhaltet der jeweilige Frame eine Checksumme. Wenn 
diese aber in einen MAC-Frame eingebettet sind enhält der MAC-Frame an 
sich ja schon eine Checksumme die scheinbar über alle Daten (Abgesehen 
von der Präambel) arbeitet. Warum wird hier eine doppelte Prüfung 
vorgenommen, oder kann die Checksumme in diesem Fall für UDP/ TCP Frames 
deaktiviert werden?
Evt. sollen die Daten weiter übertragen werden und benötigen dafür noch 
eine zusätzliche Sicherheit?

Grüße!

von lux. (Gast)


Lesenswert?

Da kommt noch was dazu. Der IP-Header hat noch ein Checksumme, die aber 
nur über den Header selbst gerechnet ist.
Das ganze rührt daher, dass IP-Pakete nicht zwingend über Ethernet 
laufen und ggf. bei einer Übertragung über das Internet Streckenweise 
gar nicht (adäquat) Checksummen-Geschützt sind. Man will sich also nicht 
auf die Fehlererkennung von niederen Schichten verlassen.
Abgesehen schützt die 32bit-CRC von Ethernet bei massiv schlechter 
Übertragungsqualität wesentlich besser vor falschen Daten. Die Idee 
dabei ist wohl lieber keine Daten als falsche Daten zu erhalten.

von Daniel A. (daniel-a)


Lesenswert?

unknown schrieb:
> kann die Checksumme in diesem Fall für UDP/ TCP Frames deaktiviert
> werden?

Bei UDP schon, bei TCP nicht.

https://www.ietf.org/rfc/rfc768.txt
> If the computed  checksum  is zero,  it is transmitted  as all ones
> (the equivalent  in one's complement  arithmetic).
>   An all zero  transmitted checksum  value means that the
> transmitter  generated  no checksum  (for debugging
> or for higher level protocols that don't care).

von Rolf M. (rmagnus)


Lesenswert?

lux. schrieb:
> Das ganze rührt daher, dass IP-Pakete nicht zwingend über Ethernet
> laufen und ggf. bei einer Übertragung über das Internet Streckenweise
> gar nicht (adäquat) Checksummen-Geschützt sind.

Und umgekehrt laufen über Ethernet nicht zwingend IP-Pakete. 
Ursprünglich waren da andere Protokolle üblich.

von EcmSpy (Gast)


Lesenswert?

unknown schrieb:
> Wenn ich eine UDP oder TCP
> Nachricht übertrage beinhaltet der jeweilige Frame eine Checksumme. Wenn
> diese aber in einen MAC-Frame eingebettet sind enhält der MAC-Frame an
> sich ja schon eine Checksumme die scheinbar über alle Daten (Abgesehen
> von der Präambel) arbeitet.

Nur Frames, als Layer 2 PDU, enthalten eine Checksum über den gesamten 
Frame. Bezugnehmend auf das OSI Schichtenmodell ist es Aufgabe des Layer 
2, die fehlerfreie Zustellung eines Frames sicher zu stellen, und 
benötigt deshalb irgendein Kontrollmittel.

Packets und Segments aus den höheren Schichten enthalten keine 
Prüfsummen über eingekapselte Daten, sondern nur für die jeweiligen 
Header.

von unknown (Gast)


Lesenswert?

>Nur Frames, als Layer 2 PDU, enthalten eine Checksum über den gesamten
>Frame. Bezugnehmend auf das OSI Schichtenmodell ist es Aufgabe des Layer
>2, die fehlerfreie Zustellung eines Frames sicher zu stellen, und
>benötigt deshalb irgendein Kontrollmittel.

Ich hätte erwartet dass der MAC-Frame mit seinen 4 Byte CRC mindestens 
genauso verlässlich ist wie der UDP mit seinen 2 Byte CRC. Zumal der 
Rest der MAC-Frame Daten im Vergleich zum Payload/ den UDP-Daten eher 
gering ist.

von unknown (Gast)


Lesenswert?

Alles klar, der Nachvollziehbarkeit auf welchem Layer der Fehler 
eingetreten ist scheint hier ebenfalls eine Rolle zu spielen. Danke für 
die Hilfe!

von (prx) A. K. (prx)


Lesenswert?

unknown schrieb:
> genauso verlässlich ist wie der UDP mit seinen 2 Byte CRC.

Die Checksums innerhalb vom IP sind keine CRC.
Die UDP Checksum kann man auch weglassen (=0).

von Daniel A. (daniel-a)


Lesenswert?

A. K. schrieb:
> Die Checksums innerhalb vom IP sind keine CRC.

Hier redet doch niemand von der IP checksumme (die nur den IP Header 
abdeckt). Hier wird über die Checksumme von UDP (die in der tat 
ebenfalls keine CRC ist) und die 32bit Checksumme von Ethernet (die 
tatsächlich eine CRC ist) diskutiert.

Aber wenn wir schonmal bei IP sind, dort frage ich mich ernsthaft warum 
man IP mit den UDP & TCP Pseudoheadern nochmal in deren Checksumme 
einfliessen lässt. Das macht mir bei meinem TCP/IP stack die 
Schichtenarchitektur kaputt. Mit IPv6 wurde das nochmal verschlimmert, 
weil dort andere Felder in den Pseudoheadern sind, statt die gleichen 
oder keine.

> Die UDP Checksum kann man auch weglassen (=0).

Hab ich auch schon geschrieben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.