2. Evolution from RFC 3489 (RFC 3489からの進化)
STUNは当初、RFC 3489 [RFC3489] で定義されました。その仕様は、「クラシックSTUN (classic STUN)」と呼ばれることもあり、NATトラバーサル問題の完全なソリューションとして提示されました。そのソリューションでは、クライアントはNATの背後にいるかどうかを発見し、NATタイプを決定し、最も外側のNATの公開側でIPアドレスとポートを発見し、セッション開始プロトコル (Session Initiation Protocol, SIP) [RFC3261] などのプロトコル本体内でそのIPアドレスとポートを利用していました。しかし、RFC 3489の公開以降の経験から、クラシックSTUNは展開可能なソリューションとして十分に機能しないことが判明しました。クラシックSTUNを通じて学習したアドレスとポートは、ピアとの通信に使用できる場合もあれば、使用できない場合もありました。クラシックSTUNは、実際に機能するかどうかを発見する方法を提供しておらず、機能しない場合の救済策も提供していませんでした。さらに、クラシックSTUNのNATタイプ分類アルゴリズムは欠陥があることが判明しました。多くのNATがそこで定義されたタイプに明確に適合しなかったためです。
クラシックSTUNにはセキュリティ脆弱性もありました。特定のトポロジと制約下で、攻撃者がクライアントに不正確なマッピングアドレスを提供できる可能性があり、これは根本的に暗号化手段では解決できませんでした。この問題は本仕様にも残っていますが、STUNを利用するより完全なソリューションの使用により、これらの攻撃は現在軽減されています。
これらの理由により、本仕様はRFC 3489を廃止し、代わりにSTUNを完全なNATトラバーサルソリューションの一部として利用されるツールとして説明しています。ICE [MMUSIC-ICE] は、SIPなどのオファー/アンサー (offer/answer) [RFC3264] 方法論に基づくプロトコルの完全なNATトラバーサルソリューションです。SIP Outbound [SIP-OUTBOUND] は、SIPシグナリングのトラバーサルのための完全なソリューションであり、非常に異なる方法でSTUNを使用します。プロトコルが単独でSTUN (クラシックSTUN) をトラバーサルソリューションとして使用できる可能性はありますが、そのような使用法はここでは説明されておらず、上記の理由から強く推奨されません。
ここで説明される通信プロトコル (on-the-wire protocol) は、クラシックSTUNからわずかに変更されただけです。プロトコルは現在、UDPに加えてTCPでも実行されます。拡張性がより構造化された方法でプロトコルに追加されました。STUNをアプリケーションプロトコルと多重分離するためのマジッククッキー (magic cookie) メカニズムが、RFC 3489で定義された128ビットのトランザクションID (transaction ID) から32ビットを「盗む」ことで追加され、この変更を後方互換にできるようになりました。マッピングアドレスは、新しい排他的論理和 (exclusive-or) フォーマットを使用してエンコードされます。他にもいくつかの小さな変更があります。より完全なリストについては、第19節を参照してください。
範囲の変更により、STUNは「NAT経由のUDP単純トラバーサル (Simple Traversal of UDP through NAT)」から「NAT用セッショントラバーサルユーティリティ (Session Traversal Utilities for NAT)」に名称変更されました。頭字語はSTUNのままですが、それは誰もが覚えているすべてです。