ARP 表多播 IP

ARP 表多播 IP

arp -a在家里的网络中运行 cmd,输出正常,但是出现了一些多播地址:

  192.168.3.255         ff-ff-ff-ff-ff-ff     static
  224.0.0.22            01-00-5e-00-00-16     static
  224.0.0.251           01-00-5e-00-00-fX     static
  224.0.0.252           01-00-5e-00-00-fX     static
  239.255.255.250       01-00-5e-7f-ff-fX     static
  255.255.255.255       ff-ff-ff-ff-ff-ff     static

所以简而言之,它们只是用于将第二 OSI 层上的消息广播到我网络中的某些设备组?我仍在学习网络,所以任何帮助都值得感激。我无法 ping 第一个 IP,MAC 地址看起来很奇怪。出于安全原因,我用 Xs 审查了一些 MAC。我的子网掩码是255.255.252.0

PS 这些 MAC 地址是什么意思?它们是虚拟的吗?还是它们就像多个设备 MAC 的总和?

答案1

在以太网层,主机通常会侦听发往特定 MAC 地址的数据包。这包括单播、广播和多播地址。广播和多播地址在网络交换机中有特殊处理。廉价交换机只会广播目标 MAC 为多播或广播地址的数据包。

  • ff:ff:ff:ff:ff:ff是广播 MAC 地址
  • 01:00:5e:XX:XX:XX是多播 MAC 地址范围。范围 (224.0.0.0-239.255.255.255) 中的多播 IP 有一个简单的映射224.0.0.0/4:只需取 IP 的低 23 位,并在前面加上 OUI 01:00:5e:(IP 的前 5 位和缺失位的冲突有历史原因)。

向与广播或多播 MAC 地址关联的 IP 发送 ICMP PING 通常会导致所有监听该 MAC 的主机做出响应。根据您使用的客户端,您可能需要传递特定的广播标志或拥有管理员权限。

您可以在这里查找已注册的多播地址:https://www.iana.org/assignments/multicast-addresses/multicast-addresses.xhtml#multicast-addresses-12 但是,有些服务会选择随机多播地址,或者未注册。

在您的输出中:

  • 224.0.0.22- 组管理协议
  • 224.0.0.251- 移动DNS
  • 224.0.0.252- 链路本地多播名称解析
  • 239.255.255.250- 简单服务发现协议 (SSDP)

将多播 IPv4 地址转换为多播 MAC 地址:

def multicast_ipv4_to_mac(ipaddr_as_u32, multicast_oui='01005e'):
   return "%s%06x" % (multicast_oui, ipaddr_as_u32 & 0x7FFFFF)

# Example, using ip2int from https://stackoverflow.com/questions/5619685/conversion-from-ip-string-to-integer-and-backward-in-python
> multicast_ipv4_to_mac(ip2int('224.0.0.22'))
'01005e000016'

相关内容