WebRTC真的是点对点协议吗?

时间:2015-04-02 15:12:54

标签: google-chrome firefox streaming webrtc

WebRTC是一种对等通信协议。我想知道,如果确实需要Web服务器,它真的是同行吗?例如,创建一个"房间"必须在 apprtc.appspot.com或https://hello.firefox.com/something创建

2 个答案:

答案 0 :(得分:14)

这是一个真正的P2P协议,因为它可以在互联网上的两个任意方之间建立直接的无服务器通信。通信建立后,不需要第三方。

这有几点需要注意:

  1. 两个同伴首先需要找到彼此。由于WebRTC协议不是特定于浏览器并且可以在不同情况下被任何数量的不同设备使用,因此WebRTC规范中有目的地省略了该信令步骤。每组对等体都有自己的上下文,需要不同的发现方法。您可能还根据某些业务规则控制信息流的中间人。

    可以使用其他一些P2P协议来建立这个初始信令阶段;例如,如果另一个对等体位于同一子网上,您可以在本地子网上广播UDP数据包。您也可以使用载体鸽子进行信号传递;虽然这可能不切实际。在浏览器中通用互联网上最实用的方法是使用某种中央消息代理。

  2. 并不总是可以在两个任意对等体之间建立直接连接。有时,这受到网络拓扑现实的阻碍,例如非许可防火墙或NAT路由器。在这种情况下,两个对等体在物理上不可能以P2P方式进行通信,并且需要第三方中继;它以TURN服务器的形式包含在WebRTC规范中。

  3. 因此,WebRTC 是一个完整的P2P协议,但它需要处理简单的网络现实,有时候,或者经常,需要服务器的帮助。

答案 1 :(得分:2)

根据您的代码(Chrome& FF),此问题主要针对浏览器。

如果您想使用WebRTC发起呼叫:

  • 您需要从服务器下载您的网页(WebRTC应用程序)(如果您已经在计算机上下载,则可以选择)。
  • 两个浏览器都必须交换一些信息(编解码器,ICE候选者......),也称为SDP。此步骤是必需的,您应该使用服务器。但是你可以参与任何其他技术(Xaqron的评论)。
  • 如果浏览器位于NAT后面,则需要使用STUN服务器来检索其公共IP地址。
  • 如果两个浏览器中的一个位于限制性NAT或防火墙之后,则必须使用媒体中继,也称为TURN服务器。

总之,如果您想在P2P中与WebRTC交换媒体或数据,您应该使用一些服务器。通常媒体将在P2P中进行交换,但是如果一个或两个浏览器都在限制性NAT,防火墙后面,有时媒体将被TURN服务器中继....