你需要知道关于ICE的三件事

作者:Sherwin Sim(原文链接

翻译:刘通

原标题:Three Things You Need to Know About ICE

webrtc-logo

当我们说到ICE的时候,来自北半球的你们可能会认为我们正在谈论的是那种在寒冷的冬天里的那些滑溜溜的冰。但是我们技术人员谈论的ICE是一个完全不同的概念。交互式连通性建立(Interactive Connectivity Establishment — ICE)是一个允许实时对等端发现对方并且彼此连接的框架。

你不一定需要知道ICE到底是如何工作的就可以使用它。有很多技巧可以帮助我们找到对等端相互连接的最佳途径。以下列出了应用程序开发人员需要了解的关于ICE的几件事情。

1. ICE找到媒体传输的最短路径

通常情况下,ICE可以帮助你发现本地对等端可能拥有的所有网络IP和端口的组合。这些组合被称为“ICE候选”。当一个新的会话建立时,这些候选与其他对等端的ICE候选相检查。ICE会寻找提供两个对等端之间路径最短,且安全的ICE候选,然后选择这对候选来发送和接收媒体及数据。这有助于减少延迟,并且当对等端处于同一个网络中时,甚至在全球同一地区内,都会造成很大的不同。

2. ICE允许我们穿过防火墙和NAT进行工作

关于ICE最酷的事情是当使用STUN和TURN协议时,ICE会帮助定义和创建IP及端口候选,增加了穿过不同的防火墙和NAT设备进行连接的几率。这些协议会找到UDP和TCP端口,即使防火墙被配置为对其他类型的通信进行特别严格的控制,也允许从对等端发送和接收媒体。有些时候,需要把更多的工具加入表格中以确保更快高的成功连接率。如果你所处的是一个合作计算环境,通常就需要TURN。即使这样,如果遇到极为严格的防火墙,即使是ICE和TURN也会遇到困难。

3. 即使通过企业级的防火墙,ICE也可以工作

好的,我知道你现在在想什么……“我在这些极其严格的环境中股工作,那我改怎么办呢?”

确实,在某些环境下,WebRTC不能很好的工作。如果端口被屏蔽了的话,那么它们也会被屏蔽。那么有时候,你需要向友好的企业IT安全团队寻求某些项目和产品的帮助。我们会想到金融机构,比如银行和保险公司,医疗诊所和医院,以及公共部门的政府网络。在这些情况中,我们建议你建立一个端口配置指南,并安排将特定的URL或IP范围列入白名单,然后打开特定的端口以方便进行实时通信。

需要记住的是,即使在使用媒体中继服务(比如TURN)时,通过相连接的对等端之间防火墙的数据仍然是段对端加密的。在极端情况下,可能会出现你需要自定义设置或专用TURN服务器的情况。

我需要知道些什么呢?

我们同意,ICE听起来非常棒。ICE框架确实解决了大量的实时数据流量连接问题。但还是由一些缺点,其中最严重的是会增加连接所用的时间。在某些情况下,设置时间中的延迟是不可接受的。当然,根本不能建立是最糟糕的情况,我们必须始终对连接成功和“长于理想连接时间”之间的权衡问题。

更重要的是,IETF及其志愿者们试图通过改进ICE来解决这些问题。其中一个例子就是Trickle-ICE协议https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/,另一个是QUIC https://datatracker.ietf.org/wg/quic/about/

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营