else Study

WebRTC 넌 누구니

Wootaeng 2021. 9. 8. 00:06
728x90

영상통화 관련 자료를 찾다가 WebRTC 를 알게 되어서 정리를 한다.

 

WebRtc (Web Real Time Communication)

브라우저간의 별도 플러그인 없이 P2P 통신이 가능한 시스템

음성, 화상회의 , 파일 교환 등의 기능 시 브라우저, 즉 피어들 끼리의 커넥션이 만들어지는데 이때 별도의 드라이버나 플러그인이 필요없는 방식이다.

 

피어 끼리의 커넥션 

Peer < — RTCPeerConnection Interface —> Peer

이 과정에 Connection이 되면 미디어스트림MediaStream , RTCDatachannel 을 활용해서 연결을 유지 종료한다.

 

 

RTCPeerConnection

로컬 컴퓨터와 원격 피어 간의 WebRTC 연결을 담당하며 원격 피어에 연결하기 위한 메서드들을 제공하고, 연결을 유지하고 연결 상태를 모니터링하며 더 이상 연결이 필요하지 않을 경우 연결을 종료합니다.

 

미디어스트림 MediaStream

미디어 정보를 가지는 다수의 track 들로 구성

동기화된 오디오 andOr 비디오 소스

 

RTCDataChannel

임의의 데이터의 양방향 P2P 전송을 위해 사용될 수 있는 네트워크 채널

 

WebRTC Protocol

NAT(Network Address Translation)

Private IP 를 Public IP 로 1대1 대응시켜 변환하는 장치이다.

 

ICE(Interactive Connectivity Establishment)

브라우저가 peer 를 통한 연결이 가능하도록 해주는 프레임워크

Peer A 와 Peer B 간의 연결 오류가 있다면

1)방화벽을 우회하거나

2)장치에 공용 IP주소가 없는 경우 주소부여

3)라우터가 peer 에 직접 연결을 할 수 없을 때 서버를 통해 데이터를 릴레이 시킨다

이 과정에서 STUN / TURN 를 이용하여 수행한다

 

STUN(Session Traversal Utilities for NAT)

공용IP 주소를 검색하고 피어와의 직접연결을 막는 등의 라우터의 제한을 결정하는 프로토콜.

STUN 서버는 해당 Peer의 공인 IP 주소를 보내는 역할이다

단, 두 Peer 가 같은 NAT 환경에 있을 경우 or NAT 의 보안정책 등의 이유에 따라 STUN을 사용 못하는 경우가 있다.

STUN 과정https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Protocols/webrtc-stun.png

 

 

TURN(Traversal Using Relays around NAT)

STUN의 확장 개념으로 NAT 환경에서 릴레이 서버를 이용하여 통신하는 방법

NAT 보안 정책 or 동일한 NAT 환경에서 STUN은 사용할 수 없기에 릴레이 서버 역할을 하는 TURN 서버를 경유해서 통신한다.

단, 클라이언트에게 연결을 거의 항상 제공하지만 STUN에 비해 리소스 낭비가 심하다는 단점이 있다

그렇기 때문에 ICE Candidate 과정에서 여러 조건을 검색하다 최후의 수단으로 사용해야한다

TURN 과정 https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Protocols/webrtc-turn.png

 

더 정확한 정보는

Mozilla 를 참고!

 

 

728x90
반응형