내가 이해한 ICE Candidate
후보(Candidate) 란?
P2P 통신은 1:1인데 뭔 후보가 있냐?
여기서 말하는 후보
는 A
와 B
사이를 연결 할 수 있는 여러 방법들 을 말한다
A
가 와이파이, 랜선, 블루투스 등등 여러가지 방식으로 통신이 가능한 매체라면 연결 방법도 다양하다
이처럼 여러 연결 방식 을 후보 라고 한다
WebRTC 에는 그럼 어떤 후보들이 있나?
일반적으로
- host (local) → LAN/P2P 가능 여부 확인
- srflx (STUN) → 공용 IP를 통한 P2P 가능 여부 확인
- relay (TURN) → TURN 서버를 통한 중계 연결
방법이 존재한다
Signaling Server
를 통해 ICE Candidate
를 서로 주고 받을 때, 위 세개의 방식 중 가능한 방식을 서로 보내준다
후보 선택 순서
WebRTC는 일반적으로 다음 순서대로 후보를 시험한다
host (local) → LAN/P2P 가능 여부 확인
같은 네트워크(Wi-Fi, 회사 내부망 등)에서는 직접 연결 가능성이 높음.
예: 192.168.1.10:5000 typ host
성공하면 더 이상의 후보 테스트 없이 연결 완료.
srflx (STUN) → 공용 IP를 통한 P2P 가능 여부 확인
NAT가 적용된 경우, STUN 서버에서 얻은 공용 IP를 이용하여 상대방과 직접 연결 시도.
예: 203.0.113.1:54321 typ srflx raddr 192.168.1.10 rport 5000
NAT 유형에 따라 성공/실패 여부가 결정됨 (대부분의 홈 라우터에서는 성공 가능성이 높음).
relay (TURN) → TURN 서버를 통한 중계 연결
위 두 방식이 실패하면, TURN 서버를 이용한 중계 연결을 시도.
예: 198.51.100.10:60000 typ relay
TURN은 항상 연결이 가능하지만, 추가 비용과 대역폭 사용이 발생.