我知道我可以使用netaddr
模块来检查IP地址是否是多播的,如下所示:
netaddr.IPAddress("192.168.1.1").is_multicast()
在我继续编写自己的版本之前,是否有各种格式的MAC地址具有可比性的功能?
例如:
0123.4567.89ab
答案 0 :(得分:3)
完整性:检查此功能的“功能”就像
一样简单>>> mac = netaddr.EUI('0123.4567.89ab')
>>> mac_is_multicast = bool(mac.words[0] & 0b01) # Is LSB set?
同样,您可以检查MAC地址是否在本地管理
>>> mac = netaddr.EUI('0123.4567.89ab')
>>> mac_is_locally_administered = bool(mac.words[0] & 0b10) # Is 2nd LSB set?
答案 1 :(得分:0)
多播地址在最高有效字节的最低有效位中具有1
。在十六进制表示中,这意味着第二个半字节是奇数(因为MAC地址是小端)。除了ffff.ffff.ffff
是广播地址。
http://bradhedlund.com/2007/11/21/identifying-ethernet-multicast/