传统意义上的IEEE上分配的为前24位,被称为OUI(Organizationally Unique Identifier),但由于MAC地址也算是一种珍惜资源了,所以被IEEE拆成了3种大小来卖,MA-S(IAB)、MA-M、MA-L(OUI),价目表如下,不包括每年的年费,详见IEEE SA - Registration Authority。

  你看,这样一算,维护这么一个表,光注册费都收了将将US $90000000,还有每年的年费,真是生财有道啊。

  所以说,我们传统意义上说用MAC地址的前24位来确定对应的厂商现在来说其实已经是不完全准确了的,根据IEEE公布的清单,已经有数千家组织购买了MA-S或MA-M,这两种类型的前24位均为IEEE注册的OUI,所以如果使用旧有方法,这几千家组织都会被显示为IEEE Registration Authority。

  此外还有一个异样的CID也被我列在了表中,它某种程度上与OUI很相似,IEEE分配了一个24位的CID(Company ID),且据IEEE称,它与OUI在同一个分配域中,其X-bit被置为1,并不会与其它的OUI相重复,但是不能被用作生成MAC地址(相当于是一个减配的OUI)。

  以上种种,被IEEE统称为EUI(Extended Unique Identifier),更多详细信息可参见此PDF。

  这样一来,应该如何正确实现一个通过MAC地址查询厂商的接口而不是一个OUI查询接口?

  首先需要将IEEE按类型提供的列表预处理并归并至一处,IEEE提供的列表每24小时更新一次,如果以一个服务来提供,应当每日定期更新。