본문 바로가기
Android

WebRTC 란?

by Taron 2023. 8. 8.

WebRTC 란 무엇인가

  • Web Real-Time Communications의 약자로 별도의 소프트웨어 없이 음성, 영상 미디어 같은 데이터를 브라우저끼리 주고받을 수 있게 만든 기술을 뜻합니다.

WebRTC 데이터 교환 클래스

  • MediaStream
    • 카메라와 마이크 등의 미디어 스트림에 접근할 수 있게 해주는 클래스입니다.
    • 브라우저에서 비디오 및 오디오 데이터를 스트림으로 캡처하고, 다른 피어와 공유할 수 있도록 도와줍니다.
  • RTCPeerConnection
    • 암호화와 대역폭 관리를 수행하며, 오디오와 비디오 연결을 설정하는 클래스입니다.
    • 피어 간에 데이터 스트림을 교환하기 위한 P2P(피어 투 피어) 연결을 생성하고 관리합니다.
  • RTCDataChannel
    • 일반적인 데이터를 P2P(피어 투 피어) 통신을 통해 교환할 수 있게 해주는 클래스입니다.
    • 텍스트, 파일, 이진 데이터 등을 주고받을 수 있습니다.

통신 방식

   WebRTC는 구현 목적에 따라 크게 세 가지 통신 방식이 있습니다.

   각 방식에 장점과 단점이 있습니다. 이를 고려해 자신이 개발해야 하는 애플리케이션 용도에 맞게 방식을 선택해야 합니다.

Mesh

  • 중앙 서버를 거치지 않고 클라이언트와 클라이언트가 연결되는 P2P 연결 방식입니다.
  • 시그널링 서버를 두고 서버는 단지 각 Peer의 정보를 주고받는 역할만 수행합니다.
  • 1:1 연결 방식에 적합합니다.
  • ex )) 영상통화, 음성통화

SFU (Selective Forwarding Unit)

  • 서버와 peer를 연결하는 중앙서버 방식입니다.
  • 중앙에 서버를 두고 미디어 트래픽을 중계하는 연결방식으로 서버는 받은 데이터를 그대로 클라이언트에게 전송하기 때문에 클라이언트가 데이터 가공 출력을 동시에 진행하기에 클라이언트에 부담이 있습니다.
  • 1:N 방식에 적합하다. N:M 도 구현이 가능하지만 클라이언트의 과부하가 심합니다.
  • ex)) 실시간 스트리밍

MCU (Multi-point Controm Unit)

  • 서버와 Peer를 연결하는 중앙서버 방식으로 중앙 서버에서 데이터를 가공하여 클라이언트에게 데이터를 전달합니다.
  • 중앙 서버에서 데이터를 가공하여 클라이언트에게 전달하기 때문에 서버비용이 많이 든다는 단점이 있습니다.
  • 클라이언트는 서버에서 가공해서 데이터를 주기 때문에 클라이언트 부하가 줄었습니다. 하지만 서버에서 부하가 발생합니다.
  • N:M 방식에 적합하다. 1:1, N:M 방식에 사용하기에 서버 비용이 많이 들기 때문입니다.
  • ex)) 화상회의 

 


WebRTC 용어 정리

Caller

  • 연결을 요청하는 디바이스를 의미 합니다.

Calle

  • 연결 요청을 받는 디바이스를 의미 합니다.

SDP(Session Description Protocol) 란?

  • 미디어 유형 및 포트 번호, 코덱 및 인코딩 정보, 데이터 전송 방식, 세션 및 타이밍 정보, 네트워크 정보 등과 같은 형식과 규약을 정의하는 프로토콜입니다.
  • 초기 세팅 정보를 정의하는 SDP는 발행 구독 모델(Pub, Sub)과 유사한 제안 응답 모델(Offer, Answer)을 갖고 있습니다.
    • 피어가 미디어 스트림을 교환할 것이라고 제안(Offer)을 전송하면 상대방으로부터 응답(Answer)이 오기까지를 기다린다는 것을 뜻 합니다.

ICE (Interactive Connectivity Establishment)  란?

  • 서로 다른 네트워크에 있는 피어 간의 연결을 설정하기 위한 기술입니다.
  • Ice는 서로 다른 피어가 연결할 수 있는 최적의 경로를 찾아내는 역할을 합니다.
  • Ice 가 성공적으로 연결하면 음성, 영상, 데이터 교환을 위한 P2P 통신을 수행할 수 있습니다.

NAT 란?

  • 네트워크 주소를 변환하는 기술입니다.
  • 공유기에만 Public IP를 부여하고 공유기 안에 연결된 스마트 기기는 Private IP를 부여받게 되는 기술입니다.
  • 전 세계 스마트 기기에 모두 공인 IP를 부여하면 공인 IP 주소는 턱없이 부족하게 된다. 이를 방지하기 위해 NAT 기술을 사용하게 됩니다.

STUN  서버란?

  • NAT 방식을 사용하는 스마트 기기들은 공인 IP를 알 수 없어 같은 공유기에 접속되어 있지 않는 한 연결이 불가능합니다.
  • 그래서 STUN서버는 자신의 공인 IP 주소와 통신에 필요한 정보들을 알아내기 위해 사용됩니다.

TURN 서버 란?

  • 몇몇의 라우터들은 Symmetric NAT 제한을 위한 NAT을 채용하고 있습니다
  • STUN 서버로 연결을 시도했을 때 Symmetric NAT을 사용하는 클라이언트와 연결이 불가능할 때 이를 우회하기 위해 TURN 서버를 사용합니다.
  • 모든 기기는 TURN서버로 패킷을 보내고, 서버가 이를 포워딩한다. 이를 한 서버에서 처리하기 때문에 오버헤드가 발생합니다. 그래서 이 기술은 다른 대안이 없을때 사용하는 것을 권장합니다.

 

 

'Android' 카테고리의 다른 글

안드로이드 Compose란 + 예제  (0) 2024.03.05
안드로이드 DataBinding 사용 예제  (0) 2024.03.04
안드로이드 ROOM 사용법 + 예제  (0) 2024.03.03
Hilt 란?  (0) 2024.02.06
#1 안드로이드 4대 컴포넌트  (0) 2023.04.29

댓글