ICE의 개요

ICE(Interactive Connectivity Establishment)는 WebRTC 프로토콜의 핵심 구성 요소로, P2P(Peer-to-Peer) 통신에서 엔드포인트 간의 네트워크 경로를 탐색하고 최적의 경로를 선택하는 메커니즘이다. WebRTC는 다양한 네트워크 환경에서 안정적이고 실시간으로 미디어 스트림을 전송하는 것을 목표로 하기 때문에, ICE는 이러한 요구를 충족시키기 위해 다양한 네트워크 조건에서 작동할 수 있도록 설계되었다.

ICE의 구성 요소

ICE는 크게 두 가지 주요 구성 요소로 나뉜다: ICE 후보자(Candidates)ICE 프로세스이다.

ICE 후보자 (Candidates)

ICE 후보자는 엔드포인트가 통신에 사용할 수 있는 다양한 네트워크 경로를 나타낸다. ICE 후보자는 로컬 IP 주소, 공용 IP 주소, 그리고 TURN 서버를 통해 할당된 릴레이 IP 주소를 포함할 수 있다. 이 후보자들은 각각 다음과 같은 유형으로 나뉜다:

ICE 프로세스

ICE 프로세스는 후보자들 간의 최적의 경로를 선택하는 과정으로, ICE Gathering, ICE Connectivity Checks, ICE Nomination의 세 단계로 나뉜다.

ICE의 확장 및 최적화

ICE는 기본적으로 Full ICETrickle ICE라는 두 가지 모드를 지원한다.

또한, ICE는 다양한 NAT 및 방화벽 환경에서의 최적화를 지원한다. 예를 들어, ICE Lite 모드는 서버 측에서만 제한된 ICE 기능을 사용하는 경량화된 버전으로, 클라이언트가 대부분의 ICE 프로세스를 처리하도록 한다.


관련 자료: - RFC 5245, Interactive Connectivity Establishment (ICE): A Framework for NAT Traversal for Offer/Answer Protocols - RFC 8445, Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal - Google WebRTC 프로젝트 문서