ㅁㄴㅇㄻㄴㅇㄹ

Web RTC란 본문

카테고리 없음

Web RTC란

hanbin8269 2022. 6. 1. 00:46

Web RTC는 웹, 앱 애플리케이션이 별도의 소프트웨어 없이 음성, 영상 미디어 혹은 텍스트, 파일같은 데이터를 브라우저 끼리 주고 받을 수 있게 만든 기술이다. WebRTC로 구성된 프로그램들은 별도의 플러그인이나 소프트웨어 없이 p2p 화상회의 및 데이터 공유를 한다.

→ 웹 브라우저 상에서 어떤 플러그인 없이 음성채팅은 물론이며 화상채팅, 데이터 교환까지고 가능하게 하는 기술

WebRTC 기술은 p2p 통신에 최적화 되어있다.

 

STUN

NAT 환경 클라이언트는 자기가 누구인지(내 공인 IP가 무엇인지) 모르기 때문에 라우터에 연결된 공인 IP를 알아내는 과정이 필요한데, 이를 STUN이 한다.

사설 IP를 가진 PC에서 요청을 보내면 라우터를 통해 인터넷 망으로 나온다. 이때는 라우터의 공인 IP로 변환되어 나오고ㅡ STUN 서버로 도착하면 패킷의 헤더를 읽어 IP와 포트를 테이블에 저장하는 동시에 응답으로 보냅니다. 이로써 PC는 자신이 속한 라우터의 공인 IP를 알게 되고 자신을 구별하는 포트번호를 알 수 있게 됩니다.

NAT(네트워크 주소 변환) 란

IP 패킷에 있는 출발지 및 목적지의 IP주소와 TCP/UDP 포트 숫자등을 바꿔 재기록하면서 네트워크 트래픽을 주고 받게 하는 기술

NAT를 쓰는 이유는

여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속 할 수 있도록 하는데, 이런 방식을 사용하면

  • 공인 IP 주소를 절약할 수 있으며
  • 공개된 인터넷과 사설망 사이에 방화벽을 설치하여 외부 공격으로부터 사용자의 통신망을 보호할 수 있다.

시그널링 이란

RTC PeerConnection 통신에 사용할 프로토콜, 채널, 미디어 코덱 및 형식, 데이터 전송 방법, 라우팅 정보와 NAT 통과 방법을 포함한 통신 규격을 교환하기 위해 두 장치의 제어 정보를 교환하는 과정을 의미한다.

시그널링은 WebRTC 자체에서 지원하는 기능이 아니라, WebRTC 연결 전 미리 준비해야 하는 과정이다. WebRTC 자체의 스펙도 아니기 때문에, 한 가지로 딱 정해진 방법이 없다.

정해진 방법이 없는 이유는 알 수 없는 두 장치가 언제 어떤 방식으로 연결 될 수 있는 지의 모든 경우를 예측하는 것이 불가능하기 때문이다. 따라서 개발자는 자신에게 맞는 최적의 방법을 선택적으로 적용할 수 있다.

일반적으로 두 개의 장치를 연결 할 수 있는 시그널링 서버를 직접 구축하거나, 시그널링 서버를 제공해주는 외부 솔루션을 적용할 수 있다.

만약 직접 구축한다면 웹 소켓이나 서버 전송 이벤트 방법을 적용할 수 있다.

시그널링 정보를 조회할 수 있는 API를 만든 후 브라우저 단에서 주기적으로 XHR을 요청하는 폴링 기법을 쓸 수도 있다.

→ 웹 브라우저 상에서 어떤 플러그인 없이 음성채팅은 물론이며 화상채팅, 데이터 교환까지고 가능하게 하는 기술

WebRTC 기술은 p2p 통신에 최적화 되어있다.

P2P 통신이란?

P2P 연결방식

Peer to Peer 라는 뜻으로, 서버 없이 각 단말들이 서로 동등한 입장에서 통신을 하는 네트워크를 말한다.

하지만 여러명의 사용자가 접속하는 상황이 생겼다면, 접속중인 사용자 PC에게 엄청난 과부하를 줄 수 있다.

그렇기 때문에 1:N, M:N 통신에 최적화 되어있는 SFU 와 MCU를 사용한다.

SFU (Selective Forwording Unit)

SFU 연결방식

SFU는 1:N 연결에 최적화 되어 있다. 중앙 서버를 두고 클라이언트를 1명씩 중개해주는 역할을 한다.