TURNとは何ですか?
TURN(Traversal Using Relays around NAT)は、ピアツーピア通信を促進するために、ネットワークアドレス変換(NAT)やファイアウォールを通過するのを助けるプロトコルです。これはSTUN(Session Traversal Utilities for NAT)プロトコルの拡張であり、RFC 8656 ↗で定義されています。
HTTPプロトコルを使用するためにウェブブラウザやcURLを使用するのと同様に、アプリケーションでTURNプロトコルを使用するには、ツールやライブラリを使用する必要があります。
TURNのほとんどのユーザーは、ブラウザ内のWebRTCライブラリや、Pion ↗、webrtc-rs ↗、libwebrtc ↗の一部として使用します。
また、アプリケーション内でTURNを直接使用することもできます。Pion ↗はGolangでのTURNクライアントライブラリを提供しており、webrtc-rs ↗もRustで提供しています。
-
NAT(Network Address Translation): ルーターが複数のプライベートIPアドレスを単一のパブリックIPアドレスにマッピングするために使用する方法です。これは、同じネットワーク内の複数のコンピュータが単一のパブリックIPアドレスを共有できるように、家庭用インターネットルーターによって一般的に行われます。
-
TURNサーバー: NATの背後にいるクライアント間のトラフィックの仲介者として機能するリレーサーバーです。CloudflareのTURNサービスは、TURNサーバーの一例です。
-
TURNクライアント: TURNプロトコルを使用してTURNサーバーを介して通信するアプリケーションまたはデバイスです。これはあなたのアプリケーションです。WebRTC APIを使用するウェブアプリケーションや、モバイルまたはデスクトップで動作するネイティブアプリケーションである可能性があります。
-
アロケーション: TURNサーバーがアロケーションを作成すると、TURNサーバーはそのクライアントに固有のIPとポートを予約します。
-
リレートランスポートアドレス: TURNサーバーで予約されたIPアドレスとポートで、インターネット上の他の人がTURNクライアントにデータを送信するために使用できます。
- TURNクライアントがTURNサーバーにAllocateリクエストを送信します。
- TURNサーバーがアロケーションを作成し、クライアントにリレートランスポートアドレスを返します。
- クライアントはこのリレートアドレスをピアに渡すことができます。
- ピアがリレートアドレスにデータを送信すると、TURNサーバーはそれをクライアントに転送します。
- クライアントがピアにデータを送信したい場合、TURNサーバーを介して送信し、その後ピアに転送されます。
TURNはVPN(Virtual Private Network)に似た動作をします。しかし、TURNサーバーとVPNは異なる目的を持ち、異なる方法で動作します。
VPNは、デバイスからのすべてのインターネットトラフィックを暗号化し、VPNサーバーを介してルーティングする一般的なツールであり、プライバシー、セキュリティ、および匿名性を向上させます。これはネットワーク層で動作し、すべてのインターネット活動に影響を与え、地理的制限を回避したり、公共のWi-Fiでの接続を安全にするために使用されることがよくあります。
TURNサーバーは、特定のアプリケーション、特にリアルタイム通信のために使用される専門的なツールです。これはアプリケーション層で動作し、それを使用するアプリケーションのトラフィックにのみ影響を与え、ピア間の直接接続が不可能な場合にNATやファイアウォールを通過するためのリレーとして機能します。VPNは全体のインターネット速度に影響を与え、匿名性を提供しますが、TURNサーバーはそれを使用する特定のアプリケーションのパフォーマンスにのみ影響を与えます。
TURNは、NATやファイアウォールの制限により直接のピアツーピア通信が不可能なシナリオでしばしば価値があります。以下は主な利点です:
-
NATトラバーサル: TURNは、両方がNATの背後にいるピア間の接続を確立する方法を提供します。これは、そうでなければ困難または不可能です。
-
ファイアウォールバイパス: 厳格なファイアウォールポリシーのある環境では、TURNがブロックされるはずの通信を可能にします。
-
一貫した接続性: TURNは、直接接続またはNAT支援接続が失敗した場合の信頼できるフォールバック方法を提供します。
-
プライバシー: TURNサーバーを介してトラフィックを中継することで、通信当事者の実際のIPアドレスを互いに隠すことができます。
-
VoIPおよびビデオ会議: TURNは、VoIP(Voice over IP)やビデオ会議などのアプリケーションにとって重要であり、ネットワーク構成に関係なく信頼できる接続を確保します。
-
オンラインゲーム: TURNは、異なるタイプのNATの背後にいるプレイヤー間でピアツーピア接続を確立するのに役立ちます。
-
IoTデバイス通信: IoT(Internet of Things)デバイスは、NATやファイアウォールの背後にいるときに通信するためにTURNを使用できます。