Visual RFC.
ALL RFCs / RFC 8445
Read the RFC ↗

RFC 8445 / START HERE

ICE, before the details

ICE: Interactive Connectivity Establishment

ICE helps two applications find a working network path between them. It gathers candidate addresses and tests which pairs can communicate.

The idea in one picture

  1. Participants gather candidate paths

  2. Connectivity checks test them

  3. A working path is selected

A simplified picture of the idea; the chapters explain the actual mechanisms.

Why it exists

Home routers, firewalls, and different network arrangements make direct communication unpredictable. Testing paths is more useful than assuming one will work.

A familiar example

A video-calling app checks direct and relayed routes before selecting a path for media.

Helpful background

You can start here without reading another RFC. If these ideas are unfamiliar, these short introductions may help.

What you’ll learn next

Begin with chapter one, or choose a topic.

  1. Gather possible addressesICE collects local, server-reflexive, and relayed candidate addresses.
  2. Check candidate pairsLocal and remote candidates form prioritized pairs that must be tested for connectivity.
  3. Nominate a selected pathThe controlling agent nominates a valid pair using a check with USE-CANDIDATE.
  4. Restart changes the credentialsAn ICE restart forms a new connectivity-establishment session using new credentials.
  5. Traversal is not media encryptionA selected transport path does not itself encrypt or authenticate the media payload.
Start with chapter one →

This introduction explains RFC 8445 (2018). Read the original RFC ↗