WebRTC

WebRTC
WebRTC
WebRTC Logo.svg
원저작자저스틴 우베르티
피터 대처
초기 릴리즈2011년, 11년 전(2011년)
안정된 릴리스
1[1].0 / 2018년 5월 4일, 4년 전(2018-05-04)
저장소webrtc.googlesource.com
기입처C++,[2] JavaScript
표준w3.org/TR/webrtc/
면허증.BSD 라이선스
웹 사이트webrtc.org

WebRTC(Web Real-Time Communication)는 애플리케이션 프로그래밍 인터페이스(API)를 통해 웹 브라우저 및 모바일 애플리케이션실시간 통신(RTC)을 제공하는 무료 오픈 소스 프로젝트입니다.P2P(Peer-to-Peer)로 직접 통신할 수 있으므로 웹 페이지 내에서 오디오 및 비디오 통신이 가능하므로 플러그인을 설치하거나 [3]네이티브 앱을 다운로드할 필요가 없습니다.WebRTC 사양은 Apple, Google, Microsoft, Mozilla 및 Opera에서 지원되며 World Wide Web Consortium(W3C) 및 Internet Engineering Task Force(IETF)[4][5]에서 공개되었습니다.

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

역사

2010년 5월 구글은 코덱과 에코 캔슬레이션 기술 등 RTC에 필요한 많은 컴포넌트를 개발한 VoIP화상회의 소프트웨어 회사인 Global IP Solutions 또는 GIPS를 인수했다.구글은 GIPS 기술을 오픈 소싱하고 IETFW3C의 관련 표준 기관과 협력하여 업계의 [7][8]합의를 확보했습니다.2011년 5월, 구글은 WebRTC로 [9]알려진 브라우저 기반의 실시간 통신을 위한 오픈 소스 프로젝트를 발표했습니다.이것[10] IETF와 W3C의 [11]브라우저 API에서 관련 프로토콜을 표준화하기 위한 지속적인 작업이 뒤따르고 있다.

2011년 1월, Ericson Labs는 WebKit 라이브러리를 [12][13]수정한 WebRTC를 최초로 실장했습니다.2011년 10월,[14] W3C는 이 사양의 초안을 발표했습니다.WebRTC 마일스톤에는 첫 번째 크로스 브라우저 비디오 통화(2013년 2월), 첫 번째 크로스 브라우저 데이터 전송(2014년 2월), 2014년 7월 현재 Google Hangouts는 WebRTC를 [15]사용하여 "어느 정도"를 사용하고 있습니다.

W3C 드래프트 API는 WHATWG에서 [16]수행된 예비 작업을 기반으로 합니다.이것은 Connection이라고 불리고 있습니다.피어 API 및 사전 표준 개념 구현이 Ericsson [12]Labs에서 작성되었습니다.WebRTC Working Group은 이 사양이 다음 사항을 기반으로 크게 발전할 것으로 예상하고 있습니다.

  • 이 문서와 함께 웹 브라우저에서 실시간 통신을 정의하는 프로토콜 세트를 정의하기 위해 IETF[17] 동반 RTCWEB 그룹에서 진행 중인 교환 결과.하나의 시그널링 프로토콜이 필수적이지는 않지만 SIP over WebSockets( RFC7118)는 JsSIP와 같은 오픈소스 소프트웨어의 가용성뿐만 아니라 예상되는 대부분의 통신 시나리오에 대한 SIP의 적용 가능성 때문에 종종 부분적으로 사용됩니다.
  • 로컬 기능과 로컬스트림 노출 시 발생하는 프라이버시 문제
  • 그룹[18] 내 기술 토론, 특히 데이터 채널 구현
  • 초기 실험을 통해 얻은 경험
  • 다른 그룹 및 개인으로부터의 피드백

2017년 11월 WebRTC 1.0 사양이 작업 초안에서 후보 [19]추천으로 전환되었습니다.

2021년 1월에 WebRTC 1.0 사양이 후보 추천에서 [4]추천으로 변경되었습니다.

설계.

