📹
WebRTC는 어떻게 동작하나?
브라우저 간 직접 영상/음성/데이터 전송
WebRTC(Web Real-Time Communication)는 브라우저 간 P2P 통신 표준입니다. 연결 수립 과정은 복잡하지만, 일단 연결되면 서버를 거치지 않고 직접 미디어/데이터를 전송합니다. 시그널링 서버(WebSocket 등)로 SDP(세션 기술)와 ICE candidate를 교환하고, STUN 서버로 공인 IP를 알아내며, 직접 연결이 불가능하면 TURN 서버가 중계합니다.
구조 다이어그램
시그널링 단계 (연결 준비)
💻
Peer A
SDP Offer 생성
① Offer
→
📡
시그널링 서버
(WebSocket)
② 전달
→
💻
Peer B
SDP Answer 생성
NAT 탐색 + P2P 연결
💻
Peer A
내 공인 IP는?
③ STUN 요청
↔
STUN
공인 IP 반환
④ P2P 직접 연결!
ICE candidate 교환 → 최적 경로 선택
💻
Peer B
직접 연결 불가 시?
→
TURN 서버
가 미디어를 중계 (relay)
연결 완료 후
💻
Peer A
영상
음성
데이터
↔ 서버 경유 없이 직접 전송
💻
Peer B
동작 흐름
1
Peer A가 시그널링 서버에 연결 (WebSocket)
2
Peer A가 RTCPeerConnection 생성, SDP Offer 생성 후 시그널링으로 전송
3
Peer B가 SDP Offer 수신, SDP Answer 생성 후 시그널링으로 응답
4
양쪽이 ICE candidate를 수집 (STUN 서버로 공인 IP 확인)
5
ICE candidate 교환 → 최적 경로 선택 → P2P 직접 연결 수립
6
직접 연결 불가 시 TURN 서버가 미디어 중계 (relay)
장점
- ✓ 서버 비용 최소화 (P2P 직접 전송)
- ✓ 저지연 통신
- ✓ 브라우저 내장 API
- ✓ 별도 플러그인 불필요
단점
- ✗ 시그널링 서버는 별도 필요
- ✗ NAT/방화벽 문제 (STUN/TURN 필요)
- ✗ TURN 서버 비용 (중계 시)
- ✗ 브라우저 호환성 이슈
사용 사례
Google Meet / Zoom (웹 버전)
브라우저 화상 통화
화면 공유
P2P 파일 전송
실시간 게임 (DataChannel)