コロナ禍でZoomなどのビデオチャットツールが通常業務で使用される機会が増えているが、その技術の中核といえるWebRTCについて簡単にまとめてみる。

WebRTC(Web Real-Time Communication)とは

Web上でリアルタイムコミュニケーションを実現する手段。
いわゆるP2P(Peer to Peer)。
Webブラウザ上で動作するため、特別なプラグインなど必要なくP2P通信を行うことができる。

WebSocketとの違い

WebSocketは専用のサーバーが必要であり、クライアントはこのサーバーを介してデータを送受信する必要があるのに対して、WebRTCは端末間通信のため、サーバーを介する必要がない。
※シグナリング(通信相手を特定し通信を開始するための信号を送受信すること)のために別途サーバーを立てる必要がある
そのため、高速なデータ通信が可能である。
またWebSocketはTCPプロトコルであるのに対して、WebRTCはUDPプロトコルで通信するため、オーバーヘッドが少ない。
ただし、もちろんTCPのような通信の確実性が保証されないため、パケットロスが起きても問題ないような映像や通信に適している。

NATについて

従来のP2P通信ではNAT(Network Address Translation – ローカルIPアドレスをグローバルIPアドレスに変換する技術)が問題となることが多く、独自のアプリやシステムによってNAT越え(NAT Traversal – NATを介してP2P接続を確立すること)を行う必要があった。
NAT越えを行う手法として具体的にはSTUN(Simple Traversal of UDP through NATs)サーバーを使う方法がある。
STUNはNATを越えるためのプロトコル で、WebRTCにおいてもピア(現在接続している相手のコンピュータや通信機器のこと)を生成する際に、STUNサーバーを指定し、通信経路候補の検索時(Candidate)に、STUNサーバーとやりとりを行いNATの特性を解析したうえで、通信経路を見つけ出す。
これによってNATを介したネットワークでもうまくP2P通信ができるようになる。このようなNATを越えるための最適な手段を見つける規格をICE(Interactive Connectivity Establishment)と呼ぶ。