MAC地址有单播、组播、广播之分。

单播地址(unicast address)表示单一设备、节点;

多播地址或者组播地址(multicast address、group address)表示一组设备、节点;

广播地址(broadcast address)是组播的特例,表示所有地址,用全F表示:FF-FF-FF-FF-FF-FF。当然,三层的IP地址也有单播、组播、广播之分。

   因为以太网线路上按“Big Endian”字节序传送报文(也就是最高字节先传送,关于字节序请参考相关文档),而比特序是”Little Endian”(也就是最低位先传送)。所以有如下的图(从最左边开始传送):

测试组播地址 centos 如何判断组播地址_单播


注意图上的第47bit,这一位表示MAC地址是全球唯一地址还是本地地址,0表示全球唯一地址,1表示本地唯一地址。这一位也叫G/L位。

对于网络设备上固化的MAC地址,因为它唯一标识这个设备,所以只能是单播地址,也就是MAC帧里面的Source地址第48位只能0。    

   我们常说有2的48次方个MAC地址可供网络设备使用,这些地址可以多到给地球上每一粒沙子分配一个地址,其实这个数量要打折扣的,因为MAC地址虽然有这么多,但真正用在网卡上并且全球唯一的只有2的46次方个:第48bit一定是0,第47bit一定是0。

 关于组播地址,有这么个误解:MAC地址第1字节必须是0x01才表示组播地址,连TCP/IP详解上也这么说(见中文版12.4.2第一段)。IEEE 802.3里面已经明确说明了只要第48bit是1就表示组播地址,所以无论MAC地址第1字节是0x01、0xC1或者是0x33都表示这个MAC地址是组播地址(以0x33开头的表示IPV6对应的二层组播地址)。之所以有这样的误解,是因为到目前为止,大部分组播MAC地址的第1字节都是0x01。如:


01-80-C2-00-00-00(STP协议使用)

01-80-C2-00-00-01(MAC Control的PAUSE帧使用)

01-80-C2-00-00-02(Slow Protocol: 802.3ah OAM/ LACP 协议都用这个地址,这个地址很有故事,有多少软件处理这个地址会出问题啊!)

01-00-5E-xx-xx-xx(IP组播地址对应的二层组播地址)。

(备注:

1、48位二进制   ---> 12位16进制

为确保MAC地址的唯一性,地址由两部分组成:

a、供应商代码 //占用前24位二进制

b、序列号   //占用后24位二进制

2、MAC地址可以分为三类

a、单播地址:第一个字节最低位为0 ,eg: 00e0.fc00.0006

b、多播地址:第一个字节最低位为1 , eg:  01e0.fc00.0006

c、广播地址:48位全为1 ,eg ffff.ffff.ffff

以太网线路上按“Big Endian”字节序传送报文,而比特序是”Little Endian”传送。故


第48bit即第一个字节的最低位。