Aller au contenu principal

3. Overview of Operation (Aperçu du fonctionnement)

Cette section est uniquement descriptive.

STUN est un protocole client-serveur. Un client envoie des requêtes aux serveurs, et les serveurs renvoient des réponses. Il existe deux types de transactions : les transactions requête/réponse (request/response transactions) et les transactions d'indication (indication transactions).

Tous les messages STUN sont constitués d'un en-tête de 20 octets suivi de zéro ou plusieurs attributs (Attributes). L'en-tête contient un type de message STUN, un cookie magique (magic cookie), un ID de transaction (transaction ID) et la longueur du message.

Les attributs STUN sont encodés au format Type-Longueur-Valeur (Type-Length-Value, TLV), où la longueur n'inclut pas le remplissage.

STUN définit une seule paire requête/réponse. La requête de liaison (Binding request) est envoyée par un client à un serveur. Lorsque la requête de liaison arrive au serveur, elle peut avoir traversé un ou plusieurs NAT. En conséquence, l'adresse de transport source (adresse IP source et port source) de la requête reçue par le serveur sera l'adresse IP publique et le port alloués par le NAT. Le serveur copie cette adresse de transport source dans un attribut STUN de la réponse de liaison (Binding response) et renvoie la réponse au client. Le client examine l'attribut STUN dans la réponse de liaison et apprend son adresse de transport réflexive (reflexive transport address).

STUN fournit deux mécanismes de base d'authentification et d'intégrité de message. Le premier fournit l'intégrité du message basée sur un secret partagé (shared secret). Le second fournit l'intégrité du message et l'authentification basées sur un nom d'utilisateur et un mot de passe. Les deux mécanismes utilisent HMAC-SHA1.

STUN définit également un attribut FINGERPRINT qui peut être utilisé pour distinguer les messages STUN des autres protocoles multiplexés sur la même adresse de transport.