Zum Hauptinhalt springen

14. Neue STUN-Attribute (New STUN Attributes)

Diese STUN-Erweiterung definiert die folgenden neuen Attribute:

  • 0x000C: CHANNEL-NUMBER
  • 0x000D: LIFETIME
  • 0x0010: Reserviert (war BANDWIDTH)
  • 0x0012: XOR-PEER-ADDRESS
  • 0x0013: DATA
  • 0x0016: XOR-RELAYED-ADDRESS
  • 0x0018: EVEN-PORT
  • 0x0019: REQUESTED-TRANSPORT
  • 0x001A: DONT-FRAGMENT
  • 0x0021: Reserviert (war TIMER-VAL)
  • 0x0022: RESERVATION-TOKEN

Einige dieser Attribute haben Längen, die keine Vielfachen von 4 sind. Nach den Regeln von STUN MUSS (MUST) jedem Attribut, dessen Länge kein Vielfaches von 4 Bytes ist, unmittelbar 1 bis 3 Auffüllbytes folgen, um sicherzustellen, dass das nächste Attribut (falls vorhanden) an einer 4-Byte-Grenze beginnen würde (siehe [RFC5389]).

14.1. CHANNEL-NUMBER

Das CHANNEL-NUMBER-Attribut enthält die Kanalnummer. Der Wertteil dieses Attributs ist 4 Bytes lang und besteht aus einer vorzeichenlosen 16-Bit-Ganzzahl, gefolgt von einem Zwei-Oktett-RFFU-Feld (Reserved For Future Use, Für zukünftige Verwendung reserviert), das bei der Übertragung auf 0 gesetzt werden MUSS (MUST) und beim Empfang ignoriert werden MUSS (MUST).

     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

Das LIFETIME-Attribut repräsentiert die Dauer, für die der Server eine Allokation ohne Auffrischung aufrechterhalten wird. Der Wertteil dieses Attributs ist 4 Bytes lang und besteht aus einem vorzeichenlosen integralen 32-Bit-Wert, der die Anzahl der verbleibenden Sekunden bis zum Ablauf darstellt.

14.3. XOR-PEER-ADDRESS

Die XOR-PEER-ADDRESS gibt die Adresse und den Port des Peers an, wie sie vom TURN-Server gesehen werden (z. B. die Server-reflexive Transportadresse des Peers, wenn sich der Peer hinter einem NAT befindet). Sie wird auf die gleiche Weise wie XOR-MAPPED-ADDRESS [RFC5389] kodiert.

14.4. DATA

Das DATA-Attribut ist in allen Send- und Data-Indikationen vorhanden. Der Wertteil dieses Attributs ist variabel lang und besteht aus den Anwendungsdaten (d. h. den Daten, die unmittelbar auf den UDP-Header folgen würden, wenn die Daten direkt zwischen Client und Peer gesendet würden). Wenn die Länge dieses Attributs kein Vielfaches von 4 ist, muss nach diesem Attribut eine Auffüllung hinzugefügt werden.

14.5. XOR-RELAYED-ADDRESS

Die XOR-RELAYED-ADDRESS ist in Allocate-Antworten vorhanden. Sie gibt die Adresse und den Port an, die der Server dem Client zugewiesen hat. Sie wird auf die gleiche Weise wie XOR-MAPPED-ADDRESS [RFC5389] kodiert.

14.6. EVEN-PORT

Dieses Attribut ermöglicht es dem Client, zu verlangen, dass der Port in der weitergeleiteten Transportadresse gerade ist, und (optional) dass der Server die nächsthöhere Portnummer reserviert. Der Wertteil dieses Attributs ist 1 Byte lang. Sein Format ist:

     0
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|R| RFFU |
+-+-+-+-+-+-+-+-+

Der Wert enthält ein einzelnes 1-Bit-Flag:

  • R: Wenn 1, wird der Server aufgefordert, die nächsthöhere Portnummer (auf derselben IP-Adresse) für eine nachfolgende Allokation zu reservieren. Wenn 0, wird keine solche Reservierung angefordert.

Die anderen 7 Bits des Attributwerts müssen bei der Übertragung auf Null gesetzt und beim Empfang ignoriert werden.

Da die Länge dieses Attributs kein Vielfaches von 4 ist, muss unmittelbar nach diesem Attribut eine Auffüllung folgen.

14.7. REQUESTED-TRANSPORT

Dieses Attribut wird vom Client verwendet, um ein spezifisches Transportprotokoll für die zugewiesene Transportadresse anzufordern. Der Wert dieses Attributs ist 4 Bytes mit dem folgenden Format:

     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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Das Protocol-Feld gibt das gewünschte Protokoll an. Die in diesem Feld verwendeten Codepunkte werden aus denen genommen, die im Protocol-Feld im IPv4-Header und im NextHeader-Feld im IPv6-Header [Protocol-Numbers] erlaubt sind. Diese Spezifikation erlaubt nur die Verwendung des Codepunkts 17 (User Datagram Protocol, Benutzerdatagrammprotokoll).

Das RFFU-Feld MUSS (MUST) bei der Übertragung auf Null gesetzt und beim Empfang ignoriert werden. Es ist für zukünftige Verwendung reserviert.

14.8. DONT-FRAGMENT

Dieses Attribut wird vom Client verwendet, um zu verlangen, dass der Server das DF-Bit (Don't Fragment, Nicht Fragmentieren) im IP-Header setzt, wenn er die Anwendungsdaten an den Peer weiterleitet. Dieses Attribut hat keinen Wertteil und daher ist das Attributlängenfeld 0.

14.9. RESERVATION-TOKEN

Das RESERVATION-TOKEN-Attribut enthält ein Token, das eine vom Server in Reserve gehaltene weitergeleitete Transportadresse eindeutig identifiziert. Der Server fügt dieses Attribut in eine Erfolgsantwort ein, um den Client über das Token zu informieren, und der Client fügt dieses Attribut in eine nachfolgende Allocate-Anfrage ein, um den Server aufzufordern, diese weitergeleitete Transportadresse für die Allokation zu verwenden.

Der Attributwert ist 8 Bytes und enthält den Token-Wert.