중간자 없이 브라우저 간에 오디오나 영상 미디어를 포착하고 마음대로 스트림 할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술이다.
WebRTC의 연결과정
- 각 브라우저가 P2P 커뮤니케이션에 동의
- 서로의 주소를 공유
- 보안 사항 및 방화벽 우회
- 멀티미디어 데이터를 실시간으로 교환
브라우저는 웹 서버가 아니기 때문에, 외부에서 접근할 수 있는 주소가 없다. 따라서 통신 설정 초기 단계에서는 중재자의 역할이 필요하다
Session Traversal Utilities for NAT (STUN)는 당신의 공재적 주소(Public Address)를 발견하거나 Peer 간의 직접 연결을 막는 등의 라우터의 제한을 결정하는 프로토콜이다. 즉, STUN 서버는 인터넷의 복잡한 주소들 속에서 유일하게 자기 자신을 식별할 수 있는 정보를 반환해준다
일부 환경에서는 NAT 의 보안정책에 따라 Peer 끼리 직접적인 연결이 안되는경우가 있다. 따라서 이러한 경우에는 커넥션을 중계해 줄 서버가 필요한데, 이러한 역할을 하는게 TURN (Traversal Using Relays around NAT) 서버이다.
모든 Peer 끼리 커넥션을 맺는 방식으로서, 중계서버가 필요없기때문에 3가지 방식중에 가장 낮은 지연시간을 보여준다. 그러나 모든 Peer 에 대한 connection을 유지하고 있어야 하기 때문에 Peer 1명이 늘때마다 클라언트에 대한 부하가 굉장히 많이 늘어난다.
미디어 트래픽을 하나의 중앙서버가 중계하여 client에게 전송하는 방식이다. 이러한 방식은 Client 의 부하가 거의 없다는것이 장점이기는 하지만 WebRTC 기술의 가장 큰 장점인 실시간성이 저해되고, 또한 클라이언트에 부하가 없는 만큼 중앙서버가 굉장히 큰 부하를 가진다는 단점이 있다.
MCU 와 비슷하게 중앙 서버에서 미디어 트래픽을 중계하는 방식이지만 DownLink 가 본인을 제외한 갯수만큼 존재하기 때문에 Mesh 방식과 거의 비슷한 수준의 지연시간을 보여준다. (실시간성 보장) 그러나 Connection 이 많은 만큼 서버에 부하가 많을뿐더러, Client 의 부하 또한 MCU 에 비해 높다는것이 단점이다.
참고자료
https://medium.com/@hyun.sang/webrtc-webrtc%EB%9E%80-43df68cbe511
https://wormwlrm.github.io/2021/01/24/Introducing-WebRTC.html
https://millo-l.github.io/WebRTC-%EA%B5%AC%ED%98%84-%EB%B0%A9%EC%8B%9D-Mesh-SFU-MCU/