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.

IDLE
Initializing System...
System ready. Waiting for input.

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:

  1. Host Candidates: Local IP addresses (Ethernet, Wi-Fi, VPN).
  2. Server Reflexive (srflx): Discovered via a STUN Server. This is your public IP as seen by the world.
  3. 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.

Continue Discovery