WebRTC의 주요 컴포넌트에는 몇 가지 JavaScript API가 있습니다.

  • getUserMedia는 오디오 및 비디오 미디어를 획득합니다(예를 들어 장치의 카메라 및 마이크에 액세스하여).[20]
  • RTCPeerConnection는, 피어간의 음성 및 비디오 통신을 netable로 합니다.신호 처리, 코덱 처리, 피어 투 피어 통신, 보안 및 대역폭 [21]관리를 수행합니다.
  • RTCDataChannel는, 피어간에 임의의 데이터의 쌍방향 통신을 가능하게 합니다.데이터는 SCTP over DTLS를 [22]사용하여 전송됩니다.WebSockets와 동일한 API를 사용하며 [23]지연 시간이 매우 짧습니다.

WebRTC API에는 통계 기능도 포함되어 있습니다.

  • getStats그럼 웹 어플리케이션은 WebRTC 세션에 관한 일련의 통계정보를 취득할 수 있습니다.이러한 통계 데이터는 별도의 W3C [24]문서에서 설명하고 있습니다.

WebRTC API에는 접속하는 피어를 검출하고 피어 간의 접속 방법을 결정하는 시그널링에 대한 프로비저닝이 포함되어 있지 않습니다.응용 프로그램은 접속에 인터랙티브 연결 확립을 사용하며 세션 관리를 담당합니다.Session Initiation Protocol, Extensible Messaging and Presence Protocol, Message Queuing Telemetry Transport, Matrix 또는 다른 프로토콜 중 하나에 의존할 수 있습니다.시그널링은 1대 이상의 [25][26]서버에 의존할 수 있습니다.

RFC 7478에서는 최소한의 기능으로서 PCMA/PCMU(RFC 3551) 오디오코덱, DTMF(RFC 4733)로서의 전화 이벤트 및 Opus(RFC 6716) 오디오코덱을 실장할 필요가 있습니다.PeerConnection, 데이터 채널 및 미디어 캡처 브라우저 API에 대한 자세한 내용은 W3C 사양을 참조하십시오.

W3C는 웹RTC용 객체실시간통신(ORTC)[27]을 개발하고 있다.

적용들

WebRTC를 사용하면 브라우저 간에 파일을 직접 스트리밍할 수 있기 때문에 서버 측 파일 호스팅의 필요성이 줄어들거나 완전히 해소됩니다.WebTorrent는 WebRTC 전송을 사용하여 브라우저의 [28]BitTorrent 프로토콜을 사용하여 피어 투 피어 파일 공유를 가능하게 합니다.일부 파일 공유 웹 사이트에서는 사용자가 브라우저에서 서로 직접 파일을 보낼 수 있도록 하기 위해 이 기능을 사용합니다. 단, 업로더는 파일이 다운로드될 [29][30][31]때까지 탭을 열어 두어야 합니다.Microsoft 소유의 Peer5와 같은 일부 CDN은 클라이언트의 대역폭을 사용하여 연결된 다른 피어에 미디어를 업로드하므로 각 피어가 엣지 [32][33]서버 역할을 할 수 있습니다.

WebRTC는 당초 웹브라우저용으로 개발되었지만 모바일 플랫폼과 IoT 디바이스를 포함한 비브라우저 디바이스용 애플리케이션을 갖추고 있습니다.예를 들어 브라우저 기반의 VoIP 텔레포니(클라우드폰 또는 웹폰이라고도 함)가 있습니다.이러한 텔레포니는 웹 브라우저 내에서 콜을 발신 및 수신할 수 있기 때문에 소프트폰을 [34]다운로드 및 설치하는 요건이 대체됩니다.

지지하다

WebRTC는 다음 브라우저에서 지원됩니다.

GStreamer는 WebRTC를 무료로 [40]구현합니다.

브라우저 간 코덱 지원

개별 코덱에 대한 지원은 균일하지 않습니다.WebRTC는 모든 준거 브라우저가 구현해야 하는 표준 코덱세트를 확립합니다.일부 브라우저는 다른 코덱도 허용하도록 선택할 수 있습니다.[41]

