STUN(スタン)とは | 意味や読み方など丁寧でわかりやすい用語解説
STUN(スタン)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
スタウン (スタウン)
英語表記
STUN (スタン)
用語解説
STUN (Session Traversal Utilities for NAT) は、主にNAT(Network Address Translation)環境下でのP2P(Peer-to-Peer)通信の確立を支援するためのプロトコルである。インターネットでは、限られた数のグローバルIPアドレスを有効活用するため、多くの家庭や企業ネットワークでプライベートIPアドレスが使用されている。これらのプライベートIPアドレスを持つ機器がインターネットと通信する際には、ルーターなどのNATデバイスがプライベートIPアドレスをグローバルIPアドレスに変換する。STUNは、このNATの存在によって直接的なP2P通信が困難になる問題を解決するための一助となる。
STUNの詳細な役割を理解するには、まずNATがP2P通信に与える影響を知る必要がある。家庭やオフィスのローカルネットワーク内にあるデバイスは、外部から直接アクセスできないプライベートIPアドレスを持っている。インターネット上の他のデバイスと通信する際は、ルーターがプライベートIPアドレスをインターネット上で一意なグローバルIPアドレスに変換し、さらにポート番号も変換する(ポートマッピング)。この変換処理により、複数の内部デバイスがたった一つのグローバルIPアドレスを共有してインターネットに接続できる。しかし、このNATの特性がP2P通信、例えばリアルタイム音声・ビデオ通話やオンラインゲームで問題となる。P2P通信では、インターネット上の特定の相手(ピア)と直接データを交換したいが、NATは外部からの接続要求をデフォルトでブロックするため、ピアがローカルネットワーク内の特定のデバイスに直接データを送ることができない。ルーターは、内部から外部への通信を開始した場合にのみ、その応答パケットを内部の適切なデバイスに転送する。外部から自発的に開始される接続は通常許可されない。
STUNは、この問題に対処するため、クライアントが自身のグローバルIPアドレスと、NATデバイスが使用するポートマッピングのタイプを知ることを可能にする。STUNの仕組みは比較的シンプルである。クライアントは、インターネット上に公開されているSTUNサーバーに対して特別なリクエストを送信する。このリクエストは、クライアントがどのプライベートIPアドレスとポート番号を使用しているかをSTUNサーバーに伝える。STUNサーバーは、このリクエストを受け取ると、そのリクエストがSTUNサーバーに到達した際の送信元IPアドレスとポート番号(これはNATによって変換されたクライアントのグローバルIPアドレスとポート番号に相当する)を抽出する。そして、STUNサーバーはその情報をリクエストの送信元であるクライアントに返信する。クライアントは、この応答を受け取ることで、自身のローカルネットワークの外側から見た場合のグローバルIPアドレスとポート番号を正確に知ることができる。
このグローバルIPアドレスとポート番号を知ることは、P2P通信の確立において非常に重要である。クライアントは、自分がインターネット上でどのように見えるかを知り、その情報を通信相手のピアに伝えることができる。ピアはその情報をもとに、クライアントのNATデバイスに穴を開けることを試みたり、直接接続を試みたりする。また、STUNサーバーは、クライアントが利用しているNATがどのような動作をするか、つまりNATタイプを特定する手助けもする。NATタイプには、フルコーンNAT、アドレス制限コーンNAT、ポート制限コーンNAT、シンメトリックNATなどがあり、それぞれ外部からの接続の許可の仕方が異なる。STUNサーバーは、異なるIPアドレスやポートからリクエストを送信し、その応答を分析することで、クライアントのNATがどのタイプに属するかを推測できる。
ただし、STUNには限界がある。特に、シンメトリックNATと呼ばれるタイプのNAT環境下では、STUN単独ではP2P通信を完全に確立できない場合がある。シンメトリックNATは、宛先IPアドレスとポート番号が変わると、常に異なるポートマッピングを行うため、STUNサーバーから取得したグローバルIPアドレスとポート番号が、実際にピアとの通信に使用されるものと同じになるとは限らない。このような状況では、STUNだけでは不十分であり、TURN (Traversal Using Relays around NAT) のようなリレーサーバーを経由する通信や、STUNとTURNの両方を組み合わせて最適な接続パスを確立するICE (Interactive Connectivity Establishment) などのより高度な技術が必要となる。STUNはICEプロトコルの一部として利用され、直接的なP2P接続を試みる最初のステップとして機能することが多い。STUNは、NAT環境下でのP2P通信を実現するための基本的な要素技術の一つであり、その機能はインターネットアプリケーションの開発において広く活用されている。