# WebRTC 개요 (Overview of WebRTC)

#### WebRTC의 개념 및 정의

WebRTC(Web Real-Time Communication)는 웹 브라우저나 모바일 애플리케이션에서 플러그인이나 네이티브 애플리케이션의 설치 없이 실시간 통신 기능을 제공하는 오픈 소스 프로젝트이다. WebRTC는 음성, 영상, 그리고 데이터 전송을 가능하게 하는 API의 집합으로 구성되어 있다. 이 기술은 HTML5 표준의 일부로, 웹 브라우저들이 상호 간에 실시간 통신을 구현할 수 있도록 설계되었다.

#### WebRTC의 기술적 구성 요소

WebRTC는 여러 핵심 구성 요소들로 이루어져 있으며, 각각의 구성 요소는 실시간 통신을 위한 필수적인 역할을 담당한다.

**MediaStream**

MediaStream은 오디오 및 비디오 데이터 스트림을 나타내는 객체로, 웹캠이나 마이크 등의 입력 장치로부터 캡처된 미디어 데이터를 처리한다. MediaStream은 로컬 및 원격 미디어 스트림을 다루며, 스트림을 동적으로 추가하거나 제거할 수 있다.

**RTCPeerConnection**

RTCPeerConnection은 두 피어 간의 직접적인 네트워크 연결을 관리하는 핵심 API이다. 이 API는 네트워크 연결의 설정, 유지 및 종료를 관리하며, 데이터 및 미디어 스트림의 전송을 담당한다. RTCPeerConnection은 NAT(Network Address Translation) 및 방화벽을 우회할 수 있는 기술을 포함하고 있어, 안정적인 피어 투 피어 연결을 가능하게 한다.

**RTCDataChannel**

RTCDataChannel은 피어 간의 임의의 데이터 전송을 가능하게 하는 API이다. 이 API는 텍스트 메시지, 파일, 바이너리 데이터 등을 실시간으로 전송할 수 있으며, 신뢰성과 전달 순서 보장을 위한 다양한 옵션을 제공한다. RTCDataChannel은 기존의 WebSocket과 유사한 기능을 제공하지만, 보다 낮은 지연 시간과 네이티브 피어 투 피어 전송의 이점을 제공한다.

#### WebRTC의 네트워킹 요소

WebRTC는 실시간 통신을 위해 네트워크 연결을 설정하고 유지하는 데 필요한 다양한 네트워킹 기술들을 포함하고 있다.

**ICE (Interactive Connectivity Establishment)**

ICE는 두 피어 간의 연결을 설정하기 위해 사용되는 프로토콜이다. 이 프로토콜은 여러 가지 연결 후보를 생성하고, 그 중 최적의 연결 경로를 선택하여 피어 간의 연결을 성립한다. ICE는 NAT 및 방화벽 뒤에 있는 피어들 간의 연결을 성립하는 데 중요한 역할을 한다.

**STUN (Session Traversal Utilities for NAT)**

STUN은 피어가 자신의 공용 IP 주소와 NAT 뒤에서의 포트 번호를 알아내는 데 사용되는 프로토콜이다. STUN 서버는 클라이언트로부터 요청을 받아 클라이언트의 공용 네트워크 정보를 반환하며, 이는 피어 간 직접 연결을 설정하는 데 필수적이다.

**TURN (Traversal Using Relays around NAT)**

TURN은 피어 간의 직접 연결이 실패할 경우, 중계 서버를 통해 데이터를 전달하는 프로토콜이다. TURN 서버는 중간 경로로서 동작하며, NAT나 방화벽 뒤에 있는 피어들 간의 통신을 보장한다. 이는 연결 안정성을 높이는 데 중요한 역할을 한다.

#### WebRTC의 미디어 처리 기술

WebRTC는 미디어 데이터의 효율적인 전송과 처리를 위해 다양한 미디어 코덱과 처리를 지원한다.

**코덱 (Codecs)**

WebRTC는 여러 오디오 및 비디오 코덱을 지원하여, 다양한 장치와 네트워크 환경에서 최적의 미디어 품질을 제공한다. 일반적으로 사용되는 오디오 코덱에는 Opus가 있으며, 비디오 코덱에는 VP8, VP9, 그리고 H.264가 포함된다. 각 코덱은 압축률, 대역폭 요구사항, 지연 시간 등에서 차이가 있으며, 실시간 통신의 품질을 결정하는 중요한 요소이다.

**미디어 전송 최적화**

WebRTC는 실시간 통신의 특성상 패킷 손실, 지연, 대역폭 변동 등에 대해 강건한 성능을 제공할 수 있도록 다양한 최적화 기술을 적용한다. 예를 들어, 적응형 비트레이트(Adaptive Bitrate)를 통해 네트워크 상태에 따라 동적으로 비디오 품질을 조정하며, 에코 취소(Echo Cancellation), 소음 억제(Noise Suppression) 등의 기술을 통해 오디오 품질을 향상시킨다.

#### 보안 및 프라이버시

WebRTC는 사용자 데이터를 보호하기 위해 강력한 보안 메커니즘을 제공한다.

**암호화**

WebRTC는 모든 데이터와 미디어 스트림을 기본적으로 암호화한다. SRTP(Secure Real-time Transport Protocol)를 통해 미디어 스트림이 암호화되며, DTLS(Datagram Transport Layer Security)를 통해 데이터 채널의 보안이 보장된다. 이를 통해 전송 중 데이터의 기밀성과 무결성이 유지된다.

**프라이버시 보호**

WebRTC는 사용자의 프라이버시를 보호하기 위해 사용자가 명시적으로 미디어 장치에 접근 권한을 부여해야 하며, 브라우저는 이러한 접근을 사용자가 명확하게 인지할 수 있도록 시각적 피드백을 제공한다. 또한, WebRTC는 IP 주소 노출 최소화를 위한 기술적 방안을 제공하며, WebRTC 통신 중 발생할 수 있는 프라이버시 위협을 최소화하기 위해 다양한 보안 프로토콜과 정책을 따른다.

***

관련 자료:

* WebRTC 1.0: Real-Time Communication Between Browsers, W3C Working Draft, 2023.
* RFC 8833: WebRTC Security Architecture, IETF, 2021.
* STUN, TURN, and ICE, WebRTC.org Documentation, 2022.
