5. Kontext-Identifikatoren
Der in diesem Dokument definierte Mechanismus für IP-Proxying in HTTP ermöglicht es zukünftigen Erweiterungen, HTTP-Datagramme auszutauschen, die eine andere Semantik als IP-Nutzlasten haben. Einige dieser Erweiterungen können IP-Nutzlasten mit zusätzlichen Daten erweitern oder IP-Header-Felder komprimieren, während andere Daten austauschen können, die vollständig von IP-Nutzlasten getrennt sind. Um dies zu erreichen, beginnen alle HTTP-Datagramme, die mit IP-Proxying-Anfragestreams verbunden sind, mit einem Kontext-ID-Feld (Context ID); siehe Abschnitt 6.
Kontext-IDs sind 62-Bit-Ganzzahlen (0 bis 2^62-1). Kontext-IDs werden als Ganzzahlen variabler Länge codiert; siehe Abschnitt 16 von QUIC. Der Kontext-ID-Wert 0 ist für IP-Nutzlasten reserviert, während Werte ungleich Null dynamisch zugewiesen werden. Gerade Kontext-IDs ungleich Null werden vom Client zugewiesen, und ungerade Kontext-IDs werden vom Proxy zugewiesen. Der Kontext-ID-Namensraum ist an eine bestimmte HTTP-Anfrage gebunden; es ist möglich, dass eine Kontext-ID mit demselben numerischen Wert gleichzeitig in verschiedenen Anfragen zugewiesen wird, möglicherweise mit unterschiedlicher Semantik. Kontext-IDs DÜRFEN NICHT innerhalb einer bestimmten HTTP-Anfrage neu zugewiesen werden, KÖNNEN aber in beliebiger Reihenfolge zugewiesen werden. Die Einschränkungen der Kontext-ID-Zuweisung auf die Verwendung von geraden und ungeraden Kontext-IDs bestehen, um die Notwendigkeit einer Synchronisation zwischen Endpunkten zu vermeiden. Sobald jedoch eine Kontext-ID zugewiesen wurde, gelten diese Einschränkungen nicht mehr für die Verwendung der Kontext-ID; sie kann sowohl vom Client als auch vom IP-Proxy verwendet werden, unabhängig davon, welcher Endpunkt sie ursprünglich zugewiesen hat.
Registrierung ist die Aktion, durch die ein Endpunkt seinen Peer über die Semantik und das Format einer bestimmten Kontext-ID informiert. Dieses Dokument definiert nicht, wie die Registrierung erfolgt. Zukünftige Erweiterungen KÖNNEN HTTP-Headerfelder oder Kapseln verwenden, um Kontext-IDs zu registrieren. Abhängig von der verwendeten Methode ist es möglich, dass Datagramme mit Kontext-IDs empfangen werden, die noch nicht registriert wurden. Dies kann beispielsweise auf eine Neuordnung des Pakets, das das Datagramm enthält, und des Pakets, das die Registrierungsnachricht enthält, während der Übertragung zurückzuführen sein.