【问题标题】:Does WebRTC use TCP or UDP?WebRTC 使用 TCP 还是 UDP?
【发布时间】:2013-09-24 17:29:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: tcp udp webrtc channel transport


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

    2. “可靠性模式”大概是指DataChannel的可靠性模式,可以配置为可靠或不可靠模式运行。 DTLS 指的是当前可选的,但soon to be default method 交换加密密钥(另一种不推荐使用的模式是 SDES)。 Firefox 仅支持 DTLS,因此对于浏览器互操作,您目前需要enable it in 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。

    【讨论】:

    • 很好的答案!从 Chrome 31 开始,SCTP 默认用于数据通道。
    • 非常棒的答案。谢谢你的消息来源。
    • @音频/视频不使用 SCTP 的任何原因?它不是带有“附加”的有效 udp 吗(目前它主要是在 udp 之上实现的)
    • 对于未来用户:在 1.chrome://webrtc-internals 中,您必须选择“Read Stats From: Legacy”
    • 我个人之所以问“WebRTC 是使用 TCP 还是 UDP”这个问题,是看它是否可靠。第 3 点说,Media 将使用 TCP 或 UDP,但 DataChannel 将使用 SCTP,因此 DataChannel 应该是可靠的,因为 SCTP 是可靠的(根据SCTP RFC)。 这与第 2 点相矛盾。,所以如果有人能澄清一下就好了!
    猜你喜欢
    • 1970-01-01
    • 2010-10-26
    • 2011-08-20
    • 1970-01-01
    • 2012-06-20
    • 2010-12-10
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多