如何为我的应用程序选择多播地址?
Posted
技术标签:
【中文标题】如何为我的应用程序选择多播地址?【英文标题】:How do I choose a multicast address for my application's use? 【发布时间】:2010-09-19 04:06:26 【问题描述】:我应该如何选择 IPv4 多播地址供我的应用程序使用?我可能需要不止一个(最终可能需要整个范围),但只是想避免与其他应用程序发生冲突。
数据包将完全包含在管理域中,可能是 LAN 如果我的应用程序的多个独立实例在同一个网络上使用,它们可以各自使用自己的多播地址 - 但如果不这样做,它们将能够共存,它们只会有少量忽略彼此的数据包的开销。 我的数据包已经包含一个“幻数”以避免出现问题 我将检查发起方地址(我知道当然可以被欺骗)、TTL 和其他内容,以防止意外的数据包搞砸。请出主意:)
目前我刚刚从“本地使用”空间中分配了一个任意一个,239.255.42.99
【问题讨论】:
【参考方案1】:您似乎已经找到了http://www.iana.org/assignments/multicast-addresses
,因此您从239.255/16
范围内选择了一个地址,这是正确的做法。
由于这些范围完全供站点本地使用,您选择哪个特定地址与其他人无关,但您可能需要与网络管理员协调(假设不是您)来选择一个备用地址池。
正如其他人所建议的那样,只要确保有一种简单的方法可以更改地址,以防它与本地 LAN 上的另一个地址发生冲突。
如果多个应用程序问题成为问题,请提供一个(本地)众所周知的多播地址,应用程序可以与之通信,该地址将发布唯一的本地范围 IP 地址供客户端使用。
【讨论】:
“组织-本地范围”[239.0.0.0-239.255.255.255],不是 239.0.0.0/8 吗?另外,有没有关于我们应该使用什么组播 TTL 的建议? 239.0.0.0/8 是管理范围的 IPv4 多播空间。 239.255.0.0/16 是 RFC 2365 中的子集(IPv4 本地范围)之一。可能更接近此处所需的子集是 239.192.0.0/14(IPv4 组织本地范围)。【参考方案2】:如前所述,允许配置范围。但更进一步,不需要配置。您选择范围并在必要时允许配置覆盖。
您的应用程序中应该有一些逻辑来处理外部数据包,通过日志或其他机制提醒用户您的应用程序检测到来自另一个应用程序的多播数据包,并提供有关如何更改配置的说明。
如果发现有冲突,请在彩票中玩这些数字!
【讨论】:
【参考方案3】:你见过吗?
MADCAP
【讨论】:
【参考方案4】:如果只是供内部使用,那么为什么不将地址范围外部化为配置并继续使用内部使用。
Internet Assigned Numbers Authority 负责分配 IP 地址。他们不分配给 ISP 或个人,但他们有 information 根据您所在的地区在哪里获得分配的号码。
【讨论】:
【参考方案5】:ZMAAP 是MADCAP 的零配置替代方案。我怀疑它是否有任何公共源代码实现。如果你找到了,那我很想知道。
【讨论】:
该 RFC 已于 2003 年到期。没有人会支持它,因为它只是一个草案。以上是关于如何为我的应用程序选择多播地址?的主要内容,如果未能解决你的问题,请参考以下文章
如何为我的 Spring Boot webapp 选择 URL?
如何为 extjs 应用程序选择组合框项 Internet Explorer?