olrlobt

[WebRTC] WebRTC 통신방식 & 용어 정리 본문

else/WebRTC

[WebRTC] WebRTC 통신방식 & 용어 정리

olrlobt 2023. 1. 1. 19:10

국비교육 최종 프로젝트에서 WebRTC를 활용한 실시간 방송 역할을 맡았었다.

포스팅을 하면서 WebRTC에 대해 복습해 보려고 한다.

 

* WebRTC에 관한 공부를 하며 정리한 글로, 부정확한 개념 정리가 있을 수 있습니다.

* WebRTC에 관한 깊은 정리가 아닌, 간단히 구현을 해보고자 하는 개발자분에게 도움이 되려 글을 작성했습니다.

 

 

WebRTC 란?

Web Real-Time Communication 

WebRTC는 웹 브라우저간에 실시간 음성, 영상, 데이터 교환을 위한 기술이다. P2P(Peer-to-Peer) 기술을 이용해 통신을 하기 때문에, 서로 다른 네트워크에 있는 피어간에 음성, 영상, 데이터를 교환할 수 있으며, JS API로 제공되는 오픈소스이다.

 

ex) 화면 공유, 화상 회의, 실시간 방송 등등

 

https://ko.wikipedia.org/wiki/WebRTC

 


WebRTC 통신 방식

WebRTC는 P2P기술을 이용하는 기술로, 서버 없이 클라이언트와 클라이언트를 직접적으로 연결시킨다. 하지만 P2P 방식의 경우 1:N , N:M 연결을 했을 시, 클라이언트의 부하를 초래할 수 있기 때문에, 서버를 사용하여 통신하는 방식도 존재한다.

 

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

 

 

1. 시그널링 서버 (Signaling)

중앙 서버를 거치지 않고 클라이언트와 클라이언트가 연결되는, P2P 연결 방식이다.

 

보통 클라이언트는 서버와 연결하여 다른 클라이언트와 소통한다. 하지만 시그널링 서버는, 클라이언트와 클라이언트를 연결시켜 주고, 관리하는 역할만 할 뿐, 데이터를 공유하기 위해 중앙 서버를 거치지 않는다. 

 

따라서, 공유할 대상이 N명이라면, N번 데이터를 전송하는 과정을 거친다.

마찬가지로 데이터를 받을 대상이 M명이라면, M번 데이터를 받는 과정을 거친다.

 

1:1 연결 방식에 적합하며, 1:N 방식과 N:M도 사용이 가능하지만, 앞서 말한 것과 같이 클라이언트에 과부하를 초래하므로 권장하지 않는다.

 

ex) 화상통화

 

 

 

2. SFU 서버 (Selective Forwarding Unit)

서버와 Peer를 연결하는 중앙서버 방식으로, 중앙 서버에서 미디어 트래픽을 중계하는 연결 방식이다.

 

서버와 클라이언트 간의 연결이기 때문에, 데이터를 서버로만 전송하면 된다. 

하지만, 서버에서 데이터를 공유하기위해 Peer를 유지해야한다.

 

다시말해, 공유할 대상이 N명이라면, 서버로 1번만 데이터를 전송하면 된다.

하지만, 데이터를 M명이 전송을 했다면, M개의 Peer가 존재하므로, M번 데이터를 받는 과정을 거친다.

 

1:N 방식에 적합하며, N:M 방식도 가능하지만, 이 역시 클라이언트 과부하를 초래하고, 1:1 방식을 사용하기에는 서버 비용이 많이 들어 권장하지 않는다.

 

ex) 실시간 스트리밍

 

 

 

3. MCU 서버 (Multi-point Control Unit)

서버와 Peer를 연결하는 중앙서버 방식으로, 중앙 서버에서 데이터를 가공하여 수신측으로 데이터를 전달하는 연결 방식이다.

 

서버와 클라이언트 간의 연결이기 때문에, 데이터를 서버로만 전송하면 되고,

받은 데이터를 서버에서 가공하여 하나의 Peer로 유지하기 때문에 서버에서 한 번만 데이터를 받으면 된다.

 

