Unity/Server

What is WebRTC Server In Unity (Signaling, STUN, TURN) 완벽 정리 !

공훈이 2023. 7. 24. 14:37
반응형

WebRTC란? 

WebRTC(Web Real-Time Communication)은 웹 브라우저와 SW 간에 실시간 통신을 가능하게 해주는 기술입니다. 

WebRTC를 사용해서 다른 플레이어와 비디오, 오디오, 데이터 등을 공유하며 실시간 멀티플레이 게임, 비디오 채팅, 화상 회의 등 다양한 응용 프로그램을 개발할 수 있습니다. 

 

WebRTC의 기본 구성 요소

1. Signaling Server :

Signaling Server는 피어 간 연결을 하기 위해 신호 전달 서버를 사용합니다. 이 서버는 클라이언트 간의 연결 및 정보를 교환하기 위한 중개 역할을 한다고 보시면 될꺼같습니다. 즉 애플리케이션에서 사용자들끼리 신호를 발견하고 연결할 수 있도록 도와주는 서버입니다. WebSocket을 통해 신호를 전송하고 Json 등 여러 형식의 데이터로 피어 정보를 교환하는 방식으로 구현됩니다. 

Signaling Server

2. STUN(Session Traversal Utilities for NAT) Server: 

STUN 서버는 NAT(Network Address Translation) 뒤에 있는 사용자가 자신의 공인 IP 주소와 포트번호를 알아내는데 사용됩니다. 사용자는 자신의 사설 IP주소만 알고 있기 때문에 상대방과 직접적으로 통신하기 위해서는 공인 IP주소와 포트를 알아내야 통신이 가능합니다. 이를 통해 사용자는 다른 피어와 직접적인 P2P(Peer-to-Peer) 연결을 시도할 수 있습니다. STUN 서버는 이러한 정보를 제공해주는 역할을 합니다. 

 

3. TURN(Traversal Using Relays around NAT) Server : 

TURN 서버는 피어간 직업연결이 불가능 할때 사용되는 백업 서버로 두 피어 간에 NAT 또는 방화벽 뒤에 있고 직접 연결을 할 수 없는 상황에서 TURN 서버를 거쳐 데이터를 전송합니다. 이때 TURN서버는 데이터를 중계하는 역할을 하며 직접적인 연결이 부족할 때 백업 경로로 사용됩니다. 

STUN/TURN Server

TIP ! 추가적으로 STUN/TURN서버 구현 같은 경우에는 직접 구현하기보다는 오픈소스 라이브러리나 서드파티 서비스를 사용하는 것이 좋습니다. 

1. Coturn 오픈소스 서버 사용 (https://github.com/coturn/coturn)

2.  구성 파일 Relay 설정 추가 (turnserver.conf)

listening-port=3478
tls-listening-port=5349
fingerprint
realm=my.turn.server
user=username:password
relay-ip=YOUR_PUBLIC_IP

3. TURN 서버 실행 

turnserver -c turnserver.conf

 

반응형