※当サイトの記事には、広告・プロモーションが含まれます。

WebRTCに出てくるプロトコルなどをザックリ整理してみる

www.itmedia.co.jp

 イタリアのボローニャ大学に所属する研究者らが発表した論文「Seals and signs: tracing the origins of writing in ancient South-west Asia」は、最初期の文字体系の一つである原楔形文字の起源について、それ以前から使用されていた円筒印章(メソポタミアで所有者などを示すために使われた印章)との関連性を示した研究報告である。

「最古の文字」の前段階を解明か 古代の“コロコロスタンプ”が手掛かり イタリアの研究者らが発表:Innovative Tech - ITmedia NEWS

⇧ 究極の「リバースエンジニアリング」って感じですな...

答えは、推測するしか無いでしょうし...

「タイムマシン」とか発明されて「フィールドワーク」が実現できれば、解読が進みそうではありますが...

WebRTC(Web Real-Time Communication)

Wikipediaによりますと、

Web Real-Time Communication (略称: WebRTC) は、ウェブブラウザモバイルアプリケーションにシンプルなAPI経由でリアルタイム通信を提供する自由かつオープンソースのプロジェクトである。

WebRTC - Wikipedia

ウェブページ内で直接ピア・ツー・ピア通信を行うことによって、プラグインのインストールやネイティブアプリのダウンロードを行わなくても、ウェブブラウザ間のボイスチャットビデオチャットファイル共有などを実装できるようになる

WebRTC - Wikipedia

WebRTCは、AppleGoogleマイクロソフトMozillaOperaがサポートしている

WebRTC - Wikipedia

WebRTC は 1 つのプロトコル仕様(プロトコルスイート)と 1 つの JavaScript API 仕様からなるこれら仕様は W3C および IETF の複数の規格書に跨って定義されている。

WebRTC - Wikipedia

⇧ とありますと。

Android」や「iOS」上で動作するアプリケーション、所謂、「Native」なアプリにおいては「WebView」とかを利用する感じになるんかね?

P2P(Peer to Peer)

「WebRTC」を実現する上で欠かせない「P2P(Peer to Peer)」はというと、

Peer to Peer(ピア・トゥ・ピア または ピア・ツー・ピア)とは、複数のコンピューター間で通信を行う際のアーキテクチャのひとつで、対等の者(Peer、ピア)同士が通信をすることを特徴とする通信方式、通信モデル、あるいは通信技術の一分野を指す。略記は、P2P

Peer to Peer - Wikipedia

P2P(Peer to Peer)型ネットワーク

P2P型ネットワーク(図はピュアP2P型)。コンピューター同士が対等に通信を行うのが特徴である。

Peer to Peer - Wikipedia

■クライアント・サーバー型ネットワーク

クライアント・サーバー型ネットワーク。サーバー(図中央)とクライアントは一対一の通信を行うのが特徴である。

Peer to Peer - Wikipedia

⇧ といった感じで、「クライアント・サーバー」と異なり「P2P(Peer to Peer)」は1点の集約するということがない。

P2P(Peer to Peer)」は、

P2Pアプリケーションの分類

分散型データ管理

ビットコインRippleなどでは、通貨の取引履歴情報を、各ノードで分散して持つことによって、通常はサーバーで管理する台帳データの不正な改竄を防ぐことができるので、P2Pを利用している。これにより自分のノードの台帳データを改ざんしたとしても、他の多数のノードが正しいデータを保持していることにより、比較した際に改竄を検知することができる。

Peer to Peer - Wikipedia

⇧「ブロックチェーン」とかでお馴染みになった感じですかね。

WebRTCに出てくるプロトコルなどをザックリ整理してみる

ネットの情報を漁った感じでは、

⇧ というような感じで、「P2P(Peer to Peer)」の通信で、

  • DTLS-SRTP
  • STUN
  • ICE

といった、用語が出てくるのだが、聞いたことが無いので、調べてみる。

「DTLS-SRTP」は、「DTLS」と「SRTP」という用語に分かれるらしいので、まずは、「DTLS」については、

Datagram Transport Layer Security (DTLS) は、データグラムプロトコルのための暗号化プロトコルである。DTLSはTransport Layer Security (TLS) に基づくプロトコルであり、TLSと同様に、データグラムを扱うプログラムがやり取りする情報の盗聴や改竄を防止する。

Datagram Transport Layer Security - Wikipedia

DTLSを用いることで、データグラムに特有のパケットの到達順序に関わる問題は考慮する必要がなくなるが、一方でパケットの再整列やパケットサイズより大きいデータの喪失に対処する必要がある。

Datagram Transport Layer Security - Wikipedia

⇧とあり、「データグラム」の暗号化プロトコルでありますと。

「データグラム」はというと、

データグラムdatagram)は、配送成功・到達時間・到達順序がネットワークサービスによって保証されることがないパケット交換網における基本転送単位である。

Datagram Transport Layer Security - Wikipedia

⇧ とありますと。

続いて、「SRTP」はというと、

The Secure Real-time Transport Protocol (SRTP) is a profile for Real-time Transport Protocol (RTP) intended to provide encryption, message authentication and integrity, and replay attack protection to the RTP data in both unicast and multicast applications. It was developed by a small team of Internet Protocol and cryptographic experts from Cisco and Ericsson. It was first published by the IETF in March 2004 as RFC 3711.

https://en.wikipedia.org/wiki/Secure_Real-time_Transport_Protocol

⇧ とありますと。

「DTLS」と「SRTP」の違いはというと、ネットの情報を漁っていたところ、

⇧ のような違いらしい。上記のスライドで「WebRTC」に関わってくる要素は何となく把握できるかと。

続いて、「STUN」はというと、

STUN (Session Traversal Utilities for NATs) は、音声、映像、文章などの双方向リアルタイムIP通信を行うアプリケーションにおいて、NAT traversal(NAT通過)の方法の1つとして使われる標準化された (standards-based) 通信プロトコルである。

STUN - Wikipedia

STUNプロトコルは、アプリケーションがNATの存在と種類とを発見し、リモートホストへのUDP (User Datagram Protocol) 接続にNATが割り当てたグローバルIPアドレスとポート番号とを得ることを許す。

STUN - Wikipedia

STUNプロトコルが動作するには、インターネット上にSTUNサーバが存在する必要がある。STUNプロトコルは、RFC (Request for Comments) 8489に定められる。

STUN - Wikipedia

⇧ とのこと。

最後に、「ICE(Interactive Connectivity Establishment)」はというと、

Interactive Connectivity Establishment (ICE) ドラフトは、IETFのMMUSICワーキンググループによって開発され、様々な技術を用いてNATトラバーサルのための仕組みを提供する。

Interactive Connectivity Establishment - Wikipedia

特にそれはSIPベースのVoIPクライアントがリモートユーザーとネットワークの間に存在するかもしれない様々なファイアウォールを通過できるよう用いられる。それは、XMPPジングル拡張にも用いられる。

Interactive Connectivity Establishment - Wikipedia

⇧ とのこと。

何やら、

webrtc-security.github.io

2. Overview of WebRTC Architecture

Figure 1. A simple WebRTC Call Topology

https://webrtc-security.github.io/

2.1. Underlying Technologies

Figure 2. WebRTC Protocol Stack

https://webrtc-security.github.io/

⇧ のようなレイヤーになるそうな。

ネットワーク周りの知識が絡んできますな...

毎度モヤモヤ感が半端ない…

今回はこのへんで。