Checksum TCP

Aus xinux.net
Zur Navigation springen Zur Suche springen

Absender

  • Man bildet aus den 16-Bit-Wörtern ein Einerkomplement.
  • Diese Wörter werden ohne Übertrag addiert.
  • Das Ergebnis wird wieder als Einerkomplement genommen.
  • Das resultierende Einerkomplement wird im Checksum-Feld eingetragen.

Empfänger

  • Die 16-Bit-Wörter werden ein Einerkomplement genommen.
  • Diese Wörter werden ohne Übertrag addiert.
  • Das Ergebnis wird wieder als Einerkomplement genommen.
  • Das resultierende Einerkomplement wird mit dem im Header empfangenen Checksum verglichen.
  • Wenn sie stimmen werden die Daten an die oberen Schichten ausgeliefert

IPv4

32 Bit
Pseudo TCP header
Source Address
Destination Address
0 0 0 0 0 0 0 0 Proto TCP-Length
TCP Header
Source Port Destination Port
Sequence Number
Acknowledge Number
Offset Reserved Flags Window
Checksum = 0000000000000000 Urgent Pointer
Options Paddings
Data

IPv6

32 Bit
Pseudo TCP header
Source Address
Source Address
Source Address
Source Address
Destination Address
Destination Address
Destination Address
Destination Address
0 0 0 0 0 0 0 0 Proto TCP-Length
TCP Header
Source Port Destination Port
Sequence Number
Acknowledge Number
Offset Reserved Flags Window
Checksum = 0000000000000000 Urgent Pointer
Options Paddings
Data

Ausführliche Erklärung

  • Wenn wir Daten von der Anwendung erhalten, werden sie in kleinere Datenabschnitte zerlegt, da die gesamten Daten aus der Anwendung nicht direkt über das Netzwerk an den Empfänger-Host gesendet werden können.
  • Das Protokoll, das wir in der OSI-Schicht im Transportschicht verwenden, ist TCP. Nachdem die Daten aus der Anwendungsschicht in kleinere Teile zerlegt wurden, bilden diese Teile den Körper des TCP.
  • Der TCP-Header variiert normalerweise von 20 Bytes (wenn keine Bits der Optionsfelder verwendet werden) bis zu 60 Bytes (wenn alle Bits des Optionsfelds verwendet werden).
  • Er enthält Felder wie Quell- und Ziel-Portadressen, Dringlichkeitszeiger, Prüfsumme usw.
  • Die Prüfsumme des TCP wird berechnet, indem der TCP-Header, der TCP-Körper und der Pseudo-IP-Header berücksichtigt werden.
  • Nun stellt sich die Hauptfrage, wie die Prüfsumme auf den IP-Header angewendet werden kann, da IP in der Schicht unterhalb der Transportschicht ins Spiel kommt.
  • In einfachen Worten bedeutet dies, dass wir uns in der Transportschicht befinden und das IP-Datenpaket in der Netzwerkschicht erstellt wird.
  • Dann, wie können wir die Größe des IP-Headers aus der Transportschicht schätzen, da die Vermutung/Schätzung definitiv falsch wäre und somit kein Sinn darin bestünde, die Prüfsumme auf ein Feld zu berechnen, das von Anfang an falsch ist?
  • Die Fehlerüberprüfungsfähigkeit von TCP/UDP in der Transportschicht erhält Unterstützung von der Netzwerkschicht für eine ordnungsgemäße Fehlererkennung.
  • Die wichtige Konzeptanmerkung hier ist jedoch, dass wir tatsächlich nicht den IP-Header verwenden, sondern einen Teil des IP-Headers.
  • Um all diese Fehler zu überwinden und die Fehlerüberprüfungsfähigkeit zu erhöhen, verwenden wir einen Pseudo-IP-Header.
Pseudo-IP-Header
  • Der Pseudo-Header ist kein IP-Header, sondern ein Teil des IP-Headers.
  • Wir verwenden den IP-Header nicht direkt, weil im IP-Header viele Felder enthalten sind, die sich ständig ändern, wenn die Pakete im Netzwerk bewegt werden.
  • Daher wird ein Teil des IP-Headers berücksichtigt, der sich nicht ändert, wenn das IP-Paket im Netzwerk bewegt wird.
Die Felder des Pseudo-IP-Headers sind
  • IP der Quelle
  • IP des Ziels
  • TCP/UDP-Segmentlänge
  • Protokoll (Angabe des verwendeten Protokolltyps)
  • Fixierte 8 Bits
  • Die Gesamtgröße des Pseudo-Headers (12 Bytes) = IP der Quelle (32 Bits) + IP des Ziels (32 Bits) + TCP/UDP-Segmentlänge (16 Bit) + Protokoll (8 Bit) + Fixierte 8 Bits.
Ein wichtiges Konzept sollte beachtet werden
  • Dieser Pseudo-Header wird in der Transportschicht erstellt, um die Berechnung durchzuführen, und nach Abschluss der Berechnung wird der Pseudo-Header verworfen.
  • Die Prüfsumme wird dann mit der üblichen Prüfsummenmethode berechnet.
Die TCP-Prüfsumme umfasst also
  • Pseudo-IP-Header
  • TCP-Header
  • TCP-Körper
  • Nach der Berechnung der Prüfsumme unter Verwendung dieser drei Felder wird das Prüfsummenresultat in das Prüfsummenfeld des TCP-Headers eingetragen.
  • Da bereits festgestellt wurde, dass der Pseudo-Header verworfen wird und nicht an den Zielhost übertragen wird, stellt sich die Frage, wie der Zielhost überprüfen kann, ob die Daten korrekt empfangen wurden oder nicht.
  • Daher wird der Pseudo-Header erneut in der Transportschicht des Zielhosts erstellt, und dann wird die Prüfsumme in der Transportschicht des Zielhosts erneut berechnet.
  • Schließlich wird die Prüfsumme mithilfe der üblichen Prüfsummenmethode berechnet und überprüft, ob die empfangenen Daten korrekt sind oder nicht.
  • Warum ist eine doppelte Überprüfung der IP-Headerfehler erforderlich?
  • Der IP-Header wird zweimal überprüft, das erste Mal in der Transportschicht und das zweite Mal in der Netzwerkschicht.
  • Die doppelte Überprüfung gewährleistet, dass Fehler im IP-Header mit ausreichender Genauigkeit erkannt werden können.