비디오 코덱 호환성
코덱명 프로파일 브라우저 호환성
H.264 제약 기준선(CB) Chrome(52+), Edge, Firefox[1], Safari
VP8 - Chrome, Edge, Firefox, Safari(12.1+)[42]
VP9 - Chrome(48+), Firefox
오디오 코덱 호환성
코덱명 브라우저 호환성
오퍼스 Chrome, Edge, Firefox, Safari
G.711 PCM (A-law) Chrome, Firefox, Safari
G.711 PCM (θ-law) Chrome, Firefox, Safari
G.722 Chrome, Firefox, Safari
iLBC Chrome, Safari
iSAC Chrome, Safari

걱정

2015년 1월 TorrentFreak은 WebRTC를 지원하는 브라우저의 심각한 보안 결함을 보고하면서 사용자의 [43]실제 IP 주소를 노출시켜 VPN 터널의 보안을 손상시켰다.IP주소 요청 브라우저 간의 개발자 콘솔에 보이지 않고, 대부분의 광고 blocking/privacy/security 추가 기능에서,(일부 브라우저들은 자신들에 의해에서도 이 문제를 해결하지만 uBlock 통신지는 추가 기능 이 문제를 해결할 수 있는 광고주들 및 다른 독립체에 의해 precautions,[44]에도 불구하고 온라인 추적 가능하게 차단되지 않습니다를 읽었다. uBlok Origin v1.38 이후로는 이 옵션이 비활성화되어[45] 있습니다).2019년 9월 현재 이 WebRTC 결함은 여전히 Firefox 69.x에서 표면화되고 기본적으로 사용자의 내부 IP 주소가 웹에 [46]노출됩니다.Firefox에서는 미디어를 통해 WebRTC를 비활성화할 수 있습니다.peerconnect.enabled config-option.

