# data[].attributes.body
El agente ICE recoge posibles direcciones de transporte (IP + puerto):

Host: direcciones locales

Server reflexive: descubiertas vía STUN

Peer reflexive: obtenidas durante los intentos de conexión

Relay: obtenidas de servidores TURN

# data[].attributes.body
Se envían listas de candidatos a través del canal de señalización (p. ej. SDP sobre WebSocket/SIP)

# data[].attributes.headline
3. Formación y priorización de pares candidatos (Checklist)

# data[].attributes.subject
3. Formación y priorización de pares candidatos (Checklist)

# data[].attributes.body
Cada agente forma pares (local–remoto), calcula prioridades según tipo y ordena una lista para comprobación .

# data[].attributes.headline
4. Verificaciones de conectividad (Connectivity checks)

# data[].attributes.subject
4. Verificaciones de conectividad (Connectivity checks)

# data[].attributes.body
Se realizan transacciones STUN para cada par en orden prioritario:

Ordinary checks: solicitudes periódicas

Triggered checks: respuestas al recibir solicitudes del otro agente

Se hace un handshake bidireccional STUN–STUN para verificar comunicación end‑to‑end

# data[].attributes.headline
5. Nombramiento y selección del par (Nomination)

# data[].attributes.subject
5. Nombramiento y selección del par (Nomination)

# data[].attributes.body
El agente controlling (quien inició) decide cuándo nominar un par:

Envía un atributo “USE-CANDIDATE” en un STUN request

Si el receptor (controlled) ya probó ese par, responde y confirma su uso

# data[].attributes.headline
6. Flujo de medios y mantenimiento (Media flow & Keep‑alive)

# data[].attributes.subject
6. Flujo de medios y mantenimiento (Media flow & Keep‑alive)

# data[].attributes.body
Una vez seleccionado, el canal de medios (RTP, datos) fluye por ese par.

Se envían STUN periódicos (~cada 15 s) para mantener mapeos NAT activos datatracker.ietf.org+13

# data[].attributes.headline
7. Restablecimiento de ICE (ICE restart)

# data[].attributes.subject
7. Restablecimiento de ICE (ICE restart)

# data[].attributes.body
Si cambia la dirección base (ej. cambio de red), se vuelve al paso 1, regenerando candidatos y reiniciando negociaciones

# data[].attributes.body
El protocolo ICE es un mecanismo de red que permite establecer conexiones directas entre dos dispositivos que desean comunicarse por voz, video o datos, incluso si están detrás de firewalls o NATs.

Se utiliza en tecnologías como:

WebRTC

VoIP (voz sobre IP)

SIP (Protocolo de inicio de sesión)

Videollamadas en apps como Zoom, WhatsApp, Google Meet, etc.

# data[].attributes.body
Descubrir la mejor ruta de conexión directa posible entre dos dispositivos.

Evitar problemas causados por firewalls o routers NAT.

Establecer comunicación rápida, segura y confiable.

Funciona junto con otros protocolos como STUN y TURN.

# data[].attributes.headline
 Ejemplos en 5 dispositivos/aplicaciones

# data[].attributes.subject
 Ejemplos en 5 dispositivos/aplicaciones