WebRTC是否使用TCP或UDP?


81

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

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

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

Answers:


110
  1. 它可以使用。默认情况下,优先级为UDP,但取决于连接它的对等方之间的防火墙可能只能与TCP连接。您可以使用Wireshark捕获数据包并验证是否正在使用TCP或UDP。在Chrome浏览器中,您还可以googActiveConnection转到来查看有关所选候选者()的详细信息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. 在添加之前,可以过滤掉TCP或UDP ICE候选者addIceCandidate。通常,您不应尝试强制使用所使用的传输方式,因为WebRTC只会“做正确的事”。浏览器不会限制WebRTC使用的TCP连接的数量超过RTCPeerConnection或DataChannel的任何限制(即,如果您有10个PeerConnections,则它们每个都可以使用TCP而没有任何问题)。


1
好答案!在Chrome 31中,默认情况下,SCTP用于数据通道。
山姆·达顿

1
真棒的答案。谢谢您的消息来源。
Dembinski

@是否由于音频/视频未使用SCTP的原因?它不是用“ extras”有效地udp(当前主要在udp之上实现)
Pavel P

1
对于将来的用户:在1.中chrome://webrtc-internals,您必须选择“读取统计信息:旧版”
Thomas Orlita

我之所以问“ WebRTC是否使用TCP或UDP”,是为了查看其是否可靠。第三点说,媒体将使用TCP或UDP,但数据通道将使用SCTP,因此数据通道应该可靠,因为SCTP是可靠的(根据SCTP RFC)。这与第2点矛盾。因此,如果有人可以澄清,那就太好了!
本·巴特沃思
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.