WebRTC
화상 회의, 음성 채팅, 실시간 화면 공유 같은 기능을 웹에서 구현하고 싶다면? 그럴 때 사용하는 기술이 바로 WebRTC입니다.
WebRTC는 브라우저와 브라우저 간에 서버를 거치지 않고도 직접 통신이 가능하게 해주는 P2P(피어 투 피어) 기반의 실시간 통신 기술입니다. 단일한 통신 프로토콜이라기보다는, 실시간 미디어 전송을 위해 STUN, TURN, SRTP, ICE 등 여러 네트워크 프로토콜을 조합한 기술 스택 또는 통신 프레임워크에 가깝습니다.
이 글에서는 WebRTC의 개념, 동작 구조, 실제 예제, 그리고 WebSocket과의 차이까지 개발자가 쉽게 이해할 수 있도록 정리해드립니다.
1. WebRTC란?
WebRTC(Web Real-Time Communication)는 웹 브라우저 간에 실시간 오디오, 비디오, 데이터를 전송할 수 있도록 해주는 오픈 소스 표준 기술입니다.
- 구글이 주도하여 개발
- 설치 없이 브라우저에서 바로 사용 가능
- WebRTC는 실제 통신에 P2P(피어 투 피어) 방식을 사용함
WebRTC로 가능한 것들
기능 | 설명 |
🎥 실시간 영상 전송 | 웹캠 화상 통화, 원격 회의 |
🎤 실시간 음성 통신 | 음성 채팅, VoIP |
📦 데이터 전송 | 파일 전송, 텍스트 데이터 교환 등 (DataChannel 사용) |
🖥️ 화면 공유 | 데스크톱, 창 공유 등 (화면 스트리밍) |
WebRTC 구성 요소 3가지
구성 요소 | 설명 |
getUserMedia | 마이크, 카메라 등 사용자 미디어 장치 접근 |
RTCPeerConnection | 피어 간 오디오/비디오 스트림 연결 |
RTCDataChannel | 브라우저 간 데이터 전송 (WebSocket처럼 사용 가능) |
장점
- 별도 설치 없이 브라우저에서 사용 가능
- 실시간 통신 (낮은 지연, 고성능)
- 영상, 음성, 데이터 모두 처리 가능
- 오픈 표준, 대부분의 브라우저 지원
단점
- 초기 설정 및 시그널링 로직이 복잡
- P2P 연결이 항상 보장되지는 않음 (특히 NAT, 방화벽 환경)
- 보안, 인증, 오류 처리 등은 개발자가 직접 구현해야 함
2. WebRTC 연결 과정
WebRTC는 브라우저 간 직접 연결을 시도합니다. 하지만 대부분의 환경에서는 NAT, 방화벽 때문에 중간 서버의 도움(신호 교환)이 필요합니다.
연결 흐름 요약
- getUserMedia()로 오디오/비디오 장치 접근
- 신호 교환(Signaling) : SDP 정보 교환 (보통 WebSocket 사용)
- ICE 후보 교환 : STUN 또는 TURN 서버 사용
- 피어 간 연결 완료 → 실시간 미디어/데이터 송수신 시작
- WebRTC 자체에는 Signaling 기능이 포함되어 있지 않기 때문에, WebSocket 등을 함께 사용해야 합니다.
실제 사용 예시 코드 (영상 통화 기본)
const pc = new RTCPeerConnection();
navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then(stream => {
document.getElementById("localVideo").srcObject = stream;
stream.getTracks().forEach(track => pc.addTrack(track, stream));
});
- 이 후에는 offer, answer, ICE candidate 등을 주고받는 signaling 과정이 필요합니다.
3. WebRTC의 핵심 기술들
기술 | 역할 |
STUN 서버 | 상대방의 공인 IP를 알아냄 |
TURN 서버 | 직접 연결이 불가능할 때 중계 역할 (속도 느림) |
ICE (Interactive Connectivity Establishment) | 가능한 모든 네트워크 후보(IP, 포트 등)를 시험 |
SDP (Session Description Protocol) | 연결 설정 정보(코덱, 미디어 포맷 등) 교환 |
4. WebRTC vs WebSocket
항목 | WebRTC | WebSocket |
목적 | 미디어(P2P) 통신 | 서버 ↔ 클라이언트 간 실시간 메시지 전송 |
실시간 오디오/비디오 | ✅ | ❌ |
데이터 전송 | ✅ (DataChannel) | ✅ |
서버 의존성 | ❌ (연결 후에는 P2P) | ✅ |
사용 예 | 화상 회의, 음성 채팅, 화면 공유 | 실시간 채팅, 알림, 주식 시세 등 |
5. 마무리
WebRTC는 높은 실시간성과 퍼포먼스를 제공하지만, 초기 설정이 복잡하고 보안 및 인증 처리를 개발자가 직접 구현해야 한다는 점에서 진입장벽이 다소 있습니다. 그럼에도 불구하고 웹 기반 실시간 미디어 통신의 핵심 기술로 자리잡고 있으며, Zoom, Google Meet, Discord 등 다양한 서비스에서 실제로 활용되고 있습니다.
함께 보면 좋은 자료
외부 사이트 :
블로그 글 :
[WebSocket] 채팅부터 알림까지, 실시간 웹의 기반
WebSocketHTTP로는 실시간 채팅, 알림 서비스 등을 구현하기 어렵다는 얘기를 들어본 적 있으신가요? 그럴 때 등장하는 기술이 바로 WebSocket입니다. WebSocket은 웹에서 클라이언트(브라우저)와 서버가
dachaes-devlogs.tistory.com
[WebSocket과 WebRTC] 실시간 통신, 어떤 기술을 써야 할까?
WebSocket과 WebRTC 웹에서 실시간 기능을 구현하려면 가장 먼저 떠오르는 기술이 WebSocket과 WebRTC입니다. 이 둘은 모두 실시간을 지원하지만, 사용하는 목적과 동작 방식이 크게 다릅니다.이 글에서
dachaes-devlogs.tistory.com
'컴퓨터 사이언스 > 네트워크' 카테고리의 다른 글
[프록시 서버] 인터넷의 중간자, 프록시 서버란 무엇인가? (0) | 2025.04.15 |
---|---|
[WebSocket과 WebRTC] 실시간 통신, 어떤 기술을 써야 할까? (0) | 2025.04.14 |
[WebSocket] 채팅부터 알림까지, 실시간 웹의 기반 (0) | 2025.04.14 |
[DNS] 도메인 이름을 IP 주소로 바꿔주는 인터넷의 전화번호부 (0) | 2025.04.14 |
[OSI 7계층과 TCP/IP 4계층] 네트워크의 설계도 (0) | 2025.04.13 |