6

我最近意识到 IP 多播(在公共互联网上显然不能很好地工作)和应用程序多播(根据http://en.wikipedia.org显然在 IRC 和 PSYC 中使用)之间存在区别/wiki/多播)。

是否有关于实现应用程序级多播的好教程?

我认为多播的全部意义在于减少公共网段的带宽,所以我很难理解应用程序级多播的作用。

4

2 回答 2

3

IP 级多播的目的是减少许多用户希望接收相同流量的公共网段的带宽。它通常仅限于一个特定的子网,IP 路由器不会将多播传播到子网之外。这样做是出于可扩展性的原因 - 允许一台主机发起多播数据包并传播到 Internet 上的每个 IP 地址并不是一个好主意。

有不同的方式来考虑“应用程序级”多播。一种方法是使用参与多播的主机来构建多播树。Dijkstra 的算法可以用来做到这一点(维基百科对此有一个合理的描述)。但是,如果主机以相当大的速度加入和离开网络,维护参与计算机的列表并保持树是最新的可能是一项相当大的工作。而且您可能无法很好地估计应用程序级别的可用跃点成本。

您应该查看的另一种方法是 Gnutella 网络的查询路由协议中使用的泛洪算法。(Wikipedia 对此也有很好的描述。)这种方法减少了构建多播树的需要,但它的缺点是会产生更多的网络流量。事实上,网络流量增加了很多,因为流量随着节点数的平方而增长,即 O(n**2)。

于 2008-11-03T01:20:04.023 回答
2

应用程序多播的另一个示例是在Amazon EC2Google App Engine中使用JGroups ,因为它们不支持 IP 多播,但开发人员希望使用多播功能。

于 2010-02-06T04:49:03.173 回答