我想知道从服务器发送的多播消息可以传播多远。
是什么阻止它到达世界上所有的计算机?
答案1
存在不同种类的多播。
最常见的一种方式不会穿越路由器,因此会停留在你所在的同一物理网络上。
一些路由器可以配置为中继多播消息,我认为这些通常是在订阅的基础上完成的(例如,您通知路由器您想要从外部接收那些多播消息)。
您应该能够在这里找到更多信息:http://en.wikipedia.org/wiki/Multicast
答案2
有两个因素会阻止您的多播数据包到达全世界。
通常情况下,您上游的路由器要么根本不路由多播数据包,要么不路由来自您的任何数据包。需要澄清的是,路由器不会将您的多播数据包直接传送到其他网络,除非它们已配置为这样做,而且网络管理员可能会选择阻止从某些端口到达的任何传入多播流量。
另一个可能阻止多播传播的因素是 TTL 字段。数据包每经过一个网关,TTL 值就会减 1。
这个话题引发了至少几个我选择不讨论的其他棘手问题,但实际上,上述答案可能是您特定网络上的直接原因。
答案3
首先,每台计算机都必须监听您要发送消息的多播地址组。然后我们来看看地址系列。
多播在 IPv4 中出现较晚,因此许多路由器不支持它。此外,由于出现较晚,多播是可选的,默认情况下是禁用的。
IPv6 才是最有趣的。IPv6 不再支持广播,应用程序必须使用多播,而多播已成为要求实施的核心软件包的一部分。
在 Linux 上,您可以键入netstat -g
以显示已加入的组,您可以看到ip6-allnodes
理论上 IPv6 互联网上的每一台机器。这显然不会发生,因为每台计算机都很容易受到 DoS 攻击而无法做任何事情。因此需要对其进行限制,但是在哪里呢?
互联网是一个互联网,一个网络间网络,多个网络的连接。有一些设备将网络连接在一起,在这些设备中,你可以决定哪些流量通过以及往哪个方向传输。
一些国家/地区有本地广播公司,它们通过互联网发送电视或广播多播。如果您加入了参与网络,则可以加入该组并接收直播流。但请考虑一下,如果您决定也在该流上发送,会发生什么情况,这很容易扰乱其他人的服务,因此 ISP 会将其设备配置为仅单向传递该多播流量。