Checksum TCP
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.