공유할 대상이 N명이라면, 서버로 1번만 데이터를 전송하면 되고,

데이터를 M명이 전송했다면, 서버에서 1개의 Peer로 가공했기 때문에, 1번만 데이터를 받으면 된다.

 

N:M 방식에 적합하며, 1:1 방식과 1:N 방식에 사용하기에는 서버 비용이 많이 든다.

 

ex) 화상 회의

 


WebRTC 용어 정리

Peer 란?

Peer란 통신 상대의 컴퓨터를 의미한다.

 

Stream 이란?

Stream은 오디오와 영상 정보를 전송하기 위해 사용하는 데이터 구조이다. WebRTC는 웹 브라우저에서 캡처한 오디오와 영상 정보를 stream으로 만들고, 이 stream을 웹 서버나 통신 상대에게 전송한다.

 

 

NAT란?

Network Address Translation

말 그대로 네트워크 주소를 변환하는 기술이다. 현대인들은 노트북, 데스크탑, 모바일기기 등 스마트 기기를 수 없이 많이 갖고 있고, 각각에 공인 IP 주소를 부여하게 되면, IP주소는 턱 없이 부족하게 된다.

 

이를 방지하기위해, NAT 기술을 사용한다.

간단히 말해 공유기에만 공인 IP 주소를 부여하고, 해당 공유기에서 각각의 기기에 별칭 IP를 부여한다고 생각하면 편하다.

 

예를 들어, 지금 현재 PC의 IP는 192.168.0.x 의 형태를 띄고 있는데, 이는 공유기에서 PC에 부여한 IP로, 다른 네트워크에 연결하게 되면 아이피가 변경되게 된다.

 

webRTC에서 Peer 간 연결을 위해서는 공인 IP가 필요하고, 이 공인 IP는 PC 자체에서 확인할 수 없다. 따라서 webRTC에서 공인 IP를 통해 연결하기 위해 STUN/TURN 서버를 이용한다.

 

 

 

 

ICE 란?

Interactive Connectivity Establishment

 

서로 다른 네트워크에 있는 피어간에 연결을 설정하기 위한 기술이다. ICE는 서로 다른 피어가 연결할 수 있는 최적의 연결을 찾아내는 역할을 하고, NAT를 통과하기 위하여 ( 단말의 공인 IP를 확인하기 위하여) STUN 서버와 TURN 서버를 이용한다.

 

ICE가 성공적으로 연결을 설정하면, WebRTC는 음성, 영상, 데이터 교환을 위한 P2P 통신을 수행할 수 있다.

 

 

 

STUN (Session Traversal Utilities for NAT)  서버

NAT (Network Address Translation)방식을 사용하는 컴퓨터들은 공인 IP를 알 수 없어, 외부와의 연결이 불가능하다.

이를 해결하기 위해 사용하는 것이 STUN 서버이다.

 

STUN서버는 클라이언트의 공인주소에 연결이 가능한 지, NAT 뒤에 있는 클라이언트와 연결이 가능한 지에 대한 요청을 받는 역할을 한다.

 

STUN 서버는 보통, 구글에서 제공하는 무료 STUN 서버를 이용하면 된다.

 

 

TURN (Traversal Using Relays around NAT)  서버 

몇몇의 라우터들은 Symmetric NAT이라고 불리우는 제한을 위한 NAT을 채용하고 있다. 이 말은 peer들이 오직 이전에 연결한 적 있는 연결들만 허용한다는 것이다.

 

즉, STUN서버로 연결을 시도 했을때, Symmetric NAT를 사용하는 클라이언트는 연결이 불가능하기 때문에 이를 우회하기 위해 TURN 서버를 사용한다.

 

이는 오버헤드를 발생시키므로 다른 대안이 없을때만 사용하고,

webRTC에서는 STUN서버와 TURN 서버를 모두 사용하거나, STUN서버만을 사용해서 구현할 수 있다.

 

 

 

 

'else > WebRTC' 카테고리의 다른 글

[WebRTC] WebRTC 참고 사이트  (0) 2023.01.03
Comments