WebRTC真的是点对点协议吗?

アレッ*_*ックス 11 streaming firefox google-chrome webrtc

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

dec*_*eze 17

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

这有几点需要注意:

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

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

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

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


Ant*_* M. 8

根据您的标签(Chrome&FF),这个问题集中在浏览器上。

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

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

总而言之,如果你想在 P2P 中与 WebRTC 交换媒体或数据,你应该使用一些服务器。通常媒体会在 P2P 中交换,但有时如果一个或两个浏览器位于限制性 NAT、防火墙后面,媒体将由 TURN 服务器中继。