14. Nuovi attributi STUN (New STUN Attributes)
Questa estensione STUN definisce i seguenti nuovi attributi:
0x000C: CHANNEL-NUMBER0x000D: LIFETIME0x0010: Riservato (era BANDWIDTH)0x0012: XOR-PEER-ADDRESS0x0013: DATA0x0016: XOR-RELAYED-ADDRESS0x0018: EVEN-PORT0x0019: REQUESTED-TRANSPORT0x001A: DONT-FRAGMENT0x0021: Riservato (era TIMER-VAL)0x0022: RESERVATION-TOKEN
Alcuni di questi attributi hanno lunghezze che non sono multipli di 4. Secondo le regole di STUN, qualsiasi attributo la cui lunghezza non è un multiplo di 4 byte DEVE (MUST) essere immediatamente seguito da 1 a 3 byte di riempimento per garantire che l'attributo successivo (se presente) inizi su un confine di 4 byte (vedere [RFC5389]).
14.1. CHANNEL-NUMBER
L'attributo CHANNEL-NUMBER contiene il numero di canale. La parte valore di questo attributo è lunga 4 byte e consiste in un intero senza segno a 16 bit seguito da un campo RFFU (Reserved For Future Use, Riservato per Uso Futuro) di due ottetti, che DEVE (MUST) essere impostato a 0 in trasmissione e DEVE (MUST) essere ignorato in ricezione.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Channel Number | RFFU = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
14.2. LIFETIME
L'attributo LIFETIME rappresenta la durata per la quale il server manterrà un'allocazione in assenza di un aggiornamento. La parte valore di questo attributo è lunga 4 byte e consiste in un valore integrale senza segno a 32 bit che rappresenta il numero di secondi rimanenti fino alla scadenza.
14.3. XOR-PEER-ADDRESS
Il XOR-PEER-ADDRESS specifica l'indirizzo e la porta del peer come visti dal server TURN (ad esempio, l'indirizzo di trasporto riflesso dal server del peer se il peer è dietro un NAT). È codificato nello stesso modo di XOR-MAPPED-ADDRESS [RFC5389].
14.4. DATA
L'attributo DATA è presente in tutte le indicazioni Send e Data. La parte valore di questo attributo è di lunghezza variabile e consiste nei dati dell'applicazione (cioè, i dati che seguirebbero immediatamente l'intestazione UDP se i dati fossero inviati direttamente tra il client e il peer). Se la lunghezza di questo attributo non è un multiplo di 4, allora deve essere aggiunto un riempimento dopo questo attributo.
14.5. XOR-RELAYED-ADDRESS
Il XOR-RELAYED-ADDRESS è presente nelle risposte Allocate. Specifica l'indirizzo e la porta che il server ha allocato al client. È codificato nello stesso modo di XOR-MAPPED-ADDRESS [RFC5389].
14.6. EVEN-PORT
Questo attributo consente al client di richiedere che la porta nell'indirizzo di trasporto inoltrato sia pari e (facoltativamente) che il server riservi il numero di porta successivo più alto. La parte valore di questo attributo è lunga 1 byte. Il suo formato è:
0
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|R| RFFU |
+-+-+-+-+-+-+-+-+
Il valore contiene un singolo flag di 1 bit:
- R: Se 1, al server viene richiesto di riservare il numero di porta successivo più alto (sullo stesso indirizzo IP) per un'allocazione successiva. Se 0, non viene richiesta tale riserva.
Gli altri 7 bit del valore dell'attributo devono essere impostati a zero in trasmissione e ignorati in ricezione.
Poiché la lunghezza di questo attributo non è un multiplo di 4, il riempimento deve seguire immediatamente questo attributo.
14.7. REQUESTED-TRANSPORT
Questo attributo è utilizzato dal client per richiedere un protocollo di trasporto specifico per l'indirizzo di trasporto allocato. Il valore di questo attributo è di 4 byte con il seguente formato:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Protocol | RFFU |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Il campo Protocol specifica il protocollo desiderato. I punti di codice utilizzati in questo campo sono presi da quelli consentiti nel campo Protocol nell'intestazione IPv4 e nel campo NextHeader nell'intestazione IPv6 [Protocol-Numbers]. Questa specifica consente solo l'uso del punto di codice 17 (User Datagram Protocol, Protocollo Datagramma Utente).
Il campo RFFU DEVE (MUST) essere impostato a zero in trasmissione e DEVE (MUST) essere ignorato in ricezione. È riservato per uso futuro.
14.8. DONT-FRAGMENT
Questo attributo è utilizzato dal client per richiedere che il server imposti il bit DF (Don't Fragment, Non Frammentare) nell'intestazione IP quando inoltra i dati dell'applicazione al peer. Questo attributo non ha parte valore e quindi il campo lunghezza attributo è 0.
14.9. RESERVATION-TOKEN
L'attributo RESERVATION-TOKEN contiene un token che identifica in modo univoco un indirizzo di trasporto inoltrato tenuto in riserva dal server. Il server include questo attributo in una risposta di successo per informare il client del token, e il client include questo attributo in una richiesta Allocate successiva per richiedere al server di utilizzare quell'indirizzo di trasporto inoltrato per l'allocazione.
Il valore dell'attributo è di 8 byte e contiene il valore del token.