28 WebRTC Design of multi-platform file sharing system using WebRTC 1170336 2017 2 28
WebRTC P2P,. Web,. WebRTC. WebRTC, P2P, i
Abstract Design of multi-platform file sharing system using WebRTC Harumi Tsukamoto In the system, such as performing file sharing to build a P2P network, it is necessary to install a dedicated application on the computer. In order to solve this problem, there is a file sharing service that runs on a web browser, but there are problems that the smartphone is not sufficiently dealt with, and there is a problem that it can not be used on a network with a proxy server. In this research, we propose a multi-platform file sharing system using WebRTC which can operate on multiple platforms and solve the above problem. key words WebRTC, P2P, MultiPlatform ii
1 1 2 P2P 2 2.1................... 2 2.2................... 2 3 4 3.1................................... 6 3.1.1 WebRTC............................... 6 3.1.2 OAuth................................. 6 4 7 4.1............................. 7 4.1.1 WebAPI................................ 7 4.2 WebRTC................................ 8 4.3................................... 8 4.4............................. 22 5 24 25 26 iii
3.1................................ 5 4.1 ( ).......... 10 4.2 ( ).......... 10 4.3 ( )....... 11 4.4 ( )........ 13 4.5 ( )........ 13 4.6 ( )...... 14 4.7 ( )........ 16 4.8 ( )........ 16 4.9 ( )...... 17 4.10 ( )....... 19 4.11 ( )....... 19 4.12 ( )..... 20 4.13 TRUN............................. 21 iv
3.1................................ 4 4.1............................... 22 4.2 Node.js............................. 23 v
1,, P2P.,,. P2P,., Web. Web,. WebAPI. 1
2 P2P P2P. Web HTTP. 2.1 Resilio Sync (BitTorrent Sync) storj. Resilio Sync BitTorrent, BitTorrent [1]. BitTorrent P2P [2] [3]. storj, P2P [4]. 2.2 reep.io DirectSEND reep.io WebRTC [5]. TURN TURN, 2
2.2 DirectSEND Websocket [6] 3
3,., Javascript HTML WebRTC STUN TURN. WebAPI., WebAPI OAuth. 3.1, 3.1. API STUN TURN WebRTC STUN TURN 3.1 4
APIサーバシグナリングTURN STUNサーバサーバサーバ Appサーバ ユーザ情報や送信先情報ファイル情報のやり取り 利 者 A ( 送信側 ) WebRTC ファイル転送 利 者 B ( 受信側 ) 利 者 C ( 送信側 ) WebRTC ファイル転送 利 者 D ( 受信側 ) 利 者 E ( 送信側 ) WebRTC ファイル転送 利 者 F ( 受信側 ) 3.1 5
3.1 3.1 3.1.1 WebRTC WebRTC(Web Real-Time Communication) W3C(World Wide Web Consortium)., WebRTC IETF (Internet Engineering Task Force) [7]. WebRTC Web P2P., WebRTC, NAT(NAPT) STUN (Session Traversal Utilities for NATs) P2P. WebRTC TURN(Traversal Using Relay around NAT). STUN TURN ICE(Interactive Connectivity Establishment) SDP(Session Description Protocol) WebRTC. 3.1.2 OAuth OAuth [8], (RFC6749 RFC6750) OAuth 2.0 2012. OAuth.. OAuth. 6
4 4.1 4.1.1 WebAPI Node.js WebAPI. WebAPI OAuth. WebAPI. WebAPI URL JSON JSON. 1.., ID. OAuth. 2..,,,.. 3.. ID,. 4. 7
4.2 WebRTC.., ID. WebRTC ID. WebRTC ID ID. 5.. 4.2 WebRTC WebRTC P2P. 1. WebAPI ID. 2. WebAPI ID. WebRTC. SDP. SDP WebRTC. 4.3. 4.1 4.3 ( ), 4.4 4.6 (WebAPI ) ( ). 4.10 4.12. 4.13 TURN. 8
4.3 1. ( 4.1 4.3) a Web, API. STUN,. b, API. STUN, WebRTC. c WebRTC WebRTC. 9
4.3 2 ファイル情報 3 通信 情報 Appサーバ APIサーバシグナリングサーバ STUNサーバ PC 1 ( 送信側 ) PC 2 ( 受信側 ) 4.1 ( ) 2 転送要求 3 通信 情報 Appサーバ APIサーバシグナリングサーバ STUNサーバ PC 1 ( 送信側 ) PC 2 ( 受信側 ) 4.2 ( ) 10
4.3 Appサーバ APIサーバシグナリングサーバ STUNサーバ 2 ファイル転送 PC 1 ( 送信側 ) PC 2 ( 受信側 ) 4.3 ( ) 11
4.3 2. ( 4.4 4.6) a API. STUN, API. b, API. STUN, WebRTC. c WebRTC WebRTC. 12
4.3 Appサーバ APIサーバシグナリングサーバ STUNサーバ スマホ ( 送信側 ) PC ( 受信側 ) 4.4 ( ) 2 転送要求 3 通信 情報 Appサーバ APIサーバシグナリングサーバ STUNサーバ スマホ ( 送信側 ) PC ( 受信側 ) 4.5 ( ) 13
4.3 Appサーバ APIサーバシグナリングサーバ STUNサーバ 2 ファイル転送 スマホ ( 送信側 ) 4.6 PC ( 受信側 ) ( ) 14
4.3 3. ( 4.7 4.9) a Web, API. STUN,. b API. STUN, API WebRTC. c WebRTC WebRTC. 15
4.3 2 ファイル情報 3 通信 情報 Appサーバ APIサーバシグナリングサーバ STUNサーバ PC ( 送信側 ) スマホ ( 受信側 ) 4.7 ( ) Appサーバ APIサーバシグナリングサーバ STUNサーバ PC ( 送信側 ) スマホ ( 受信側 ) 4.8 ( ) 16
4.3 Appサーバ APIサーバシグナリングサーバ STUNサーバ 2 ファイル転送 PC ( 送信側 ) 4.9 スマホ ( 受信側 ) ( ) 17
4.3 4. ( 4.10 4.12) a API. STUN, API. b API. STUN, API WebRTC. c WebRTC WebRTC. 18
4.3 Appサーバ APIサーバシグナリングサーバ STUNサーバ スマホ 1 ( 送信側 ) スマホ 2 ( 受信側 ) 4.10 ( ) Appサーバ APIサーバシグナリングサーバ STUNサーバ スマホ 1 ( 送信側 ) スマホ 2 ( 受信側 ) 4.11 ( ) 19
4.3 Appサーバ APIサーバシグナリングサーバ STUNサーバ 2 ファイル転送 スマホ 1 ( 送信側 ) 4.12 スマホ 2 ( 受信側 ) ( ) 20
4.3 5. TURN 4.13 STUN TURN TURN. Appサーバ APIサーバシグナリングサーバ STUNサーバ TURN サーバ 2 ファイル転送 スマホ 1 ( 送信側 ) スマホ 2 ( 受信側 ) 4.13 TRUN 21
4.4 4.4, Nginx WebAPI. WebAPI Node.js. Node.js, JavaScript [9]. Web PeerJS Web. STUN TURN TURN STUN coturn. 4.1. Node.js PostgreSQL SQLite. STUN coturn STUN. CentOS 7.3 nginx 1.11.7 Web MariaDB 5.5.52 Node.js 7.2.1 JavaScript coturn 4.5.0.6 TURN & STUN 4.1 4.2 WebAPI. 22
4.4 bcrypt knex koa oauth2-server nodemailer node-uuid validator OAuth UUID 4.2 Node.js 23
5, P2P,. WebRTC Web. WebRTC ( ) WebAPI. P2P TURN. 24
,.,.,,,,,,,,,., 4. 25
[1] P2P BitTorrent Sync (1) P2P available at http://news.mynavi.jp/articles/2013/04/26/ bittorrentsync/, ( 2017-02-27) [2] P2P available at http://tenjin. coara.or.jp/seinfo/p2p.html, ( 2017-02-27) [3] : @nifty available at http://support.nifty.com/cs/suptopics/detail/090410000057/ 1.htm, ( 2017-02-27) [4] Storj - Decentralized Cloud Storage. available at https://storj.io, ( 2017-02-27). [5] reep.io peer-to-peer filesharing made easy. available at https://reep.io, ( 2017-02-27). [6] DirectSEND - available at https: //directsend.me, ( 2017-02-27) [7] AlanJohnson/ Daniel C. Burnett[ ] [ ] WebRTC P2P 2014 [8] TCP/IP 2015 [9] Node.js 2013 26