【发布时间】:2017-01-01 17:18:06
【问题描述】:
阅读有关 Webrtc 的信息,我感觉“它将显着降低服务器带宽的使用”,除了“一些角落的企业防火墙案例”,其中需要一个 TURN 服务器来中继对等方之间的全部流量。
例如,虽然与 webrtc 无关,但想法相似,Chatroulette 的维基百科文章指出:该网站使用 Adobe Flash 显示视频并访问用户的网络摄像头。 Flash 的点对点网络功能(通过 RTMFP)允许几乎所有视频和音频流直接在用户计算机之间传输,而无需使用服务器带宽。但是,某些路由器组合将不允许 UDP 流量在它们之间流动,因此有必要回退到 RTMP。
Webrtc 上的类似文章也关注“是的,防火墙可能存在问题,因此您需要一个 TURN 服务器,但忽略这一点,看看我很棒的 PeerConnection javascript 代码”。
我不明白的:
两个对等点之间的连接需要打开一个服务器套接字,以便对等点可以连接到它。甚至 UDP 也需要 udp 服务器套接字的概念。由于几乎所有非服务器互联网连接的对等点都位于某种路由器后面。例如。每部智能手机都使用 wifi 路由器,台式电脑使用服务提供商的路由器,... 应该无法连接到智能手机上托管的服务器套接字(浏览器 webrtc 服务器套接字)或路由器/防火墙的桌面原因。
因此,我的理解是几乎没有两个需要通过互联网发送流量的对等方能够使用直接 P2P 连接,对吧? 所以使用 Webrtc 的唯一有用案例是在类似 LAN 的环境中,对吧? 此外,对于像基于 webrtc 的 chatroulette 这样的视频聊天服务,需要使用一堆 TURN 服务器来中继几乎所有的流量。这使得 Webrtc 在服务器带宽方面的成本同样高,比如托管我自己的解决方案。
所以我的问题是:我说的对吗?如果不是,允许 PeerConnection 在没有 TURN 服务器的情况下使用但用于由 Internet 分隔的两个节点的技术细节是什么? TCP/UDP 传输层第 4 层如何建立连接?它是否使用 UDP 并且所有 wifi 路由器都允许托管 UDP 服务器套接字等?这对 NAT 和安全性没有多大意义。
更新 1: 进一步挖掘,我发现了“对称 nat”的含义以及它与企业的关系:在大多数企业中,连接到互联网的设备似乎已经实现了对称 nat。这意味着将内部“internal-ip:internal-port”元组映射到“internet-ip:internet-port”的路由表也存储“destination-ip:destination-port”。因此,此类路由/nats 为每个(tcp?)连接存储一个表,该表具有 6 列“internal-ip:internal-port:internet-ip:internet-port:destination-ip:destination-port”。这意味着除了目标之外没有其他人可以与 internal-ip:internal-port 进行通信。 而非企业路由器似乎只存储“internal-ip:internal-port:internet-ip:internet-port”组合。这也是“在防火墙上戳一个洞”的意思。
【问题讨论】:
标签: networking webrtc