videocalling
Illustration of STUN(NATのためのセッショントラバーサルユーティリティ) in video calling

STUN(NATのためのセッショントラバーサルユーティリティ)

プロトコル

デバイスがパブリックIPアドレスを発見するのを支援するプロトコル。

STUNとは?

STUN(Session Traversal Utilities for NAT)は、NATルーターの背後にあるデバイスがパブリックIPアドレスを発見し、直接P2P接続を確立できるかどうかを判断するのを支援するネットワークプロトコルです。STUNはインターネット上の鏡のようなもので、デバイスがSTUNサーバーに「私のパブリックIPは何ですか?」と尋ねると、サーバーが見えているものを返答します。

STUNはメディアやデータをリレーしません。WebRTCクライアントがネットワーク構成を学ぶための発見サービスに過ぎません。

STUNの動作

  1. STUNリクエストの送信:ブラウザがパブリックSTUNサーバーにバインディングリクエストを送信
  2. STUNサーバーが観察して応答:ルーターのパブリックIPとNAT変換されたポートを返信
  3. クライアントがパブリックアドレスを学習:ICE用語で「サーバーリフレクシブ候補」となる
  4. 候補の交換と接続の試行:両ピアのルーターが接続を許可すれば(75-85%の確率)、リレーなしの直接WebRTC接続を確立

STUNが失敗する場合

  • 対称NAT:宛先ごとに異なるポートマッピングを作成し、STUNで発見したアドレスがピア接続に使用不可
  • 制限的なファイアウォール:すべての着信UDPトラフィックをブロック
  • 二重NAT:複数層のNATの背後にいる場合、成功率が低下

STUNとTURNの比較

  • STUN:パブリックIPの発見を支援。データのリレーなし。運用コスト無料。75-85%の確率で機能
  • TURN:STUNが失敗した場合にすべてのメディアをリレー。高コスト(帯域幅費用)。接続の15-25%に必要。レイテンシが増加