5. Allocations
Toutes les opérations TURN tournent autour des allocations, et tous les messages TURN sont associés à une allocation. Une allocation se compose conceptuellement des données d'état suivantes :
-
l'adresse de transport relayée
-
le 5-tuple : (adresse IP du client, port du client, adresse IP du serveur, port du serveur, protocole de transport)
-
les informations d'authentification
-
le temps avant expiration (time-to-expiry)
-
une liste de permissions
-
une liste de liaisons canal-pair
L'adresse de transport relayée est l'adresse de transport allouée par le serveur pour communiquer avec les pairs, tandis que le 5-tuple décrit le chemin de communication entre le client et le serveur. Du côté du client, le 5-tuple utilise l'adresse de transport hôte du client ; du côté du serveur, le 5-tuple utilise l'adresse de transport réfléchie par le serveur du client.
L'adresse de transport relayée et le 5-tuple doivent être uniques pour toutes les allocations, de sorte que l'un ou l'autre peut être utilisé pour identifier de manière unique l'allocation.
Les informations d'authentification (par exemple, nom d'utilisateur, mot de passe, domaine et nonce) sont utilisées à la fois pour vérifier les demandes ultérieures et pour calculer l'intégrité des messages des réponses. Les valeurs de nom d'utilisateur, de domaine et de nonce sont initialement celles utilisées dans la demande Allocate authentifiée qui a créé l'allocation, bien que le serveur puisse modifier la valeur du nonce pendant la durée de vie de l'allocation en utilisant une réponse 438 (Stale Nonce). Notez que, plutôt que de stocker le mot de passe explicitement, pour des raisons de sécurité, il peut être souhaitable pour le serveur de stocker la valeur de clé, qui est un hachage MD5 sur le nom d'utilisateur, le domaine et le mot de passe (voir [RFC5389]).
Le temps avant expiration est le temps en secondes restant jusqu'à l'expiration de l'allocation. Chaque transaction Allocate ou Refresh définit ce minuteur, qui décompte ensuite vers 0. Par défaut, chaque transaction Allocate ou Refresh réinitialise ce minuteur à la valeur de durée de vie par défaut de 600 secondes (10 minutes), mais le client peut demander une valeur différente dans les demandes Allocate et Refresh. Les allocations ne peuvent être actualisées qu'en utilisant la demande Refresh ; l'envoi de données à un pair n'actualise pas une allocation. Lorsqu'une allocation expire, les données d'état associées à l'allocation peuvent être libérées.
La liste des permissions est décrite dans la section 8 et la liste des canaux est décrite dans la section 11.