这听起来像是一个非常基本的问题,但我需要确认
- WebRTC 是否使用 TCP 或 UDP 作为其对等传输?我怎么知道 ?
- 我读到有可靠性模式和DTLS协议,它们是如何影响的?
- Media 和 DataChannel 的这种传输方式是否相同?
- 如何在 TCP 和 UDP 之间切换?
我问这个是因为我知道浏览器对并行连接的数量有限制(我认为他们谈论的是 TCP),也许 UDP 连接没有限制。
它可以使用任何一个。默认情况下,优先使用 UDP,但取决于连接的对等方之间的防火墙,它可能只能与 TCP 连接。您可以使用Wireshark捕获数据包并验证是否正在使用 TCP 或 UDP。googActiveConnection
在 Chrome 中,您还可以通过转到 来查看所选候选人 ( ) 的详细信息chrome://webrtc-internals
。
“可靠性模式”大概是指DataChannel的可靠性模式,可以配置为可靠或不可靠模式运行。DTLS 指的是当前可选的,但很快就会成为交换加密密钥的默认方法(另一种不推荐使用的模式是 SDES)。Firefox 仅支持 DTLS,因此对于浏览器互操作,您目前需要在 Chrome 中启用它。
RTCPeerConnection(媒体)将使用 TCP 或 UDP,而 DataChannel 使用 SCTP。Firefox 使用的 SCTP 实现是在 UDP 之上实现的:https ://code.google.com/p/sctp-refimpl/ 。
在使用addIceCandidate
. 通常,您不应尝试强制使用传输,因为 WebRTC 只会“做正确的事情”。浏览器不会限制 WebRTC 使用的 TCP 连接数超出 RTCPeerConnection 或 DataChannel 的任何限制(即,如果您可以有 10 个 PeerConnection,它们每个都可以使用 TCP 没有任何问题)。