我有一个连接到以太网交换机的设备,我的 PC 网卡也连接到该交换机。该设备正在发送239.255.255.251我能够收听的多播消息。我电脑的 IP 地址是192.168.1.50,网络掩码是255.0.0.0。
这不应该行不通吗?
我有一个连接到以太网交换机的设备,我的 PC 网卡也连接到该交换机。该设备正在发送239.255.255.251我能够收听的多播消息。我电脑的 IP 地址是192.168.1.50,网络掩码是255.0.0.0。
这不应该行不通吗?
不,这不应该起作用,它应该起作用。
第 2 层广播域中的任何人都将能够接收在该域中发送的任何多播消息。除非您使用 vlan,否则连接到交换机的任何设备都可以侦听所有多播组。路由器不转发多播流量,除非专门配置为这样做。
子网掩码仅告诉您的计算机哪些 IP 地址在其本地子网中,哪些地址不在。它们在多播中没有任何作用。
在以太网层,多播组映射到多播 MAC 地址。交换机会将发往多播 MAC 地址的流量发送到所有端口(除非专门配置为不这样做)。
要查找多播组的多播 MAC,首先将 IP 地址转换为二进制:
239.255.255.251 = 11101111.11111111.11111111.11111011
多播 MAC 的前 25 位始终为00000001:00000000:01011110:0. 这意味着它们的范围从01:00:5E:00:00:00到01:00:5E:7F:FF:FF。
要构造多播 MAC,请将 IP 的最后 23 位附加到所有多播 MAC 的固定前 25 位。在这种情况下,我们得到:
00000001:00000000:01011110:01111111:11111111:11111011
这是
01:00:5E:7F:FF:FB.
您可能已经注意到无法进行反向映射。所有多播 IP 都以 4 位开头1110,剩下 28 位用于 2^28 个不同的多播地址。由于组播 MAC 地址中只有 23 位的空间,因此这样的 MAC 对应于一组 32 个组播 IP 地址。
为了添加 Gerben 的响应,交换机读取 MAC 地址中的个人/组位以查看 MAC 是单播还是广播/多播。
它是第一个字节的最低有效位(最右边):
00000001
1 = 广播/多播 0 = 单播
多播与广播一样,仅限于发起它的 LAN。它以第 3 层(路由器)为界。多播路由是为了克服这个问题而开发的,但是路由器必须支持并启用多播路由才能路由多播流量。组播路由与单播路由不同。您主机的单播地址和掩码与多播无关。应用程序必须订阅多播组才能接收多播。主机可以使用 IGMP 通知启用多播的路由器它希望从远程源接收组的多播,并且某些交换机可以侦听 IGMP 消息以便仅将多播发送到特定的交换机端口。
多播的完整解释超出了本网站的范围。
如果您使用 Wireshark 之类的东西,并且您的网络适配器处于混杂模式,您可以看到 LAN 上的任何第 2 层流量。但是,您的计算机将无法直接与该子网通信。