什么是ICE候选人以及对等连接如何在他们之间做出选择?

use*_*505 59 candidate webrtc ice-protocol

我新写了一个简单的聊天应用程序,但我并不真正了解ICE候选人的背景.

当对等方创建连接时,它们会获得ICE候选者并且他们交换它们并最终将它们设置为对等连接.

所以我的问题是,ICE候选人来自哪里,他们如何使用,他们都真的使用过?

我注意到我的同事在他的机器上执行应用程序时得到的候选人较少,这可能是不同候选人数量的原因?

Mar*_*S95 81

@Ichigo的答案是正确的,但它有点大.每个ICE都包含网络的"节点",直到它到达外部.通过这种方式,您可以将这些ICE发送给其他同行,这样他们就可以通过什么连接点了解他们.把它看作一幢大楼:一个在建筑物内,需要告诉对方(谁不熟悉)如何走过它.同样在这里,如果我有很多网络设备,传入的连接需要找到正确的方式到我的电脑.通过提供所有节点,RTC连接自身找到最短路径.所以,当你连接到你旁边的计算机时,它连接到同一路由器/交换机/无论什么,它使用所有ICE并确定最短,并且直接通过该点.你的同事获得较少的ICE候选人与它必须经历的大量设备有关.请注意,计算机内部的每个网络适配器都有一个IP地址(我有一个来自hyper-v的vEthernet交换机),它还会为它创建一个ICE.

  • @Cozzbie这个答案是很久以前写的,当时我的英语比现在还差。我没想到这种“*顺便说一句,从 ICE 候选人中我可以看到这个*”类型的答案会得到如此多的支持(这是迄今为止我获得最多支持的答案)。我**应该**更新措辞和写作,但回答你的问题:是的,“ICE”是协议的缩写,你发送的东西是“ICE候选人”。 (2认同)

Ich*_*aki 72

ICE代表交互式连接建立,它是用于NAT(网络地址转换器)的技术establishing communication for VOIP, peer-peer, instant-messaging, and other kind of interactive media.

通常,ice候选者提供有关将要交换数据的ipaddress和端口的信息.

它的格式如下

a =候选:1 1 UDP 2130706431 192.168.1.102 1816 typ 主机

这里UDP指定了要使用的协议,它typ host指定了候选冰的类型,主机意味着候选者是在防火墙内生成的.如果您使用wireshark监视流量,那么您可以看到用于数据传输的端口与冰候选中存在的端口相同.

另一种类型是relay,表示在防火墙外进行通信时可以使用此候选.

它可能包含更多信息,具体取决于您使用的浏览器.很多时候我见过8-12个冰候选者是由浏览器生成的.


Ben*_*rth 8

Ichigo有一个很好的答案,但没有强调每个候选人是如何使用的。我认为MarijnS95的答案是完全错误的:

每个 ICE 都包含网络的“一个节点”,直到它到达外部

通过提供所有节点,RTC 连接自行找到最短路径。

首先,他指的是 ICE 候选人,但这部分没问题。也许我误解了他,但通过说“直到它到达外面”,他让客户(发起节点)看起来像是洋葱的最内层,并建议 ICE 候选者帮助您剥开这些层直到你到达“互联网”,在那里可以到达响应的对等点,也许剥另一个洋葱才能到达它。这不是真的。如果发起对等方无法通过传输地址到达响应对等方,它将丢弃该候选者并尝试其他候选者。它不会在候选中的任何位置存储任何节点。ICE 候选者是在与响应对等方进行任何通信之前生成的。冰候选人并不能帮助你剥掉众所周知的 NAT 洋葱。另外,关于我从他的答案中引用的第二句话,他让 ICE 看起来像是在最短路径算法中使用的,其中“最短”根本没有出现在 ICE RFC 中。


来自RFC8445术语列表:

ICE 允许代理发现有关其拓扑的足够信息,从而有可能找到建立数据会话的一条或多条路径。

ICE 的目的是发现哪些地址对有效。ICE 执行此操作的方法是系统地尝试所有可能的对(按仔细排序的顺序),直到找到一个或多个有效的对。

候选人、候选人信息:传输地址,是接收数据的潜在联系点。候选者也有属性——它们的类型(服务器自反、中继或主机)、优先级、基础和基础。

传输地址: IP 地址和传输协议(例如 UDP 或 TCP)端口的组合。


现在,您已经定义了 (ICE) 候选者(一个 IP 地址和端口,可能是接收数据的地址,这可能不起作用),并且解释了选择过程(第一个起作用的传输地址对)。请注意,它不是节点或洋葱皮的列表。

由于“收集候选人”的过程,不同的用户可能有不同的冰候选人。候选人有不同类型,有些是从本地界面获取的。如果你的设备上有一个额外的虚拟接口,那么将会生成一个额外的 ICE(我没有测试这个!)。如果您想了解 ICE 候选人是如何“聚集”的,请阅读2.1。召集候选人