为什么ICE需要双向信令?

时间:2015-07-02 17:44:31

标签: webrtc

为了建立WebRTC连接,ICE协议与信令服务器一起使用,该服务器必须在两个方向上发送消息。我想知道为什么在发起人将其提议和候选人发送给其他参与者之后,参与者需要在另一个方向上使用信令信道发送回答和候选人。参与者不能使用双方候选人打开与发起人的连接,并使用开放连接发回答案吗?

我开始阅读ICE RFC,我发现的唯一相关部分是5.2部分,其中发起人必须担任控制角色并提名候选人对。但这并没有解释为什么对方无法发起联系。

为了给出一些背景知识,我正在尝试构建一个webapp,我希望用户在不使用信令服务器的情况下建立WebRTC连接。我想让应用程序生成一个包含优惠和候选人的URL,并通过其他媒体(如即时消息)向其他参与者提供此URL。我得到的问题是参与者需要使用相同的媒介发送回答和候选人,这是不切实际的。最后我会选择信号服务器,但我想知道技术原因。

1 个答案:

答案 0 :(得分:0)

是的,如果调用者位于公共IP或Full Cone NAT之后,您可以这样做(在这种情况下,路由器连接映射不需要超时)。 你很少能完全满足上述条件。

其他NAT类型有什么问题? 例如,PRC(端口限制锥形)NAT将不允许您从IP:端口接收数据包,如果您没有向该IP发送任何数据包:端口之前。所以被叫者永远不会向你发送数据包。

所以如果被叫者将她的候选人名单发给你。你可以将一些虚拟数据(低TTL)发送到她的IP:端口来欺骗你的PRC NAT(现在它允许来自被叫方IP的传入数据包:端口发送数据包到该IP:端口之前)。

要了解有关不同类型NAT的更多信息:

https://en.wikipedia.org/wiki/Network_address_translation

http://think-like-a-computer.com/2011/09/16/types-of-nat/