JGroups:为假人解释mcast_addr

问题描述 投票:1回答:1

使用以下命令监听MCast消息。

java -cp $CLASSPATH:./jgroups-all.jar org.jgroups.tests.McastReceiverTest -mcast_addr 228.1.1.1 -port 55555

基于此图像,228.1.1.1应该是用于多播的有效IP。

enter image description here

现在是问题...

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的程序,那么我是否可以窃听其他人的消息?

multicast jgroups
1个回答
1
投票
  1. 用外行的话来说,mcast_addr就像是一个射频,不同的是您需要先加入它才能收听(在没有路由器跳的网络内,情况并非如此)。大多数情况下,也使用端口,但是您可以将其视为频率的一部分。

所以,而不是mcast_addr是类似“ MyConferenceRoom1”的东西,我 称之为“ 228.1.1.1”?

是,完全是。

  1. 是,但是对于超大容量,不需要的消息的过滤将在IP堆栈的更高位置发生,这可能会降低性能。通常,出于以下说明的原因,您通常希望在多播组上分离流量类别。

  2. 是,在IP级别没有内置的permissioning。您可能会遇到无法正常使用的路由器,这是在收听之前需要加入多播组的原因之一:

+--------+    +--------+    +----------+
| Sender | -> | Router | -> | Listener |
+--------+    +--------+    +----------+

作为侦听器,当您加入组播组时,消息将发送到路由器,该路由器根据其配置将开始将消息路由到侦听器。

现在,在具有子网网络的映像中,发送方和侦听器之间可能有2个路由器:

+--------+    +----------+    +------------+
| Sender | -> | Router A | -> | Listener 1 |
+--------+    +----------+    +------------+
                    |
                    V
              +----------+    +------------+
              | Router B | -> | Listener 2 |
              +----------+    +------------+

如果Listener 1加入了224.1.2.3Listener 2加入了228.1.1.1,则他们将不会看到彼此的流量。这种机制可以防止几乎没有兴趣的多播消息泛滥到网络。Listener 2当然可以尝试加入224.1.2.3,但是由路由器来决定是否应允许这样做。

在企业环境中,通常将路由器配置为阻止子网以外的多播流量,因为通常不涉及路由器。

如前所述,如果您将端口上的通信类别分开,则路由器通常将不在乎端口,因此将无法高效地执行其工作。

© www.soinside.com 2019 - 2024. All rights reserved.