WebRTC와 STUN·TURN·ICE 완전정복

브라우저끼리 직접 연결되는 실시간 통신이 NAT 뒤에서 어떻게 경로를 찾는지 순서대로 살펴보세요.

🎥

1. WebRTC란

WebRTC(Web Real-Time Communication)는 별도의 플러그인이나 프로그램 설치 없이 브라우저끼리 직접 음성, 영상, 데이터를 실시간으로 주고받을 수 있게 해주는 표준 기술입니다. 화상회의 서비스 상당수가 이 기술을 바탕으로 동작합니다.

🧱

2. NAT 뒤에서 생기는 문제

대부분의 가정·회사 기기는 사설 IP 주소를 쓰며 공유기의 NAT를 거쳐 인터넷에 나갑니다. 그래서 상대방 브라우저가 내 기기에 직접 접속하려 해도, 내 공인 IP와 포트가 정확히 무엇인지 미리 알 방법이 없습니다.

🛰️

3. STUN: 내 공인 주소 알아내기

STUN(Session Traversal Utilities for NAT) 서버는 내 기기가 요청을 보내면 "그 요청이 인터넷에는 어떤 공인 IP·포트로 보였는지"를 그대로 알려줍니다. 이 정보를 상대방과 교환하면 중간 서버 없이 직접 연결(P2P)을 시도할 수 있습니다.

🔁

4. TURN: 안 되면 중계 서버로

대칭형 NAT처럼 STUN만으로는 직접 연결이 열리지 않는 환경도 있습니다. 이럴 때는 TURN(Traversal Using Relays around NAT) 서버가 양쪽 사이에서 모든 데이터를 대신 중계합니다. 연결 성공률은 가장 높지만 서버 대역폭을 그대로 사용하므로 비용이 들어 최후 수단으로 쓰입니다.

🧭

5. ICE: 가능한 경로 중 최적을 선택

ICE(Interactive Connectivity Establishment)는 STUN으로 얻은 공인 주소 후보, 로컬 네트워크 주소 후보, TURN 중계 경로 후보를 모두 모아 실제로 연결에 성공하는 경로를 자동으로 찾아 최적의 것을 선택하는 절차입니다.

📨

6. 시그널링 서버의 역할

WebRTC 표준 자체는 "연결 전에 후보 정보를 어떻게 주고받을지(시그널링)"는 정의하지 않습니다. 그래서 웹소켓 등을 이용한 별도의 시그널링 서버가 최초 연결 정보를 중개해준 뒤에야, 이후의 실제 미디어 전송은 P2P나 TURN 경로로 이뤄집니다.

💡

7. 실생활 활용 예

화상회의, 브라우저 화면 공유, 설치 없이 쓰는 브라우저 간 파일 전송 서비스 등이 모두 WebRTC와 STUN·TURN·ICE 조합 위에서 동작하는 대표적인 예시입니다.

게임 콘솔의 NAT 유형도 비슷한 원리입니다

PS5나 Xbox에서 표시되는 NAT 유형 표시가 궁금하다면게임 콘솔 NAT 유형(Open·Moderate·Strict) 이해하고 해결하기도 함께 확인해보세요. 같은 NAT 통과 문제를 다른 상황에서 다룹니다.

NAT의 종류가 궁금하다면

STUN으로 연결이 잘 되는지 여부를 가르는 NAT 분류가 궁금하다면NAT의 종류 완전정복도 참고해보세요.

자주 묻는 질문

STUN과 TURN 중 어느 쪽이 더 좋은 방식인가요?

STUN을 이용한 직접 연결(P2P)이 지연시간과 서버 부담 면에서 더 유리합니다. TURN은 직접 연결이 불가능할 때를 대비한 대안으로, 모든 데이터가 중계 서버를 거치기 때문에 상대적으로 비용과 지연이 더 클 수 있습니다.

화상회의 중 갑자기 화질이 나빠지는 것도 이 기술과 관련 있나요?

네, 관련이 있을 수 있습니다. ICE가 선택한 경로가 불안정하거나 TURN 중계 서버 대역폭이 부족한 경우 화질이나 지연시간에 영향을 줄 수 있습니다.