2026-01-16
WebRTC와 WebSocket: 개념 및 시그널링의 이해
오늘 실시간 통신 기술을 공부하며 정리한 WebSocket과 WebRTC의 핵심 개념, 그리고 두 기술이 어떻게 상호 보완적으로 사용되는지 정리한다.
1. WebSocket (웹소켓)
- 개념: 클라이언트와 서버 간의 양방향 통신을 지원하는 프로토콜. HTTP와 달리 연결을 끊지 않고 계속 유지(Persistent Connection)하여 실시간 데이터 전송이 가능하다.
- 특징:
- TCP 기반: 데이터의 신뢰성을 보장한다.
- Server-Client 구조: 중앙 서버를 거쳐 데이터를 주고받는다.
- 주요 용도:
- 실시간 채팅, 알림 서비스.
- Signaling(시그널링): WebRTC 연결을 맺기 위한 초기 정보 교환 단계.
2. WebRTC (Web Real-Time Communication)
- 개념: 웹 브라우저 간에 별도의 플러그인 없이 영상, 음성, 데이터를 실시간으로 전송하는 기술.
- 특징:
- P2P (Peer-to-Peer): 서버를 거치지 않고 클라이언트끼리 직접 데이터를 주고받아 속도가 빠르다.
- UDP 기반: 미디어 스트리밍에 적합하며, 약간의 패킷 손실이 있어도 실시간성을 최우선으로 한다.
- 핵심 용어:
- SDP (Session Description Protocol): 해상도, 코덱 등 미디어 메타데이터.
- ICE Candidate: 통신 가능한 네트워크 경로(IP, Port) 후보군.
- STUN/TURN 서버: NAT/방화벽 환경에서 P2P 연결을 돕거나(STUN) 트래픽을 중계(TURN)하는 서버.
3. 왜 함께 사용하는가? (Signaling 과정)
WebRTC는 P2P 연결을 지향하지만, 서로의 위치(IP)를 모르는 상태에서는 연결할 수 없다. 이를 해결하기 위해 WebSocket을 중개자로 활용한다.
- 만남의 장소 (WebSocket): Peer A와 Peer B가 시그널링 서버(WebSocket)에 접속한다.
- 정보 교환: WebSocket을 통해 서로의 SDP(미디어 정보)와 ICE Candidate(네트워크 정보)를 주고받는다.
- 직접 연결 (WebRTC): 정보 교환이 완료되면, WebSocket의 도움 없이 Peer 간 직접 영상/음성 데이터를 주고받는다.
4. 요약 비교
| 구분 | WebSocket | WebRTC |
|---|---|---|
| 통신 방식 | Server ↔ Client | Client ↔ Client (P2P) |
| 기반 프로토콜 | TCP | UDP (주로) |
| 주요 데이터 | 텍스트, JSON, 작은 바이너리 | 영상, 음성, 대용량 데이터 |
| 역할 | 연결 제어, 채팅, 시그널링 | 미디어 스트리밍 |