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

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

当我们向某个STUN服务器发送请求时,我们会收到外部服务器看到的IP:port对。然后,我们将浏览器绑定到的本地IP:端口对包括在这个“可能连接目标的概率列表”中,并通过WebRTC网络将其发送到远程客户端(实际上,我从未完全理解-在哪一步或在哪里将用户ID解析为其IP以及从哪里知道远程客户端IP…?)


但是为什么我们需要本地IP地址和端口呢?对于端口,我的解释是,一些NAT防火墙可以配置为将相同的本地端口放入外部请求(只重写IP),然后类似信息可能会很有用,但这里需要IP在哪里?

浏览器看到的本地IP很可能是一个可行的连接选项。这就是为什么它被包括在内

注释中提到的链接实际上显示了为连接生成的所有ICE候选。您的本地IP地址是最基本的IP地址,由浏览器自行添加。这是一个候选人,当你运行webRTC没有晕眩。但该地址很可能是真正的IP地址或专用地址,并且在本地网络上是可行的。现在,如果它在NAT后面,浏览器就无法知道路由器的外部IP——这是STUN检测到的连接选项,同时在NAT上戳一个洞进行连接。(如果这不起作用,还有TURN服务器,它也将以ICE候选服务器的形式出现,并拥有自己的IP。)

ICE候选地址本质上是另一端可能连接的潜在地址列表。任何可以检测到或可能起作用的东西都包括在内,不仅包括眩晕反应或本地IP。然后,另一端使用这些来尝试建立实际的媒体/数据(RTP)连接


我不确定你所说的“用户ID”是什么意思,但这些ICE候选项必须通过单独的方法或信令层提供给其他客户端。这就是实际连接的实现方式——具体的实现方式并不是webRTC的一部分,可以是任何东西。一种流行的传输层是WebSocket。基本上,在webRTC发挥作用之前,这两个客户机必须已经以某种形式进行了沟通。

听起来你好像遇到了一个“是”的问题,我这样问是因为这个问题。我在研究人员的博客或Github中没有找到简短的解释,所以。。。