【スタン・ターン】

STUN/TURN とは?

最終更新:
💡 外から見える住所を調べるSTUN、通信を中継するTURN

外から見えるアドレスやポートを調べるSTUNと、データを中継するTURN。ICEの接続候補と経路確認、直接通信と中継の違いを説明します。

📌 このページのポイント
STUNは住所の確認、TURNは中継STUN:外から見える住所を確認端末ASTUNサーバー問い合わせIP・ポート通信の経路の候補端末A端末B直接通信端末ATURN端末Bサーバーがデータを中継ICEは候補を交換し、使える経路を確認
役割と通信経路を分けた模式図。候補の収集と確認は、STUN失敗後にTURNを用意するだけの固定の順序ではありません。
ひよこ ひよこ
STUNとTURNは、何が違うの?
ペンギン先生 ペンギン先生
STUNには外から見える自分のIPアドレスとポートを確認する役割があるよ。TURNはサーバーを経由して相手へデータを中継する。直接通信のデータがSTUNサーバーを通る、という意味ではないんだ。
ひよこ ひよこ
外からの住所が分かれば、必ずつながる?
ペンギン先生 ペンギン先生
それだけでは足りないよ。NATやファイアウォールなどの条件で経路が使えないことがある。STUNは接続できるかを確認する処理にも使われるけれど、単独でNAT越えを完成させる万能な仕組みではないんだ。
ひよこ ひよこ
WebRTCでは、STUNの次にTURNを順番に試すの?
ペンギン先生 ペンギン先生
ICEで直接通信や中継などの候補を集め、相手と交換して、組み合わせを優先度順に確認するよ。いつもSTUNが失敗した後に初めてTURNを用意する、という固定の二段階ではないんだ。
ひよこ ひよこ
TURNを使えば、確実につながる?
ペンギン先生 ペンギン先生
中継が役立つ場面はあるけれど、利用する通信経路、認証、サーバーの容量などにも左右されるよ。中継にはデータ量に応じた帯域も必要。直接通信を優先する構成も、方針として中継だけを使う構成もあるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「STUN/TURN」って出てきたら「接続先を調べる道具と、通信の中継を使う仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Session Traversal Utilities for NAT / Traversal Using Relays around NAT」 = NAT越えのための道具 / NATの周りを中継で通る仕組み
💬 STUNはNAT越えを組み立てる道具で、それだけで接続を保証するものではありません。TURNは中継サーバーのアドレスを確保し、データを転送するための仕組みです。

参考資料

← 用語集にもどる