레퍼런스

  1. ^ "WebRTC 1.0: Real-time Communication Between Browsers". World Wide Web Consortium. 27 September 2018. Retrieved 25 March 2019.
  2. ^ "Src/webrtc - Git at Google".
  3. ^ WebRTC가 텔레포니를 혁신하는 방법Blogs.trilogy-lte.com (2014-02-21)2014년 4월 11일 취득.
  4. ^ a b "Web Real-Time Communications (WebRTC) transforms the communications landscape as it becomes a World Wide Web Consortium (W3C) Recommendation and Internet Engineering Task Force (IETF) standards". World Wide Web Consortium. 26 Jan 2021. Retrieved 27 Jan 2021.{{cite web}}: CS1 maint :url-status (링크)
  5. ^ "Rtcweb Status Pages". tools.ietf.org. Retrieved 2021-02-18.
  6. ^ "WebRTC". WebRTC. Archived from the original on 9 January 2018. Retrieved 6 February 2018.
  7. ^ "Are the WebRTC components from Google's acquisition of Global IP Solutions?". WebRTC. Retrieved 6 February 2018.
  8. ^ Wauters, Robin (18 May 2010). "Google makes $68.2 million cash offer for Global IP Solutions". TechCrunch. Retrieved 6 February 2018.
  9. ^ Harald Alvestrand (2011-05-31). "Google release of WebRTC source code". [email protected]. Retrieved 2012-09-12.
  10. ^ 웹브라우저(rtcweb) 실무그룹 실시간 커뮤니케이션 헌장
  11. ^ "WebRTC 1.0: Real-time Communication Between Browsers". W3.org. Retrieved 2012-09-12.
  12. ^ a b "Beyond HTML5: Peer-to-Peer Conversational Video". Ericsson Research blog. Labs.ericsson.com. 25 January 2011. Archived from the original on 25 February 2017. Retrieved 21 March 2021.
  13. ^ Stefan Håkansson; Stefan Ålund (26 May 2011). "Beyond HTML5: Experiment with Real-Time Communication in a Browser". Ericsson Research blog. Retrieved 6 February 2018.
  14. ^ "WebRTC 1.0: Real-time Communication Between Browsers (W3C Working Draft 27 October 2011)". World Wide Web Consortium. 27 October 2011. Retrieved 6 February 2018.
  15. ^ Nowak, Szymon. "WebRTC: So Much More Than Videoconferencing". GitHub. Retrieved 6 February 2018.
  16. ^ "Introduction — HTML Standard". Whatwg.org. Retrieved 2012-09-12.
  17. ^ "Rtcweb Status Pages". Tools.ietf.org. Retrieved 2012-09-12.
  18. ^ "draft-jesup-rtcweb-data-protocol-00 - WebRTC Data Channel Protocol". Tools.ietf.org. Retrieved 2012-09-12.
  19. ^ "WebRTC 1.0: Real-time Communication Between Browsers (W3C Candidate Recommendation 02 November 2017)". 2 November 2017.
  20. ^ "Media Capture and Streams: getUserMedia". W3C. 2013-09-03. Retrieved 2014-01-15.
  21. ^ "WebRTC: RTCPeerConnection Interface". W3C. 2013-09-10. Retrieved 2014-01-15.
  22. ^ "RFC 8831 - WebRTC Data Channels". datatracker.ietf.org. Retrieved 2022-03-10.
  23. ^ "WebRTC: RTCDataChannel". W3C. 2013-09-10. Retrieved 2014-01-15.
  24. ^ "Identifiers for WebRTC's Statistics API". W3C. 2014-09-29.
  25. ^ Tsahi Levent-Levi (13 April 2020). "WebRTC Server: What is it exactly?". BlogGeek.me.
  26. ^ Tsahi Levent-Levi (13 November 2014). "Matrix.org and WebRTC: An Interview with Matthew Hodgson". BlogGeek.me.
  27. ^ "W3C ORTC (Object Real-time Communications) Community Group".
  28. ^ "WebTorrent FAQ". webtorrent.io. Retrieved 2022-03-10.
  29. ^ "How to Transfer Files Between Linux, Android, and iOS Using Snapdrop". MUO. 2021-08-04. Retrieved 2022-03-10.
  30. ^ Pinola, Melanie (2014-04-07). "The easiest and quickest way to transfer files between devices on the same network". Computerworld. Retrieved 2022-03-10.
  31. ^ "FilePizza: share files without the middleman in your browser - gHacks Tech News". gHacks Technology News. 2015-05-12. Retrieved 2022-03-10.
  32. ^ Foley, Mary Jo. "Microsoft acquires Peer5 to supplement Teams' live video streaming". ZDNet. Retrieved 2022-03-10.
  33. ^ "Overview - Peer5 P2P Docs". docs.peer5.com. Retrieved 2022-03-10.
  34. ^ "Catch the Babelfish: Irish telco devises a new kind of cloud phone". November 2017.
  35. ^ "ORTC API is now available in Microsoft Edge". Microsoft. 2015-09-18.
  36. ^ Firefox Notes - 데스크톱.Mozilla.org (2013-06-25)2014년 4월 11일 취득.
  37. ^ "Safari 11.0". Apple Inc. Retrieved 6 June 2017.
  38. ^ 오페라 뉴스. blogs.opera.com(2013-11-19).2015-09-17에 취득.
  39. ^ Firefox Notes - 데스크톱.Mozilla.org (2013-09-17)2014-08-04에 취득.
  40. ^ "GStreamer 1.14 release notes". gstreamer.freedesktop.org. Retrieved 2019-12-19. 버전 1.14 이후
  41. ^ "Codecs used by WebRTC - Web media technologies MDN". developer.mozilla.org. Retrieved 2021-07-29.
  42. ^ Fablet, Youenn (2019-03-12). "On the Road to WebRTC 1.0, Including VP8". WebKit. Retrieved 2021-07-29.
  43. ^ 거대 보안 결함 VPN 사용자의 실제 IP 주소가 누출됩니다. TorrentFreak.com(2015-01-30)2015-02-21에 취득.
  44. ^ 2015-02-21에서 WebRTC Retrived에 대한 STUN IP 주소 요청.
  45. ^ Raymond Hill (17 Sep 2021). "Prevent WebRTC from leaking local IP address". uBlock Origin documentation. Retrieved 18 Dec 2021.
  46. ^ Raymond Hill (26 March 2016). "Prevent WebRTC from leaking local IP address". uBlock Origin documentation. Retrieved 1 Sep 2016.

추가 정보

외부 링크