📜  交互式连接建立 (ICE)(1)

📅  最后修改于: 2023-12-03 15:36:06.659000             🧑  作者: Mango

交互式连接建立 (ICE)

交互式连接建立(Interactive Connectivity Establishment,简称ICE)是一种网络传输协议,能够使在NAT或防火墙后的设备直接进行网络通信。ICE协议允许终端设备(例如PC、手机、平板电脑等)在对等通信中发现彼此,并协商出最佳的网络路径。

ICE与传统传输协议的不同之处

传统的UDP或TCP协议在NAT或防火墙后的网络环境中可能会遇到许多问题,比如防火墙的网络地址转换(NAT)会导致内部和外部网络地址不匹配。而ICE协议通过使用一系列技术来解决这些问题,包括:

  • STUN(Simple Traversal of UDP through NATs)用于发现终端设备实际的公网地址;
  • TURN(Traversal Using Relays around NATs)用于在无法直接建立对等通信的情况下,把通信转换为经过TURN服务器的中继通信;
  • ICE-lite技术则是在对等通信双方中,至少有一方在NAT后的情况下。
实现ICE协议的流程

实现ICE协议的过程一般分为以下几个步骤:

  1. 收集本地网络信息。通过使用STUN服务器,收集本地设备的IP地址、端口号、类型,协议等信息;
  2. 向远程设备发送连接请求;
  3. 发送STUN请求,获取ICE候选地址。根据本地网络情况和STUN服务器提供的信息,生成对等方能够访问的一组地址,称之为ICE候选地址;
  4. 开始连接检查。使用STUN探针或TURN服务器对对等方进行连接检查;
  5. 建立P2P连接。当对等方接受连接请求时,选择最佳路径建立对等连接。
ICE协议的应用

ICE协议广泛应用于VoIP、视频会议、网络游戏等领域,常见的实现方式包括WebRTC、PJSIP等。

在WebRTC中,ICE协议被用于在不同的终端之间交换视频、音频和数据流。用户可以在不下载或安装任何插件的情况下使用浏览器进行视频通话。PJSIP是一款免费的VoIP实现工具库,可以在不同的硬件平台上运行,并以便于使用的API为开发者提供了灵活的接口。

总结

交互式连接建立(ICE)凭借其强大的NAT遍历功能,被广泛应用于VoIP、视频会议、网络游戏等领域,成为现代通讯技术的重要组成部分。 通过收集本地网络信息、向远程设备发送连接请求、发送STUN请求获取ICE候选地址、连接检查等一系列步骤,设备可以直接建立P2P连接,提供更佳的通讯质量和安全性。