WebRTC

WebRTC(Web Real-Time Communication)는 웹 브라우저 간에 플러그인의 도움 없이 서로 통신할 수 있도록 설계된 API이다. 음성 통화, 영상 통화, P2P 파일 공유 등으로 활용될 수 있다.

애플, 구글, 마이크로소프트, 모질라 및 오페라가 지원하는 WebRTC 사양은 W3C(World Wide Web Consortium) 및 IETF(Internet Engineering Task Force)에서 게시되었다.

webrtc.org 웹사이트에 따르면, 이 프로젝트의 목적은 브라우저, 모바일 플랫폼 및 IoT 장치용으로 풍부한 고품질 RTC 애플리케이션을 개발하고 공통 프로토콜 세트를 통해 모두 통신할 수 있도록 하는 것이다.

역사 
웹 브라우저 기반의 통신 방식인 WebRTC는 구글이 오픈 소스화한 프로젝트에서 기원하였다. 그 뒤로 국제 인터넷 표준화 기구가 프로토콜 표준화 작업을, W3C가 API 정의를 진행하였다.

WebRTC의 W3C 초안 작업은 진행 중이며 크롬과 파이어폭스 브라우저에서 먼저 구현되고 있다. API는 WHATWG과 에릭슨.의 작업에 기반하여 정의되었다.

개요

설계 
WebRTC의 주요 구성 요소는 여러 자바스크립트 API를 포함하고 있다:
 getUserMedia: 오디오와 비디오 미디어를 가져온다. (예: 장치의 카메라와 마이크로폰에 접근하여)
 RTCPeerConnection: 피어 간 오디오, 비디오 통신을 활성화한다. 신호 처리, 코덱 관리, P2P 통신, 보안, 대역폭 관리를 수행한다.
 RTCDataChannel: 피어 간 양방향 임의 데이터 통신을 허용한다. 웹소켓과 동일한 API를 사용하며 매우 낮은 레이턴시를 보인다.

또, WebRTC API는 통계 함수를 포함한다:
 getStats: 웹 애플리케이션에 WebRTC 세션에 관한 통계 집합의 검색을 허용한다. 이 통계 데이터는 별도의 W3C 문서에 기술되어 있다.

지원 
WebRTC는 다음의 브라우저에서 지원된다:
 데스크톱 PC
 마이크로소프트 엣지 12+
 구글 크롬 28+
 모질라 파이어폭스 22+
 Safari 11+
 Opera 18+
 Vivaldi 1.9+
 네이버 웨일
 안드로이드
 Google Chrome 28+ (버전 29부터 기본으로 활성화됨)
 Mozilla Firefox 24+
 Opera Mobile 12+
 크롬 OS
 파이어폭스 OS
 블랙베리 10
 IOS 11
MobileSafari/WebKit
 타이젠 3.0

2013년 10월 마지막 기능 릴리스 이전의 인터넷 익스플로러에서는 지원되지 않으나, 서드파티 플러그인을 사용하여 인터넷 익스플로러와 macOS용 사파리에서 WebRTC 지원을 추가할 수 있다. WWDC 2017에서, 애플은 사파리 11에서 WebRTC를 지원할 것이라고 발표했으며, 사파리 테크놀로지 프리뷰 릴리스 32에서 사용 가능하게 되었다.

응용 
WebRTC를 사용하면 브라우저가 파일을 서로 직접 스트리밍하여 서버 측 파일 호스팅의 필요성을 줄이거나 완전히 제거할 수 있다. 웹토렌트는 WebRTC 전송을 사용하여 브라우저에서 비트토렌트 프로토콜을 사용하여 P2P 파일 공유를 활성화한다. 일부 파일 공유 웹사이트에서는 이를 사용하여 사용자가 브라우저에서 서로에게 직접 파일을 보낼 수 있도록 허용한다. 하지만 이렇게 하려면 업로더가 파일이 다운로드될 때까지 탭을 열어 두어야 한다. 마이크로소프트 소유 Peer5와 같은 일부 CDN은 클라이언트의 대역폭을 사용하여 연결된 다른 피어에 미디어를 업로드하여 각 피어가 에지 서버 역할을 할 수 있도록 한다.

처음에는 웹 브라우저용으로 개발되었지만 WebRTC에는 모바일 플랫폼 및 IoT 장치를 포함한 비 브라우저 장치용 애플리케이션이 있다. 예를 들어 클라우드 전화 또는 웹 전화라고도 하는 브라우저 기반 VoIP 전화 통신이 포함된다. 이를 통해 웹 브라우저 내에서 전화를 걸고 받을 수 있으며 소프트폰을 다운로드하고 설치해야 하는 요구 사항을 대체한다.

참조

외부 링크 

  
  W3C Web Real-Time Communications Working Group
  IETF Real-Time Communication in WEB-browsers (rtcweb) Working Group

웹 개발
BSD 라이선스 소프트웨어
P2P