8.1 Prüfsummen der oberen Schicht
Jedes Transport- oder andere Protokoll der oberen Schicht, das Adressen aus dem IP-Header in seine Prüfsummenberechnung einbezieht, MUSS für die Verwendung mit IPv6 modifiziert werden, um 128-Bit-IPv6-Adressen anstelle von 32-Bit-IPv4-Adressen einzuschließen. Insbesondere zeigt die folgende Abbildung den TCP- und UDP-„Pseudo-Header (pseudo-header)" für IPv6:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Source Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Destination Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Upper-Layer Packet Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| zero | Next Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
o Wenn das IPv6-Paket einen Routing Header enthält, ist die im Pseudo-Header verwendete Destination Address die Adresse des endgültigen Ziels. Am initiierenden Knoten befindet sich diese Adresse im letzten Element des Routing Headers; am Empfänger befindet sie sich im Destination Address-Feld des IPv6-Headers.
o Der Next Header-Wert im Pseudo-Header identifiziert das Protokoll der oberen Schicht (z. B. 6 für TCP, 17 für UDP). Er unterscheidet sich vom Next Header-Wert im IPv6-Header, wenn Erweiterungsheader zwischen dem IPv6-Header und dem Header der oberen Schicht vorhanden sind.
o Die Upper-Layer Packet Length im Pseudo-Header ist die Länge des Headers und der Daten der oberen Schicht (z. B. TCP-Header plus TCP-Daten). Einige Protokolle der oberen Schicht tragen ihre eigenen Längeninformationen (z. B. das Length-Feld im UDP-Header); für solche Protokolle ist die im Pseudo-Header verwendete Länge diese Länge. Andere Protokolle (wie TCP) tragen keine eigenen Längeninformationen; in diesem Fall ist die im Pseudo-Header verwendete Länge die Payload Length des IPv6-Headers minus der Länge aller Erweiterungsheader zwischen dem IPv6-Header und dem Header der oberen Schicht.
o Im Gegensatz zu IPv4 ist die UDP-Prüfsumme nicht optional, wenn ein UDP-Paket von einem IPv6-Knoten initiiert wird. Das heißt, wann immer ein UDP-Paket initiiert wird, MUSS ein IPv6-Knoten die UDP-Prüfsumme über das Paket und den Pseudo-Header berechnen, und wenn diese Berechnung ein Ergebnis von null ergibt, MUSS sie in hexadezimal FFFF geändert werden, um in den UDP-Header eingefügt zu werden. IPv6-Empfänger MÜSSEN UDP-Pakete mit einer Prüfsumme von null verwerfen und SOLLTEN den Fehler protokollieren.
Die IPv6-Version von ICMP [ICMPv6] schließt den oben genannten Pseudo-Header in seine Prüfsummenberechnung ein; dies ist eine Änderung gegenüber der IPv4-Version von ICMP, die keinen Pseudo-Header in ihre Prüfsumme einschließt. Der Grund für die Änderung ist, ICMP vor fehlerhafter Übertragung oder Beschädigung der Felder im IPv6-Header zu schützen, auf die es sich stützt und die im Gegensatz zu IPv4 nicht durch eine Internetschicht-Prüfsumme abgedeckt sind. Das Next Header-Feld im Pseudo-Header für ICMP enthält den Wert 58, der die IPv6-Version von ICMP identifiziert.