STUN是什么,stun.l.google.com:19302有什么用途?

48

我正在查看 webrtc.htmlpeerconnection_server 的演示,并且在两个 Chrome 浏览器之间运行良好。我的问题是,webkitPeerConnection 的第一个参数究竟是什么?

pc = new webkitPeerConnection("STUN stun.l.google.com:19302", onSignalingMessage);

这是为演示目的由Google提供的第三方STUN服务器吗? 如果我在JavaScript代码中将"stun.l.google.com:19302" 替换为 "toto",我仍然能够进行视频通话。 但因为我在同一个子网中,这可以被解释...


2
为什么你的问题是一样的?请参考以下链接:https://groups.google.com/forum/#!topic/discuss-webrtc/b-5alYpbxXw - Utopik
来自 Google 的 STUN 并不总是表现良好。您可以使用我在此发布的服务器列表。https://dev59.com/LWIj5IYBdhLWcg3wnmXA#20134888 - Vlad Tsepelev
1
可能是WEBRTC STUN stun.l.google.com:19302的重复问题。 - Vaibhav Mule
3个回答

75
  • STUN服务器被客户端用来确定他们在全球互联网中可见的IP地址。如果两个对等方都在同一个NAT之后,则不需要STUN设置,因为它们已经可以彼此访问。只有当对等方位于不同的网络上时,STUN才会起作用。

  • 正如我们所知道的,WebRTC是点对点的,而ICE候选项在WebRTC中是必需的。 ICE功能可以采用STUN和TURN两种方式之一。

  • Google和其他网站提供了许多STUN服务器供人使用。您还可以根据rfc5766设置自己的STUN服务器。

希望这能给你一个关于STUN的基本了解。


6

如果两个客户端位于NAT后面,则需要使用STUN服务器才能使用webrtc进行通信。您需要使用STUN服务器来确保位于NAT后面的人可以在您的网页上使用webrtc功能。


STUN服务器只是NAT穿越的一小部分。 - Brad
2
我下载了一个视频聊天的例子,但它包含以下URL:('stun:stun1.l.google.com:19302')和(url: 'turn:numb.viagenie.ca', credential: 'muazkh', username: 'webrtc@live.com')。当我删除TURN并且它仍然工作时,我想知道我需要使用这两个还是只用其中一个。这是开源的吗?使用这些STUN和TURN会出现任何问题吗? - heart hacker
2
测试目的下,您不需要使用STUN或TURN服务器。它将在本地简单工作。然而,处于NAT后面的用户可能无法连接,除非拥有STUN服务器。拥有STUN将覆盖您使用情况的86%。 - dubucha
3
把STUN看做是直达航班,TURN则是中转站 :) - dubucha

1

一个STUN服务器基本上可以告诉您您的公共IP地址。(简而言之)

解释: 在收集ICE候选项(或与同行连接的方式)时,WebRTC代码会收集所有可能的连接方式。通过广域网连接是其中一种方式(或候选项)。所以为了知道由路由器分配给设备的公共IP地址(适用于全锥形NAT),STUN服务器告诉您这一点。

我建议参考此视频获得一个清晰明了的解释。


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