프로필사진


2021.07.18

WebRTC 개념

반응형

WebRTC는 웹 브라우저 간에 추가적인 플러그인이나 소프트웨어 없이 음성 및 영상 통화나 파일 공유 등을 통신 할 수 있도록 설계된 API입니다. 처음에는 웹 브라우저용으로 개발되었지만 Mobile 플랫폼 및 IoT 장비를 비롯한 브라우저가 아닌 장치용 애플리케이션도 있습니다.

한계

WebRTC는 각 브라우저마다 다른 코덱을 사용하거나 미디어 기능에 대한 지원 수준이 다르기 때문에 이에 대한 대처가 필요하다고 합니다.

MDN에서는 Google이 제공하고 있는 Adapter.js 라이브러리를 사용하는 것을 권장하고 있습니다.

- Adapter.js의 경우에는 shim 및 polyfill를 사용하여 다양한 브라우저에서 WebRTC 구현 간의 다양한 차이점을 최소화해줍니다.

동작 방식

두 피어 간의 connection은 RTCPeerConnection 인터페이스를 통해 이루어집니다. 커넥션이 이루어지고 열리면, 미디어 스트림(MediaStream)들과 데이터 채널(RTCDataChannel)들을 커넥션에 연결할 수 있습니다.

- MediaStream : 미디어 정보를 가지는 다수의 트랙(MediaStreamTrack)들로 구성되어 있습니다.  
- MediaStreamTrack : 음성, 비디오 그리고 문자를 포함한 미디어를 하나 이상 포함하고 있습니다.

인터페이스

  • RTCPeerConnection : 피어 간 음성, 영상 통신을 활성화합니다. 신호 처리, 코덱 처리, 피어간의 통신, 보안, 대역폭을 관리합니다.
  • RTCDataChannel : 피어 간 양방향 임의 데이터 통신을 허용합니다. WebSocket과 동일한 API를 사용하며 매우 낮은 레이턴시를 보여줍니다.
  • RTCDataChannelEvent : RTCDataChannel을 RTCPeerConnection에 연결하는 동안 발생하는 이벤트입니다.
  • RTCSessionDescription : 세션의 매개 변수를 나타냅니다.
  • RTCStatsReport : 연결 또는 연결의 개별 트랙에 대한 통계를 자세한 정보를 제공합니다.
  • RTCIceCandidate : RTCPeerConnection 설정을 위한 인터넷 연결 설정 후보 서버를 나타냅니다.
  • RTCIceTransport : 인터넷 연결 설정 (ICE) 전송에 대한 정보를 나타냅니다.
  • RTCPeerConnectionIceEvent : 대상이 있는 ICE 후보와 관련하여 발생하는 이벤트를 나타냅니다.
  • RTCRtpSender : RTCPeerConnection에서 MediaStreamTrack의 데이터 인코딩 및 전송을 관리합니다.
  • RTCRtpReceiver : RTCPeerConnection에서 MediaStreamTrack의 데이터 수신 및 디코딩을 관리합니다.
  • RTCTrackEvent : 새롭게 수신된 MediaStreamTrack이 생성되고 관련 RTCRtpReceiver 개체가 RTCPeerConnection 개체에 추가되었음을 나타냅니다.
  • RTCSctpTransport : SCTP 전송을 설명하는 정보를 제공하고 모든 RTCPeerConnection 데이터 채널에 대한 SCTP 패킷이 송수신되는 기본 DTLS 전송에 접근하기 위한 방법을 제공합니다.
- ICE(Interactive Connectivity Establishment) : 두 단말이 서로 통신할 수 있는 최적의 경로를 찾을 수 있도록 도와주는 프레임워크입니다.  
- SCTP(Stream Control Transmission Protocol) : 전송 계층 프로토콜로 TCP 처럼 연결지향적 프로토콜이며 혼잡 제어를 통한 신뢰성 있는 순차적 메시지 전송을 보장합니다.  
- DTLS(Datagram Transport Layer Security) : 데이터그램 형식의 콘텐츠를 애플리케이션끼리 주고받을 때 안전하게 전송할 수 있도록 고안된 통신 프로토콜입니다. 

지원 범위

  • PC (Edge 12+, Chrome 28+, FireFox 22+, Safari 11+, Opera 18+)
  • Mobile (Chrome 28+, Firefox 24+, Opera 12+, Safari 11+)
- 2019년 기준, Firefox(<= 69.2x)에서 IP 주소가 그대로 들어나는 보안 이슈가 있습니다.

정의 문서

Reference

  1. https://ko.wikipedia.org/wiki/WebRTC
  2. https://developer.mozilla.org/ko/docs/Web/API/WebRTC\_API
  3. https://brunch.co.kr/@linecard/156
  4. https://ko.wikipedia.org/wiki/스트림\_제어\_전송\_프로토콜
  5. https://blog.naver.com/sehyunfa/221645554279
반응형