WebRTC プロトコル入門

このロケールの翻訳が存在しないため、英語バージョンのコンテンツを表示しています。 Help us translate this article!

草案
このページは完成していません。

この記事では、 WebRTC API の基礎となっているプロトコルについて説明します。

ICE

Interactive Connectivity Establishment (ICE) は、ウェブブラウザーをピアと接続することを可能にするフレームワークです。さまざまな理由から、ピア A からピア B に直接接続することはできません。ファイアウォールをバイパスする必要があるからです。ファイアウォールは直接接続を開くことを妨害したり、端末がパブリック IP アドレスを持たない多くの場合にはユニークなアドレスを与えたり、ルーターがピアとの直接接続を許さない場合にはサーバー経由でデータをリレーしたりします。以下で説明するように、 ICE は STUN や TURN サーバーを使用してこれを解決しています。

STUN

Session Traversal Utilities for NAT (STUN) (頭字語中に頭字語が含まれている) は、パブリックアドレスを発見し、ピアとの直接接続を妨害するルーターの制限を特定するためのプロトコルです。

クライアントがインターネット上の STUN サーバーにリクエストを送信すると、サーバーは、クライアントのパブリックアドレスと、ルーターの NAT 内部にアクセス可能かどうかを答えます。

An interaction between two users of a WebRTC application involving a STUN server.

NAT

ネットワークアドレス変換 (Network Address Translation; NAT) は、端末にパブリック IP アドレスを割り当てるために使われます。ルーターはパブリック IP アドレスを持ち、ルーターに接続されたすべての端末はプライベート IP アドレスを持ちます。リクエストが送られると、端末のプライベート IP から、特定のポートを持つルーターのパブリック IP へ変換されます。こうすることで、各端末にユニークな IP アドレスを割り当てずともインターネット上で発見することができるようになります。

ルーターによっては、ネットワーク上の端末に接続できる相手に制限をかけていることが場合あります。つまり、 STUN サーバーが発見できるパブリック IP アドレスを持っていたとしても、すべての相手が接続を張れるわけではないということです。このような状況では、TURN を使う必要があります。(訳注: 原文では「TURN を turn on する必要がある」と書かれている。)

TURN

NAT を使用するルーターの一部は、‘Symmetric NAT’ と呼ばれる制限をかけています。その場合、ルーターは過去に接続したことのあるピアから来る接続しか受け入れることができません。

Traversal Using Relays around NAT (TURN) is meant to bypass the Symmetric NAT restriction by opening a connection with a TURN server and relaying all information through that server. You would create a connection with a TURN server and tell all peers to send packets to the server which will then be forwarded to you. This obviously comes with some overhead so it is only used if there are no other alternatives.

An interaction between two users of a WebRTC application involving STUN and TURN servers.

SDP

Session Description Protocol (SDP) is a standard for describing the multimedia content of the connection such as resolution, formats, codecs, encryption, etc. so that both peers can understand each other once the data is transferring. This is, in essence, the metadata describing the content and not the media content itself.