ICE Explorer: Candidate Discovery
ICE (Interactive Connectivity Establishment) finds the best path between two peers. It probes every available network interface and races them to find the fastest route.
How to Read an ICE Candidate
An ICE candidate is a string of metadata. Each part carries information the Signaling Handshake needs.
Example Candidate:
candidate:423498234 1 udp 2122260223 192.168.1.5 50005 typ host ...
| Component | Example | Meaning |
|---|---|---|
| Foundation | 423498234 |
An identifier used to group similar candidates. |
| Component | 1 |
1 for RTP (Media/Data), 2 for RTCP (Control). |
| Protocol | udp |
Usually UDP, but can be TCP for strict firewalls. |
| Priority | 2122260223 |
Higher numbers are preferred by the ICE Agent. |
| IP Address | 192.168.1.5 |
The actual network address to probe. |
| Port | 50005 |
The port the browser is listening on. |
| Type | typ host |
The candidate category (Host, Srflx, or Relay). |
The Gathering Lifecycle
The ICE Agent follows a strict sequence of discovery:
- Host Candidates: Local IP addresses (Ethernet, Wi-Fi, VPN).
- Server Reflexive (srflx): Discovered via a STUN Server. This is your public IP as seen by the world.
- Relay Candidates: A TURN server would supply these when hole-punching fails. This site is STUN-only and ships no TURN, so you never see relay candidates here.
In practice: mDNS Privacy
In modern browsers, you will often see hostnames like 7f8e...local instead of local IP addresses (192.168.x.x). This is a privacy feature called mDNS masking. It prevents websites from fingerprinting your internal network topology without your permission.
ICE Connection States
The RTCPeerConnection.iceConnectionState property tells you how the search is going:
- checking: The browser is sending "STUN Binding" requests to the peer's candidates.
- connected: A valid path has been found! Data can now flow.
- completed: The browser has finished testing all possible paths.
- failed: No path could be found. A TURN relay would help here, but this site is STUN-only. Try an ICE Restart.
Next: See the Signaling State Machine or learn about Symmetric NATs.