93

这听起来像是一个非常基本的问题,但我需要确认

  1. WebRTC 是否使用 TCP 或 UDP 作为其对等传输?我怎么知道 ?
  2. 我读到有可靠性模式和DTLS协议,它们是如何影响的?
  3. Media 和 DataChannel 的这种传输方式是否相同?
  4. 如何在 TCP 和 UDP 之间切换?

我问这个是因为我知道浏览器对并行连接的数量有限制(我认为他们谈论的是 TCP),也许 UDP 连接没有限制。

4

1 回答 1

129
  1. 它可以使用任何一个。默认情况下,优先使用 UDP,但取决于连接的对等方之间的防火墙,它可能只能与 TCP 连接。您可以使用Wireshark捕获数据包并验证是否正在使用 TCP 或 UDP。googActiveConnection在 Chrome 中,您还可以通过转到 来查看所选候选人 ( ) 的详细信息chrome://webrtc-internals

  2. “可靠性模式”大概是指DataChannel的可靠性模式,可以配置为可靠或不可靠模式运行。DTLS 指的是当前可选的,但很快就会成为交换加密密钥的默认方法(另一种不推荐使用的模式是 SDES)。Firefox 仅支持 DTLS,因此对于浏览器互操作,您目前需要在 Chrome 中启用它

  3. RTCPeerConnection(媒体)将使用 TCP 或 UDP,而 DataChannel 使用 SCTP。Firefox 使用的 SCTP 实现是在 UDP 之上实现的:https ://code.google.com/p/sctp-refimpl/ 。

  4. 在使用addIceCandidate. 通常,您不应尝试强制使用传输,因为 WebRTC 只会“做正确的事情”。浏览器不会限制 WebRTC 使用的 TCP 连接数超出 RTCPeerConnection 或 DataChannel 的任何限制(即,如果您可以有 10 个 PeerConnection,它们每个都可以使用 TCP 没有任何问题)。

于 2013-09-19T16:24:30.853 回答