-
Notifications
You must be signed in to change notification settings - Fork 0
WebRTC Basic
Albert Kong edited this page Oct 24, 2025
·
7 revisions
Web Real-Time Communication의 약자.
브라우저와 모바일 앱에서 별도 플러그인 없이 실시간 음성, 영상, 데이터 통신을 가능하게 하는 오픈소스 프로젝트.
핵심 특징
- P2P 직접 통신
- 낮은 지연 시간
- 브라우저 네이티브 지원
- 암호화 기본 제공 (DTLS, SRTP)
P2P 연결을 수립하기 위한 메타데이터 교환 과정. WebRTC 표준에는 시그널링 방법이 정의되어 있지 않으므로 선택 필요.
교환 정보
- Session Description (SDP)
- ICE Candidate (네트워크 경로)
- 미디어 코덱 정보
- 대역폭 제약
일반적인 구현
- WebSocket
- Socket.io
- HTTP Long Polling
- SIP
현재 프로젝트: Socket.io 사용 (WebSocket 폴백, 자동 재연결)
NAT와 방화벽을 통과하여 최적의 연결 경로를 찾는 프레임워크.
동작 과정
- 로컬 네트워크 주소 수집
- STUN 서버로부터 공개 주소 획득
- TURN 서버를 통한 중계 경로 확보 (선택)
- 모든 후보(Candidate) 정보를 상대방과 교환
- 연결 가능한 경로 테스트
- 최적 경로 선택
ICE Candidate 타입
- Host: 로컬 네트워크 주소
- Server Reflexive: STUN으로 발견한 공개 주소
- Relay: TURN 서버를 통한 중계 주소
클라이언트가 NAT 뒤에서 자신의 공개 IP 주소와 포트를 발견하도록 돕는 서버.
역할
- 공개 주소 확인
- NAT 타입 판별
- P2P 연결 가능 여부 확인
무료 공개 STUN 서버
stun:stun.l.google.com:19302
stun:stun1.l.google.com:19302
제약
- Symmetric NAT 환경에서는 P2P 연결 불가
- 데이터 중계 기능 없음
P2P 연결이 실패할 때 데이터를 중계하는 서버. STUN의 확장.
사용 시나리오
- Symmetric NAT 환경
- 기업 방화벽으로 P2P 차단
- 모든 ICE Candidate 연결 실패
트레이드오프
- 연결 성공률 향상 (거의 100%)
- 서버 대역폭 비용 증가
- 지연 시간 증가
운영 전략
- TURN은 최후의 수단으로만 사용
- 대부분 연결은 STUN으로 해결 (80-90%)
미디어 세션의 속성을 설명하는 텍스트 기반 프로토콜.
포함 정보
- 미디어 타입 (audio, video, data)
- 코덱 및 포맷
- 네트워크 정보 (IP, 포트)
- 대역폭 정보
- 암호화 키
SDP 교환 흐름
- Caller가 Offer SDP 생성
- 시그널링 서버를 통해 전달
- Callee가 Answer SDP 생성
- Offer와 Answer 교환 완료 후 연결 시작
예시
v=0
o=- 123456789 2 IN IP4 127.0.0.1
s=-
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 51372 RTP/AVP 31
a=rtpmap:31 H261/90000
sequenceDiagram
participant A as Peer A
participant S as Signal Server
participant B as Peer B
A->>A: createOffer()
A->>S: Offer SDP
S->>B: Offer SDP
B->>B: createAnswer()
B->>S: Answer SDP
S->>A: Answer SDP
A->>S: ICE Candidates
S->>B: ICE Candidates
B->>S: ICE Candidates
S->>A: ICE Candidates
Note over A,B: P2P Connection Established