En todas las implementaciones sin servidor (sin incluir ICE/STUN) de WebRTC, que crean una conexión de datos, siempre he notado que el flujo es:
Lo que no entiendo es ¿por qué necesitamos el segundo paso? En las aplicaciones de escritorio, el primer paso es suficiente, incluso si hay un NAT (debido a los servidores STUN). ¿Es esto alguna limitación de WebRTC? Si es así, ¿por qué?
Además de los candidatos ICE, SDP contiene información sobre códecs, pistas, etc. Se necesita un servidor de señalización como canal para establecer una conexión entre pares mediante el intercambio de dicha información.