ICE 协议是一个协议框架,它的目的是解决 NAT穿越的问题,以便在网络中实现实时的点对点连接。ICE 在建立 WebRTC 连接等场景中起到重要作用。
可以将 ICE 看做是 STUN协议 和 TURN协议的组合,STUN 和 TURN都是用来解决 NAT 穿越问题,但是它们适合于不同的情况。
- STUN协议 用于在公网上发现设备的公网 IP 地址和端口,然后设备就可以利用这些信息建立点对点连接。但是某些情况下可能因为 NAT类型或者防火墙配置的原因无法使用,这种时候就需要使用TURN协议
- TURN 作为一个备选方案,当设备无法通过 STUN 协议直接建立 P2P 连接时,它们可以使用 TURN 服务器作为中继服务器来传输数据。
ICE 协议的作用就是整合了这两种方法,它会先尝试使用 STUN 协议建立连接,如果失败,它会回退到使用 TURN 协议。通过这种方式,ICE 协议可以在最大程度上实现最优的连接性能。同时确保在任何网络环境下都能建立连接。