WebRTC 通信只使用 HTTP 端口 80?
WebRTC communication only using HTTP port 80?
- 当对等点位于不同的 NAT 后面时,我们使用 STUN 让事情继续进行
- 当直接点对点失败时,我们转向TURN服务器,
- 当系统中所有 UDP 端口都被阻止时,我们使用 TCP 传输连接到 TURN 服务器
- 但是如果除 80 之外的所有端口都被阻止(公司代理后面的对等点)怎么办?上面的 TURN 服务器还能工作吗?或者我应该得到一个 webrtc 网关并依赖 RTMP 作为后备?还有其他选择吗?
之前,我错误地假设 TCP 只需要端口 80,但是 this discussion 让我怀疑事情。
443 也应该可用。 80 个信号,443 个 TURN。
这取决于您的网络的阻塞程度。如果有正在检查 HTTP header 的代理,则 TURN (STUN) over TCP 将无法工作。但是,如果通过端口 80 的流量未被代理检查(例如,仅防火墙),TURN over TCP 应该可以工作。
如果您的 TURN 允许通过端口 443 上的 TLS 访问,则加密层应绕过 proxy/firewall。实际上代理会认为流量是 HTTPS 请求。但是,如果代理能够 "break" SSL 层(MITM,例如 Burp proxy),它可能会拒绝您的通信,因为它不会将 TURN 请求理解为 HTTP 请求。
- 当对等点位于不同的 NAT 后面时,我们使用 STUN 让事情继续进行
- 当直接点对点失败时,我们转向TURN服务器,
- 当系统中所有 UDP 端口都被阻止时,我们使用 TCP 传输连接到 TURN 服务器
- 但是如果除 80 之外的所有端口都被阻止(公司代理后面的对等点)怎么办?上面的 TURN 服务器还能工作吗?或者我应该得到一个 webrtc 网关并依赖 RTMP 作为后备?还有其他选择吗?
之前,我错误地假设 TCP 只需要端口 80,但是 this discussion 让我怀疑事情。
443 也应该可用。 80 个信号,443 个 TURN。
这取决于您的网络的阻塞程度。如果有正在检查 HTTP header 的代理,则 TURN (STUN) over TCP 将无法工作。但是,如果通过端口 80 的流量未被代理检查(例如,仅防火墙),TURN over TCP 应该可以工作。
如果您的 TURN 允许通过端口 443 上的 TLS 访问,则加密层应绕过 proxy/firewall。实际上代理会认为流量是 HTTPS 请求。但是,如果代理能够 "break" SSL 层(MITM,例如 Burp proxy),它可能会拒绝您的通信,因为它不会将 TURN 请求理解为 HTTP 请求。