Zusammenfassung

  • Die TCP-Prüfsumme umfasst TCP-Header und Daten sowie einen konzeptionellen Pseudo-Header aus Informationen der IP-Schicht.
  • Dieser Pseudo-Header wird nicht als TCP-Inhalt übertragen, sondern an beiden Enden rekonstruiert.
  • Er erkennt bestimmte Fehler und Fehlzustellungen, ist aber weder Authentisierung noch Routennachweis.

Ein TCP-Segment scheint mit den Ports zu beginnen. Für die Prüfsumme zählt jedoch auch der Kontext der IP-Schicht. Der Sender nimmt Quell- und Zieladresse, Protokollkennung und TCP-Länge in die Berechnung auf. Der Empfänger stellt dieselben Werte wieder her und prüft damit das Ergebnis.

Für IPv4 beschreibt RFC 793 einen 96 Bit langen Pseudo-Header: beide Adressen, ein Nullbyte, die IP-Protokollnummer und die berechnete TCP-Länge. Diese Angaben gehören bereits zum IP-Kontext. TCP kopiert sie deshalb nicht in das Segment, sondern erhält sie über die Schnittstelle zwischen den Schichten.

Damit wird eine konkrete Beweisgrenze erweitert. Eine Prüfsumme nur über TCP-Bytes könnte unverändert bleiben, wenn sich die Adressen oder die Protokollkennung des umgebenden Pakets ändern. Die zusätzlichen Angaben machen manche Beschädigungen und Fehlzustellungen sichtbar, die sonst unentdeckt blieben.

Berechnet wird die Einerkomplement-Summe von 16-Bit-Wörtern und anschließend deren Einerkomplement. Während der Berechnung gilt das Prüfsummenfeld als null. Bei einer ungeraden Zahl abgedeckter Oktette wird rechts nur für das letzte Wort ein Nulloktett ergänzt; es wird nicht übertragen. Die TCP-Länge zählt TCP-Header und TCP-Daten, nicht die zwölf konzeptionellen Oktette des IPv4-Pseudo-Headers.

RFC 9293 behält dieses Verfahren bei. Der Sender muss die Prüfsumme erzeugen, der Empfänger muss sie prüfen. Jede darunterliegende Protokollschicht, die TCP unterstützt, muss Adressen, Protokollidentität und eine Möglichkeit zur Bestimmung der TCP-Länge bereitstellen.

Der IPv6-Pseudo-Header ist 320 Bit lang. Er enthält IPv6-Quell- und Zieladresse, die Länge des Pakets der oberen Schicht, drei Nullbytes und einen Next-Header-Wert für TCP. Bei Erweiterungs-Headern zählt der Wert, der TCP am Ende der Kette identifiziert, nicht zwingend der unmittelbar folgende Wert im festen IPv6-Header. Bei Source Routing werden ursprüngliche Quelle und endgültiges Ziel verwendet, nicht vorübergehende Zwischenadressen.

Eine gültige Prüfsumme belegt nur die Übereinstimmung der rekonstruierten abgedeckten Wörter. Sie authentisiert weder den Sender noch eine Berechtigung oder den eingeschlagenen Weg. Ein Angreifer, der den Verkehr ändern und die Summe neu berechnen kann, wird dadurch nicht aufgehalten. Der Pseudo-Header ist daher kein versteckter Drahtinhalt, sondern eine Vereinbarung zwischen Schichten.

Quellen