3. Overview of Operation (Panoramica delle operazioni)
Questa sezione è solo descrittiva.
STUN è un protocollo client-server. Un client invia richieste ai server e i server inviano risposte indietro. Esistono due tipi di transazioni: transazioni richiesta/risposta (request/response transactions) e transazioni di indicazione (indication transactions).
Tutti i messaggi STUN sono costituiti da un'intestazione di 20 byte seguita da zero o più attributi (Attributes). L'intestazione contiene un tipo di messaggio STUN, un cookie magico (magic cookie), un ID di transazione (transaction ID) e la lunghezza del messaggio.
Gli attributi STUN sono codificati nel formato Tipo-Lunghezza-Valore (Type-Length-Value, TLV), dove la lunghezza non include alcun riempimento.
STUN definisce una singola coppia richiesta/risposta. La richiesta di binding (Binding request) viene inviata da un client a un server. Quando la richiesta di binding arriva al server, potrebbe aver attraversato uno o più NAT. Di conseguenza, l'indirizzo di trasporto di origine (indirizzo IP di origine e porta di origine) della richiesta ricevuta dal server sarà l'indirizzo IP pubblico e la porta allocati dal NAT. Il server copia questo indirizzo di trasporto di origine in un attributo STUN nella risposta di binding (Binding response) e invia la risposta al client. Il client esamina l'attributo STUN nella risposta di binding e apprende da esso il suo indirizzo di trasporto riflessivo (reflexive transport address).
STUN fornisce due meccanismi di base di autenticazione e integrità dei messaggi. Il primo fornisce l'integrità del messaggio basata su un segreto condiviso (shared secret). Il secondo fornisce l'integrità del messaggio e l'autenticazione basate su nome utente e password. Entrambi i meccanismi utilizzano HMAC-SHA1.
STUN definisce anche un attributo FINGERPRINT che può essere utilizzato per distinguere i messaggi STUN da altri protocolli multiplexati sullo stesso indirizzo di trasporto.