WebRTC使用TCP还是UDP?

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

  1. WebRTC是否使用TCP或UDP作为其对等传输? 我怎么知道 ?
  2. 我看了有可靠性模式和DTLS协议,它们是如何影响的?
  3. 媒体和数据通道的传输是否相同?
  4. 如何在TCP和UDP之间切换?

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

  1. 它也可以使用。 默认情况下,优先考虑UDP,但取决于连接对等设备之间的防火墙,它只能与TCP连接。 您可以使用Wireshark捕获数据包并validation是否正在使用TCP或UDP。 在Chrome中,您还可以通过访问chrome://webrtc-internals查看所选候选人( googActiveConnection )的详细信息。

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

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

  4. 在添加addIceCandidate之前,可以过滤出TCP或UDP ICE候选。 一般来说,你不应该试图强制使用交通工具,因为WebRTC只是“做正确的事情”。 浏览器不会限制WebRTC使用的TCP连接数超出RTCPeerConnection或DataChannel的任何限制(即,如果可以有10个PeerConnection,它们可以分别使用TCP而不会有任何问题)。