3. Overview of Operation (Funktionsübersicht)
Dieser Abschnitt ist nur beschreibend.
STUN ist ein Client-Server-Protokoll. Ein Client sendet Anfragen an Server, und Server senden Antworten zurück. Es gibt zwei Arten von Transaktionen: Anfrage/Antwort-Transaktionen (request/response transactions) und Anzeige-Transaktionen (indication transactions).
Alle STUN-Nachrichten bestehen aus einem 20-Byte-Header, gefolgt von null oder mehr Attributen (Attributes). Der Header enthält einen STUN-Nachrichtentyp, ein Magic Cookie, eine Transaktions-ID (transaction ID) und die Nachrichtenlänge.
STUN-Attribute werden im Type-Length-Value (TLV) Format kodiert, wobei die Länge kein Padding einschließt.
STUN definiert ein einzelnes Anfrage/Antwort-Paar. Die Binding-Anfrage (Binding request) wird von einem Client an einen Server gesendet. Wenn die Binding-Anfrage beim Server ankommt, kann sie ein oder mehrere NATs durchlaufen haben. Infolgedessen wird die Quelltransportadresse (Quell-IP-Adresse und Quellport) der vom Server empfangenen Anfrage die vom NAT zugewiesene öffentliche IP-Adresse und der Port sein. Der Server kopiert diese Quelltransportadresse in ein STUN-Attribut in der Binding-Antwort (Binding response) und sendet die Antwort zurück an den Client. Der Client untersucht das STUN-Attribut in der Binding-Antwort und lernt daraus seine reflexive Transportadresse (reflexive transport address).
STUN bietet zwei grundlegende Authentifizierungs- und Nachrichtenintegritätsmechanismen. Der erste bietet Nachrichtenintegrität basierend auf einem gemeinsamen Geheimnis (shared secret). Der zweite bietet Nachrichtenintegrität und Authentifizierung basierend auf Benutzername und Passwort. Beide Mechanismen verwenden HMAC-SHA1.
STUN definiert auch ein FINGERPRINT-Attribut, das verwendet werden kann, um STUN-Nachrichten von anderen Protokollen zu unterscheiden, die auf derselben Transportadresse gemultiplext sind.