阅读关于WebRTC的内容,我感觉“除了一些企业防火墙案例之外,它将显著降低服务器带宽使用率”,在这些案例中需要TURN服务器来中转对等方之间的整个流量。
例如,虽然与WebRTC无关,但类似的想法,维基百科文章 Chatroulette 指出:该网站使用Adobe Flash来显示视频并访问用户的网络摄像头。 Flash的点对点网络功能(通过RTMFP)允许几乎所有视频和音频流直接在用户计算机之间传输,而不使用服务器带宽。 但是,某些路由器组合将不允许UDP流量在它们之间流动,因此必须退回到RTMP。
还有类似的WebRTC文章专注于“是的,防火墙可能会出现问题,所以您需要一个TURN服务器,但请忽略此问题,并查看我的精彩PeerConnection javascript代码”。
我不理解的是:
两个对等方之间的连接需要打开服务器套接字,以便对等方可以连接到它。即使UDP也需要UDP服务器套接字的概念。由于几乎所有非服务器Internet连接的对等方都在某种类型的路由器后面。例如,每个智能手机都使用WiFi路由器,桌面PC使用服务提供商的路由器,... 因为路由器/防火墙的原因,不应该可以连接到在智能手机上托管(浏览器WebRTC服务器套接字)或桌面计算机上的服务器套接字。
因此,我的理解是几乎没有需要通过Internet发送其流量的两个对等方将能够使用直接的P2P连接,对吧? 那么只有在类似于局域网的环境中使用Webrtc才有用,对吧? 对于像Chatroulette这样基于WebRTC的视频聊天服务,在中继几乎所有流量的情况下都需要使用一堆TURN服务器。这使得Webrtc在服务器带宽方面与托管自己的解决方案相同。
所以我的问题是:我是对的吗?如果不是,是什么技术细节允许PeerConnection在没有TURN服务器的情况下用于两个节点之间分开的Internet?如何在第4层TCP / UDP传输层上建立连接?它是否使用UDP,所有WiFi路由器都允许托管UDP服务器套接字或类似的内容?这不会因为NAT和安全而没有意义。
更新1: 深入研究后,我发现“对称nat”意味着什么,以及它与企业有什么关系:在大多数企业中,似乎已实现对接到互联网的设备有“对称nat”。这意味着将内部“内部IP:内部端口”元组映射到“互联网IP:互联网端口”的路由表还存储“目标IP:目标端口”。因此,这样的路由/ NAT存储每个(TCP?)连接的表,具有6个列“内部IP:内部端口:互联网IP:互联网端口:目标IP:目标端口”。这意味着除了目标之外,没有人被允许与内部IP:内部端口通信。 而非企业路由器似乎只存储“内部IP:内部端口:互联网IP:互联网端口”组合。这也就是所
例如,虽然与WebRTC无关,但类似的想法,维基百科文章 Chatroulette 指出:该网站使用Adobe Flash来显示视频并访问用户的网络摄像头。 Flash的点对点网络功能(通过RTMFP)允许几乎所有视频和音频流直接在用户计算机之间传输,而不使用服务器带宽。 但是,某些路由器组合将不允许UDP流量在它们之间流动,因此必须退回到RTMP。
还有类似的WebRTC文章专注于“是的,防火墙可能会出现问题,所以您需要一个TURN服务器,但请忽略此问题,并查看我的精彩PeerConnection javascript代码”。
我不理解的是:
两个对等方之间的连接需要打开服务器套接字,以便对等方可以连接到它。即使UDP也需要UDP服务器套接字的概念。由于几乎所有非服务器Internet连接的对等方都在某种类型的路由器后面。例如,每个智能手机都使用WiFi路由器,桌面PC使用服务提供商的路由器,... 因为路由器/防火墙的原因,不应该可以连接到在智能手机上托管(浏览器WebRTC服务器套接字)或桌面计算机上的服务器套接字。
因此,我的理解是几乎没有需要通过Internet发送其流量的两个对等方将能够使用直接的P2P连接,对吧? 那么只有在类似于局域网的环境中使用Webrtc才有用,对吧? 对于像Chatroulette这样基于WebRTC的视频聊天服务,在中继几乎所有流量的情况下都需要使用一堆TURN服务器。这使得Webrtc在服务器带宽方面与托管自己的解决方案相同。
所以我的问题是:我是对的吗?如果不是,是什么技术细节允许PeerConnection在没有TURN服务器的情况下用于两个节点之间分开的Internet?如何在第4层TCP / UDP传输层上建立连接?它是否使用UDP,所有WiFi路由器都允许托管UDP服务器套接字或类似的内容?这不会因为NAT和安全而没有意义。
更新1: 深入研究后,我发现“对称nat”意味着什么,以及它与企业有什么关系:在大多数企业中,似乎已实现对接到互联网的设备有“对称nat”。这意味着将内部“内部IP:内部端口”元组映射到“互联网IP:互联网端口”的路由表还存储“目标IP:目标端口”。因此,这样的路由/ NAT存储每个(TCP?)连接的表,具有6个列“内部IP:内部端口:互联网IP:互联网端口:目标IP:目标端口”。这意味着除了目标之外,没有人被允许与内部IP:内部端口通信。 而非企业路由器似乎只存储“内部IP:内部端口:互联网IP:互联网端口”组合。这也就是所