Network/webRTC

WebRTC 란

조기축구아저시 2023. 1. 8. 15:52

WebRTC란

웹에서 별도 플러그인 없이 RTC 실시간 통신(Real time Communication) 하기 위한 Open API

 

ICE(Interactive Connectivity Establishment)

- Peer 간에 웹 브라우저를 연결해주는 프레임워크

 

Peer가 Private Ip를 가지는 경우 해결법 : Stun 서버 (session traversal utilities for NAT)

- Stun 서버로부터 public ip를 얻어 configuration에 담아 PeerConnection을 만든다.

Peer의 라우터가 Symmetric NAT 제한을 걸어둔 경우 해결법 : Turn 서버

- Traversal Using Relays around NAT

- Peer들이 Behind Symmetric NAT 상태로 설정되어 있는 경우

  최초 1회 연결이 필요하나 방법이 없다.

- 이 경우 Public 망에 있는 TURN server를 통해 Peer가 Connection을 맺고

  Turn Server가 relay 해주는 방식으로 우회를 한다.

- 성능이 좋지 않음에 따라 상용 App 제작시 서버(Peer)의 라우터 설정을 수정한다.

 

 

Stun 서버, Turn 서버는 ICE에 등록해두면
Candidate 결정(negotiate 협상)시 결과에 따라 자동 적용된다.

 

https://web.dev/webrtc-infrastructure/

 

Build the backend services needed for a WebRTC app

 

web.dev

 

RTCPeerConnection (Web API)

- 브라우저에 내장된 WebRTC 내부에서 많은 일을 수행한다.

- packet loss 처리, echo cancellation, bandwidth adaptivity 등

 

참고링크

- https://hpbn.co/webrtc/#real-time-network-transports 

 

RTCDataChannel

- Peer간의 Data를 주고 받을 수 있는 Tunnel API

- WebSocket과 유사하지만 P2P방식이다.

- 샘플코드

> https://simpl.info/rtcdatachannel/ 

> https://github.com/samdutton/simpl/blob/gh-pages/rtcdatachannel/js/main.js 

 

참고링크

- https://www.html5rocks.com/ko/tutorials/webrtc/basics/#toc-rtcdatachannel (WEB RTC)

- https://www.wowza.com/blog/the-role-of-webrtc-in-low-latency-media-streaming (WEB RTC)