我最近意识到IP多播(显然在公共互联网上效果不佳)和应用程序多播(根据http://en.wikipedia.org显然在IRC和PSYC中使用)之间存在区别./ wiki/Multicast).
有没有关于实现应用程序级多播的好教程?
我认为组播的重点是减少普通网段的带宽,因此我很难理解应用级组播的作用.
IP 级多播的目的是减少许多用户希望接收相同流量的公共网段的带宽。它通常仅限于一个特定的子网,并且 IP 路由器不会将多播传播到该子网之外。这样做是出于可扩展性的原因 - 允许一台主机发起传播到互联网上每个 IP 地址的多播数据包并不是一个好主意。
有不同的方式来思考“应用程序级”多播。一种方法是使用参与多播的主机来构建多播树。Dijkstra 算法可以用来做到这一点(维基百科对此有合理的描述)。然而,如果主机以很高的速度加入和离开网络,维护参与计算机的列表并保持树的最新状态可能是一项相当大的工作量。而且您可能没有对应用程序级别可用的跃点成本进行良好的估计。
您应该查看的另一种方法是 Gnutella 网络的查询路由协议中使用的洪泛算法。(维基百科对此也有很好的描述。)这种方法减轻了构建多播树的需要,但它的缺点是会产生更多的网络流量。事实上,网络流量会增加很多,因为流量随着节点数量的平方增长,即 O(n**2)。