rtmfp/UDP的工作原理



我正在尝试使用flash和rtmfp协议开发一个实时视频聊天应用程序,但我对rtmfp如何保证连接对等体,尤其是当对等体位于不同的网络中时。

RTMFP依赖于一个中央集合服务器来"引入"两个位于不同网络中并可能位于防火墙后面的客户端。为了在防火墙中导航,它使用NAT穿越技术,本质上相当于:

  • 两个客户端(Joe和Mary)连接到中央集合服务器
    • Adobe的公共RTMFP(非商业)集合服务器rtmfp://p2p.rtmfp.net/
    • 或者,您可以使用GPL开源Cumulus或ArcusNode托管自己的Cumulus
  • Joe与Mary共享他的同伴ID,或者他们可以使用共享的NetGroup ID
  • Mary与中央会合服务器通信,然后使用各种NAT和防火墙穿越技术建立对等2对等UDP连接

不能保证任何2个客户端网络/防火墙都兼容RTMFP P2P连接(您可以使用RTMFP连接测试仪进行诊断),这就是为什么如果无法建立直接的P2P连接,Adobe会通过其LiveCycle协作服务或Adobe Flash Media Server向中央中继服务提供后备解决方案(基本上所有网络流量都会通过两个客户端都可以公开访问的服务器)。

Adobe的RTMFP是他们专有的Peer 2 Peer网络低演进服务捆绑,并提供一些其他更高级别的P2P网络网格功能。

如果你对更开放的标准P2P协议感兴趣,你应该看看WebRTC。本质上,WebRTC是允许客户端通过UDP连接P2P的相同概念,但旨在被用作网络浏览器标准,也可以在各种本地设备(如Android、iPhone等)上实现。它使用标准NAT和防火墙穿越技术,使用STUN、ICE、TURN、RTP over TCP并支持代理。我相信WebRTC是libjingle P2P Google Talk库中一些工作的标准化。

最新更新