【初めての】WebRTCとは?
具体的な仕組みとサーバー構築の基礎を解説!
現代では当たり前のように浸透しているスマートフォンやパソコンですが、それらが成す機能の高速化を図るためには精度の高い通信技術が必要です。SNSを利用した発信はもはや珍しくなく、世界中の人々がライブ放送やメディアへのデータ配信などを自身で行っています。
そんなデータ時代を支える「WebRTC」という技術をご存知でしょうか。
新型コロナウイルスが流行し、リモート活動が増えている昨今。このWebRTCに関連した製品も多く販売されています。
本記事では、初心者向けにWebRTCの技術について解説しています。また、具体的な仕組みだけでなく、SFUとP2Pの違いについても理解できる内容でまとめました。
それでは、WebRTCの魅力について詳しくみていきましょう。
WebRTCとは?
WebRTCとは「Web Real-Time-Communication」の略称で、ブラウザから発信される映像や音声・その他ファイルといったデータを優れた処理能力で通信する技術です。API(Application Programming Interface)を経由し、更なるリアルタイムコミュニケーションを実現させようと、2011年にプロジェクトが始動しました。
このWebRTCプロジェクトにはGoogleだけでなく、Apple、Mozilla、Opera、Microsoftなどといった大手ソフトウェア開発企業が多数携わっています。そのため、現在はGoogle Chrome、Microsoft Edge、Firebox、Opera、Safariなどといった人気ブラウザにも導入されており、私達が日常的に活用しているものの殆どに導入されています。
WebRTCにはさまざまなサーバーが基盤となって構築されており、どれも場面や状況によって活躍する重要な役割を果たします。
ここでは代表的なサーバーとして、「SFU」と「P2P」についてみてみましょう。
WebRTC SFUとは?
SFU(Selective Forwarding Unit)サーバーとは、サーバー経由で音声や映像といったデータを共有するWebRTC技術のこと。通信機器の性能やインターネット文化が時代とともに進化するにつれ、利用者の数も増えてきました。
そこで、今後も浸透していくであろう通信技術と、数多くのユーザーがデータ通信を利用することで発生する負担に耐えられるサーバーが必要となりました。
サーバー経由の通信の大きな恩恵として、各データの容量や共有時のユーザーの数による負担を軽減させることにあります。通信そのものがスムーズに行われることで、私たちは快適なリアルタイムコミュニケーションを取ることができるのです。
WebRTC SFUについてさらに詳しく知りたい方は、こちらの記事をご覧ください。
WebRTC P2Pとは?
P2Pとは「Peer-to-peer」の略称で、通信相手がデータを所有している際、他のノードにデータを送る際にも対等にデータ共有、並びにアクセスできる仕組みのこと。SFCの通信方法とは異なり、サーバー経由ではなく端末同士が直接通信することで、データの共有ができます。P2Pは、自立分散型ネットワークモデルといわれており、そのスペックによって主に下記の3つに分類されます。
- ハイブリッド型|データを一括保存する
- スーパーノード型|検索機能やデータ保有力など処理機能全般が優れている
- ピュア型|上記2つのようなハイスペックなシステムは持ち合わせていない
初心者向けにわかりやすくまとめると、P2Pの基本的な概念としては「ピア同士のコミュニケーションを直接行える」こと。つまり、端末同士での通信で済むため、サーバーやクライアント、ユーザー数からの負担に囚われないという点が大きなメリットといえます。
ただし、サーバーのような支えがない分、大多数での通信には向いていません。
あくまで少人数の通信に特化している方のため、現代では活躍の幅は狭まってしまいます。また、通信によって発生するトラフィックの増加やセキュリティの脆弱性から、コンピューターウイルスに感染してしまう恐れが比較的他の通信方法よりも大きいことがデメリットです。
その他にも、WebRTCにおけるいくつかの重要なサーバーを簡単に解説しておきます。WebRTCの仕組みを理解するためにも覚えておきたいサーバーは、主に下記の3つ。
- シグナリングサーバー
- STUNサーバー
- TURNサーバー
それでは、概要をみていきましょう。
シグナリングサーバー
シグナリングサーバーは、主にP2P通信を行う場合に仲介役を担うサーバーで、その役割は「通信する相手のデータを取得する」ことです。
これにより、不透明になりがちな相手の情報を得られるため、安心してコミュニケーションを取ることができます。
STUN/TURNサーバー
P2Pの通信手段である「端末同士が直接データを送受信する」を実現するために、不可欠な仕組みがSTUNサーバー。そして、STUNサーバーと似たような役割として、TURNサーバーも存在しますが、その特性はP2P通信の際に中間地点としてデータを一度引き受けて送受信を繰り返します。
この2つのサーバーが上手く稼働することで、P2P通信においてNATが生み出した障壁を越える機能を備えることができます。
どういうことなのかわからない初心者向けに、NATについても簡単にふれておきましょう。
NATとは?
NATとは、プライベートIPアドレス、グローバルIPアドレスのどちらも変換する役割を持つ、中間地点のような存在です。
P2P通信が端末での通信手段を取っている以上、相手のIPアドレスは当然知る必要があります。
インターネットで使用されるグローバルIPアドレスは容易に知ることができますが、P2PにおいてはプライベートIPアドレスの方を知らなくてはなりません。このとき、相手のプライベートIPアドレスに介入できなくなっている原因がNATであり、そのNATを突破するのが「STUN/TURNサーバー」です。
NAT突破までの仕組み
前述したように、STUNサーバーの役割は、外部から確認できる自分のIPアドレスを教えてくれること。そして、TURNサーバーの役割は、P2P通信をするクライアントの仲介役としてデータを送受信することです。
この2つを組み合わせてNATの壁を突破するには、下記のような手順を踏んでいきます。
- STUNサーバーで自身のIPアドレスがどちらなのか確認
- クライアントの疑似的コピーを作りあげ、TURNサーバーで支配する
使用者本人が把握出来るのはグローバルIPアドレスです。したがって、インターネットに位置している場合はIPアドレスの照合が合致しており、そうでない場合はプライベートIPアドレスが発生していることが分かります。
そして、プライベートIPアドレス確保後は、双方のクライアントのコピーが設置。そうすることで、コピー同士が通信できないものの、NATやTURNサーバーを経由してデータを遠回りで送りあうことが可能です。
このようにして、NATの障害を越えて相手と通信することができます。
MCUサーバー
MCU(多地点接続装置)とは、3端末以上を同時接続する際に使用されるサーバーのことです。
SFCの上位互換のような存在で、費用や実際に利用するまでの工程が多少長いものの、そのスペックと安定感は他のサーバーよりも大きく注目を集めています。
まとめ
今回は、WebRTCの特徴やそれを支える要となるいくつかのサーバーを紹介しました。
多人数接続や端末同士のみであっても、互いにデータの送受信ができるなど、以前と比べ現代は非常にハイテクな時代を迎えています。
そして、誰もがその通信技術を気軽に使える今、ぜひとも自分たちの生活をより充実させるためにWebRTCを活用していきたいですね。