首页 文章

WebRTC使用TCP还是UDP?

提问于
浏览
59

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

  • WebRTC是否使用TCP或UDP作为其对等传输?我怎么知道 ?

  • 我读过有可靠性模式和DTLS协议,它们如何影响?

  • Media和DataChannel的传输方式是否相同?

  • 如何在TCP和UDP之间切换?

我问这个是因为我知道浏览器对并行连接的数量有限制(我认为他们谈论TCP),并且UDP连接可能不受限制 .

1 回答

  • 75
    • 它可以使用任何一个 . 默认情况下,首选项是UDP,但根据连接它的对等体之间的防火墙,它可能只能与TCP连接 . 您可以使用Wireshark捕获数据包并验证是否正在使用TCP或UDP . 在Chrome中,您还可以转到 chrome://webrtc-internals 查看所选候选人的详细信息( googActiveConnection ) .

    • "Reliability mode"可能是指DataChannel的可靠性模式,可以配置为以可靠或不可靠的模式运行 . DTLS是指当前可选的,但是soon to be default method的交换加密密钥(另一个不推荐使用的模式是SDES) . Firefox仅支持DTLS,因此对于浏览器互操作,您目前需要enable it in Chrome .

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

    • 在使用addIceCandidate添加TCP或UDP ICE候选之前,可以过滤掉它们 . 通常,您不应该尝试强制使用传输,因为WebRTC只是"do the right thing" . 浏览器不限制WebRTC使用的TCP连接数量超出RTCPeerConnection或DataChannel的任何限制(即,如果您可以拥有10个PeerConnections,则它们每个都可以使用TCP而没有任何问题) .

相关问题