JGroups : 为傻瓜解释 mcast_addr
JGroups : explain mcast_addr for dummies
使用以下命令侦听 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 地址格式) 对于相互发送消息 to/from 的组机器?所以,我称它为“228.1.1.1”而不是 mcast_addr 之类的 "MyConferenceRoom1"?
2 - 如果 3 台机器使用相同的 mcast_addr,它们都可以使用不同的端口选项吗?
3 - 有点夸张,但如果我要编写一个遍历所有 mcast_addr 288.x.x.x 的程序,我是否真的在窃听别人的消息?
- 通俗地说,
mcast_addr
就像一个无线电频率,只是您需要先加入它才能收听(在没有路由器跃点的网络中并非如此)。大多数情况下,还使用端口,但您可以将其视为频率的一部分。
So, instead of mcast_addr being something like "MyConferenceRoom1" I
call it "228.1.1.1"?
是的,完全正确。
是的,但是对于超大容量,不需要的邮件过滤将发生在 IP 堆栈的更高层,这会降低性能。由于下面解释的原因,您通常希望在多播组上分离 类 流量。
是的,没有 permissioning 内置 IP 级别。您可能 运行 进入路由器不配合,这是您需要在收听之前加入多播组的原因之一:
+--------+ +--------+ +----------+
| 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
但它是路由器决定是否应该允许这样做。
在企业环境中,路由器通常配置为阻止子网以外的多播流量,因为路由器通常不涉及。
如前所述,如果您在端口上分离 类 流量,路由器将无法高效地执行它们的工作,因为它们通常不关心端口。
使用以下命令侦听 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 地址格式) 对于相互发送消息 to/from 的组机器?所以,我称它为“228.1.1.1”而不是 mcast_addr 之类的 "MyConferenceRoom1"?
2 - 如果 3 台机器使用相同的 mcast_addr,它们都可以使用不同的端口选项吗?
3 - 有点夸张,但如果我要编写一个遍历所有 mcast_addr 288.x.x.x 的程序,我是否真的在窃听别人的消息?
- 通俗地说,
mcast_addr
就像一个无线电频率,只是您需要先加入它才能收听(在没有路由器跃点的网络中并非如此)。大多数情况下,还使用端口,但您可以将其视为频率的一部分。
So, instead of mcast_addr being something like "MyConferenceRoom1" I call it "228.1.1.1"?
是的,完全正确。
是的,但是对于超大容量,不需要的邮件过滤将发生在 IP 堆栈的更高层,这会降低性能。由于下面解释的原因,您通常希望在多播组上分离 类 流量。
是的,没有 permissioning 内置 IP 级别。您可能 运行 进入路由器不配合,这是您需要在收听之前加入多播组的原因之一:
+--------+ +--------+ +----------+
| 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
但它是路由器决定是否应该允许这样做。
在企业环境中,路由器通常配置为阻止子网以外的多播流量,因为路由器通常不涉及。
如前所述,如果您在端口上分离 类 流量,路由器将无法高效地执行它们的工作,因为它们通常不关心端口。