🎥
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 조합 위에서 동작하는 대표적인 예시입니다.