TURN(ターン)とは | 意味や読み方など丁寧でわかりやすい用語解説
TURN(ターン)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
ターン (ターン)
英語表記
TURN (ターン)
用語解説
TURNとは、ネットワークアドレス変換(NAT: Network Address Translation)を伴う環境下で、2つの異なるネットワーク上のエンドポイント間で直接通信(P2P通信)ができない場合に、中継サーバーとして機能する技術である。具体的には、UDP(User Datagram Protocol)通信のリレー(中継)を提供するプロトコルであり、特にリアルタイム通信アプリケーションにおいて不可欠な役割を果たす。STUN(Session Traversal Utilities for NAT)とICE(Interactive Connectivity Establishment)と並び、NAT越え技術の主要な要素の一つとして標準化されている。
なぜTURNが必要となるのか、その背景にはNATの存在がある。現在の多くのネットワークでは、プライベートIPアドレスを使用している端末がインターネットに接続する際に、ルーターなどのNATデバイスがプライベートIPアドレスとポート番号をグローバルIPアドレスとポート番号に変換する。このNATの動作は、外部からの不正アクセスを防ぐセキュリティ上の利点がある一方で、P2P通信を妨げるという問題を生む。P2P通信では、互いの端末が直接データをやり取りしようとするが、NATによってアドレスが変換されるため、相手の端末が正しいアドレスを見つけられない、あるいは通信を確立できないケースがある。STUNはNATタイプを検出し、特定のNATタイプであればUDPホールパンチングと呼ばれる手法で直接通信経路を確立できるが、全てのNAT環境で成功するわけではない。特に、シンメトリックNATと呼ばれる種類のNATでは、送信元IPアドレスとポート番号が変わるたびに異なる外部ポートを割り当てるため、UDPホールパンチングによる直接接続が困難となる。このような直接通信が不可能な状況において、TURNが最後の手段として登場する。
TURNの主な機能は、クライアントからの通信を一旦自分自身で受け取り、それを目的の相手に転送するというリレーサービスである。このリレーにより、NATの制約によって直接通信ができない状況でも、間接的に通信経路を確保できる。
TURNの動作は、RFC 5766 (TURN: Traversal Using Relays around NAT) で詳細に定義されており、STUNプロトコルの拡張として実装される。具体的な仕組みは以下の通りである。まず、通信を行いたいクライアントは、TURNサーバーに対して「アロケーション」と呼ばれるリクエストを送信する。このリクエストにより、TURNサーバーはクライアントのために、自身が持つグローバルIPアドレスと特定のポート番号を割り当てる。これを「リレーアドレス」と呼ぶ。クライアントは、このリレーアドレスを通信相手に通知する。
次に、通信相手のクライアントは、このリレーアドレス宛にデータを送信する。このデータはTURNサーバーで受信され、TURNサーバーは受信したデータを最初のリクエスト元クライアントへ転送する。同様に、最初のリクエスト元クライアントが通信相手にデータを送りたい場合、そのデータは一旦TURNサーバーのリレーアドレス宛に送られ、TURNサーバーが通信相手へ転送する。このように、TURNサーバーは両方のクライアントからのトラフィックを中継し、互いの通信がNATを越えて行われることを可能にする。クライアントは、あたかもTURNサーバーを介して直接通信しているかのように振る舞うため、NATの存在を意識せずにP2P通信が可能となる。
このプロセスにおいて、TURNサーバーはクライアントからのリクエストに対して、リレーアドレスに加えて「ピアアドレス」という概念も使用する。ピアアドレスは、通信相手の具体的なIPアドレスとポート番号をTURNサーバーに登録するために使われる。クライアントはTURNサーバーに対し、どのピアアドレスへの通信をリレーしてほしいかを指定する。TURNサーバーはアロケーションされたリレーアドレスと、そのリレーアドレスに対する特定のピアアドレスへの関連付けを管理することで、適切なデータ転送を実現する。セッションの終了や一定時間通信がない場合は、リレーアドレスの割り当てが解除される。
TURNは、主にWebRTC(Web Real-Time Communication)をはじめとするVoIP(Voice over IP)やビデオ会議、オンラインゲームなどのリアルタイム通信アプリケーションで広く利用されている。これらのアプリケーションは低遅延で双方向の通信を必要とし、可能な限りP2P接続を試みるが、それが不可能な場合にTURNが最終的な接続手段として機能する。ICEフレームワークでは、まずSTUNによるUDPホールパンチングを試み、それでも接続できない場合にTURNによるリレー接続にフォールバックするという優先順位で接続パスを確立しようとする。
TURNサーバーの運用には、いくつかの考慮事項がある。第一に、全てのトラフィックを中継するため、サーバーの帯域幅と処理能力が大量に消費される。これにより、運用コストが増加する可能性がある。第二に、データがTURNサーバーを経由するため、直接通信に比べて通信の遅延(レイテンシ)が増加する傾向がある。リアルタイム通信ではレイテンシがユーザ体験に直接影響するため、これも重要な要素である。第三に、セキュリティ面も考慮する必要がある。TURNサーバーは悪意のある第三者によってDoS(Denial of Service)攻撃の中継点として利用される可能性があるため、適切な認証メカニズムやアクセス制御、監視システムの実装が求められる。
しかし、これらの課題を考慮しても、NAT越えが困難な環境でリアルタイム通信を可能にするTURNの役割は非常に大きい。TURNは、多様なネットワーク環境下でアプリケーションの互換性と信頼性を高める上で不可欠な技術であり、現代のインターネット通信を支える重要な要素の一つである。