📹

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)