使用以下命令监听MCast消息。
java -cp $CLASSPATH:./jgroups-all.jar org.jgroups.tests.McastReceiverTest -mcast_addr 228.1.1.1 -port 55555
基于此图像,228.1.1.1应该是用于多播的有效IP。
现在是问题...
1--用外行的话来说,这个mcast_addr到底是什么? mcast_addr本质上是互相发送消息或互相发送消息的组机器的虚拟名称(设置为IP地址格式)吗?因此,与其将mcast_addr称为“ MyConferenceRoom1”,不如将其称为“ 228.1.1.1”?
2-如果3台计算机使用相同的mcast_addr,它们都可以使用不同的-port选项?
3-有点夸张,但是如果我要编写一个遍历所有mcast_addr 288.x.x.x的程序,那么我是否可以窃听其他人的消息?
mcast_addr
就像是一个射频,不同的是您需要先加入它才能收听(在没有路由器跳的网络内,情况并非如此)。大多数情况下,也使用端口,但是您可以将其视为频率的一部分。 所以,而不是mcast_addr是类似“ MyConferenceRoom1”的东西,我 称之为“ 228.1.1.1”?
是,完全是。
是,但是对于超大容量,不需要的消息的过滤将在IP堆栈的更高位置发生,这可能会降低性能。通常,出于以下说明的原因,您通常希望在多播组上分离流量类别。
是,在IP级别没有内置的permissioning。您可能会遇到无法正常使用的路由器,这是在收听之前需要加入多播组的原因之一:
+--------+ +--------+ +----------+
| Sender | -> | Router | -> | Listener |
+--------+ +--------+ +----------+
作为侦听器,当您加入组播组时,消息将发送到路由器,该路由器根据其配置将开始将消息路由到侦听器。
现在,在具有子网网络的映像中,发送方和侦听器之间可能有2个路由器:
+--------+ +----------+ +------------+
| Sender | -> | Router A | -> | Listener 1 |
+--------+ +----------+ +------------+
|
V
+----------+ +------------+
| Router B | -> | Listener 2 |
+----------+ +------------+
如果Listener 1
加入了224.1.2.3
,Listener 2
加入了228.1.1.1
,则他们将不会看到彼此的流量。这种机制可以防止几乎没有兴趣的多播消息泛滥到网络。Listener 2
当然可以尝试加入224.1.2.3
,但是由路由器来决定是否应允许这样做。
在企业环境中,通常将路由器配置为阻止子网以外的多播流量,因为通常不涉及路由器。
如前所述,如果您将端口上的通信类别分开,则路由器通常将不在乎端口,因此将无法高效地执行其工作。