4. Identificatori di contesto
- Identificatori di contesto
Il meccanismo per il proxying di UDP in HTTP definito in questo documento consente alle estensioni future di scambiare datagrammi HTTP che trasportano una semantica diversa dai payload UDP. Alcune di queste estensioni possono aumentare i payload UDP con dati aggiuntivi, mentre altre possono scambiare dati completamente separati dai payload UDP. Per ottenere ciò, tutti i datagrammi HTTP associati ai flussi di richiesta di proxying UDP iniziano con un campo Context ID; vedere la Sezione 5.
I Context ID sono numeri interi a 62 bit (da 0 a 2^62-1). I Context ID sono codificati come numeri interi a lunghezza variabile; vedere la Sezione 16 di [QUIC]. Il valore Context ID 0 è riservato ai payload UDP, mentre i valori diversi da zero sono allocati dinamicamente. I Context ID pari diversi da zero sono allocati dal client e i Context ID dispari sono allocati dal proxy. Lo spazio dei nomi Context ID è legato a una determinata richiesta HTTP; è possibile che un Context ID con lo stesso valore numerico sia allocato contemporaneamente in richieste distinte, potenzialmente con semantica diversa. I Context ID NON DEVONO essere riallocati all'interno di un determinato spazio dei nomi HTTP ma POSSONO essere allocati in qualsiasi ordine. Le restrizioni di allocazione del Context ID all'uso di Context ID pari e dispari esistono per evitare la necessità di sincronizzazione tra gli endpoint. Tuttavia, una volta allocato un Context ID, tali restrizioni non si applicano all'uso del Context ID; può essere utilizzato da qualsiasi client o proxy UDP, indipendentemente dall'endpoint che lo ha inizialmente allocato.
La registrazione è l'azione mediante la quale un endpoint informa il suo peer della semantica e del formato di un determinato Context ID. Questo documento non definisce come avviene la registrazione. Le estensioni future POSSONO utilizzare campi di intestazione HTTP o capsule per registrare i Context ID. A seconda del metodo utilizzato, è possibile che vengano ricevuti datagrammi con Context ID che non sono stati ancora registrati. Ad esempio, ciò può essere dovuto al riordino del pacchetto contenente il datagramma e del pacchetto contenente il messaggio di registrazione durante la trasmissione.