为什么WebRTC需要远程对等体的本地IP?

4
当我们向某个STUN服务器发送请求时,我们会收到我们的IP:端口对,就像外部服务器看到的一样。然后,我们将我们绑定浏览器的本地IP:端口对包括在这个“可能的连接目标概率列表”中,并通过WebRTC网络将其发送给远程客户端(实际上,我从来没有完全理解 - 用户ID是在哪个步骤或者从哪里解析为它的IP,远程客户端IP又是从哪里得知的呢?)。
但是为什么我们需要本地IP地址和端口号呢?对于端口号,我的解释是一些NAT防火墙可以配置为向外部请求放置相同的本地端口(只重新编写IP),因此像这样的信息可能很有用,但是这里为什么需要IP呢?

听起来你正在遇到一个最近发现的安全漏洞 - sjagr
是的,我之所以问是因为这个。我在研究人员的博客或Github上没有找到简要说明,所以... - programings
1个回答

5
浏览器看到的本地IP地址可能非常适合作为连接选项。这就是为什么它被包括在内的原因。
评论中提到的链接实际上显示了为连接生成的所有ICE候选项。您的本地IP地址是最基本的一个,浏览器会自行添加。这是您在没有STUN的情况下运行webRTC时获得的一个候选项。但是该地址可能是真实的IP地址,也可能是私有的并且在本地网络上可用。现在,如果它位于NAT后面,浏览器无法知道路由器的外部IP地址 - 这就是STUN检测到的连接选项,同时为连接打开NAT的方法。(如果那不起作用,还有TURN服务器,它们也将显示为带有自己IP的ICE候选项。)
ICE候选项本质上是潜在地址列表,另一端可能可以连接到这些地址。任何可检测或可能有效的内容都包括在内,而不仅仅是STUN响应或本地IP地址。然后,另一端使用这些尝试建立实际媒体/数据(RTP)连接。
我不确定您所说的“用户ID”是什么意思,但是这些ICE候选项必须通过单独的方法或信令层提供给其他客户端。这就是实际连接的方法 - 具体如何完成并不在webRTC的定义范围内,并且可以是任何内容。流行的传输层是WebSockets。基本上,两个客户端在webRTC开始之前必须以某种形式进行通信。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接