it공부 (개념)/웹

WebRTC 연결에 대한 개괄적 설명: 웹 브라우저간 실시간 통신API를 공부하고 줌, 디스코드와 같은 프로그램을 만들어보자

cantor 2023. 2. 9. 00:00

 

WebRTC의 개념 및 용어에 대한 간단한 설명글입니다.

 

 

WebRTC란?

Web Real-Time Communication (웹 실시간 커뮤니케이션)의 약어이다.

이름 그대로 웹을 통해 실시간으로 정보교환을 가능케 하는

코드가 공개된 무료 (오픈소스) 기술이다.

 

웹 브라우저끼리, 혹은 웹 브라우저와 서버 간 플러그인 없이 통신할 수 있게 해주는

peer-to peer 앱 프로그래밍 인터페이스(API)를 제공한다.

 

*데이터는 오디오, 비디오 및 기타 데이터를 포함하며
webRTC는 통화나 데이터 공유에 사용된다.

 

Peer - to -Peer (P2P) 통신이란?

peer:

동료, 혹은 비슷한 개체들을 뜻하는 단어이다.

WebRTC의 peer는 "브라우저"를 의미한다.

 

Peer to Peer 통신:

서버등의 중개 기관없이 노드 간 데이터를 직접 전송하는 통신방법이다.

데이터는 발신노드에서 수신노드로 즉시 전송된다.

 

p2p를 사용하는 프로그램.

 

토렌트는 대표적인 클라이언트(개인 컴퓨터)끼리 중개자 서버 없이

직접적으로 파일 데이터를 공유하는  대표적인 p2p 프로그램이다.

 

한 유저가 파일을 다운로드하기 위해선 다른 유저의 시드유지가 필요하다.

(토렌트에서 그 파일을 공유 중이어야 한다.)

또 시드유지자가 많을수록 파일 다운로드 속도가 빨라진다.

 

그 외에도 다른 파일공유프로그램이나

줌, 디스코드 같은 실시간 통신 프로그램에도 많이 사용된다.

 

Web RTC를 통한 브라우저간 연결이 생성되는 과정

 

1. P2P 연결

각 브라우저끼리 시그널링 서버(signaling server)를 통해

멀티미디어에 대한 정보를 담고 있는 SDP 포맷의 데이터를 교환한다.

이후 각 브라우저별로 통신에 필요한  경로정보(ICE candidates)를 STUN 서버 혹은 TURN 서버에 의해 생성받는다.

생성된 ICE candidates도 시그널링 서버로 교환한다.

 

위 과정이 성공적으로 수행될 경우 P2P 연결이 생성되고

다른 서버를 거치지 않은 브라우저간 직접 데이터 교환이 이루어진다.

 

2. 중개 연결

방화벽등의 이유로 P2P 연결생성이 좌절될 경우 Turn 서버가 중개서버 역할을 한다.

Turn 서버는 발신인(caller)의 데이터를 (callee)에게 전달해 준다.

 

 

위에 사용된 다소 생소한 용어들을 차근차근 살펴보자.

    • Signaling Server
    • STUN Server
    • Turn Server
    • ICE candidates
    • SDP

 

WebRTC 통신 조직도

caller 는 발신인, callee는 수신인이다.

 

 

 

signaling server(시그널링 서버)

 

정보신호 중개서버로, 두 클라이언트 간 연결정보를 중개해 주는 서버이다.

시그널링 서버는 멀티미디어 데이터 교환 중개서버가 아니다.

멀티미디어 데이터 교환은 중개서버 없이 P2P로 연결된 경로로 이루어진다.

경로 연결을 위해 필요한 정보만 교환되는 곳이 시그널링 서버이다.

 

각 브라우저는 IP주소, port주소 등을 포함한 ICE candidates를 교환한 후,

멀티미디어의 교환에 대한 약속을 담고 있는 SDP까지만 시그널링 서버를 통해 교환한다.

 

 

STUN Server(Session Traversal Utilities for NAT)

NAT(network address trasition: 네트워크 주소변환)을 대비한 세션 순회 유틸리티 서버.

 

클라이언트에게 통신을 위한 Public IP(공공 IP) 주소와 NAT 타입을 찾아준다.

즉 Ice candidates를 생성해 준다.

Turn Server(Traversal Using Relays around NAT)

NAT제한을 우회하는 중재 순회 서버.

턴서버는 스턴서버 또는  P2P 연결을 보조하기 위한 장치이다.

 

턴서버의 역할

 

1. 폴백 역할:

스턴 서버가 클라이언트에게 Ice candidates를 찾아주는 것을 실패할 경우

턴서버가 스턴서버의 역할을 대체한다.

 

2. 중개자 역할:
방화벽, 네트워크 접근 제 한 등에 의해 P2P 연결이 불가능할 경우에
멀티미디어 데이터가 경유되는 중간 매개서버 역할을 한다.

턴서버가 중개자역할을 할 때의 연결방식은 P2P가 아니다.

 

*이렇게 중간 서버를 한번 거쳐 연결하는 것을

릴레이 연결, 또는 중재 연결이라 한다.



 

ICE candidates

Interactive Connectivity Establishment candidates:
양방향 연결을 위한 후보군

 

잠재적인 연결 경로라는 뜻으로, P2P 연결을 위한 네트워크 주소정보이다.

Ip 주소, Port 주소 등을 포함한다.

시그널링 서버를 거쳐 브라우저간에 교환된다.

STUN 서버 혹은 TURN서버에 의해 생성된다.

 

SDP(session Description Protocol)

멀티미디어 전송을 위한 세션의 규격을 묘사하는 통신규약.

비디오 및 오디오를 포함한 미디어의 코덱, 전송간격(timing)등 

데이터 전송 양식에 대한 정보를 포함한다.

 

 

WebRTC의 연결 설정 과정

1. WebRTC Offer:

caller(발신인)이 WebRTC Offer를 통해 데이터공유 연결을 요청한다.

 

WebRTC Offer는 발신인의 SDP정보가 들어있으며

시그널링 서버를 통해 callee(수신인)에게  전송된다.

 

 

 

2. WebRTC Answer:

수신인의 WebRTC Answer를 통해 데이터 공유요청에 응답한다.

 

WebRTC Answer는 수신인의 SDP정보를 담고 있으며

시그널링 서버를 통해 발신인에게 전달된다

 

 

3. Get ICE Candidates:

발신인과 수신인이 각자의 스턴 서버에게 ICE Candidates를 요청한다.

 

ICE candidates는 IP주소, port주소등 잠재적인 연결경로 후보군의 정보를 포함하고 있으며

시그널링 서버를 통해 발신인과 수신인이 서로의 ICE Candidates를 주고받는다.

 

 

4. Peer to Peer Connection

발신인과 수신인이 SDP와 ICE Candidates를 성공적으로 교환할 시 

브라우저간 직접 연결이 성사된다.

이후 연결의 참여자들이 직접적으로 멀티미디어 데이터를 공유한다.

 

5. Relay Connection

P2P 연결이 실패했을 경우, TURN 서버를 경유하는

릴레이 연결, 또는 중재연결이 이루어진다.

 

이후 연결의 참여자들은 TURN서버를 거쳐서 멀티미디어 데이터를 공유한다.

 

 

참고

 

Udemy 강의

WebRTC Practical Course, Create Video Chat Application

 

유튜브

노마드 코더 Nomad Coders 채널

3 3 Introduction to WebRTC

 

 

그림

어도비 익스프레스로 직접 작업

 

 

 

읽어주셔서 감사합니다.

혹시 오탈자나 내용오류가 있으면 지적해 주세요.