表示 48 位 MAC 地址的各种标准和行业实践方式有哪些?

网络工程 MAC地址
2021-07-27 17:45:57

我的团队构建了允许 MAC 地址作为用户输入的软件。这些地址通常是从各种平台以各种格式复制粘贴的。

维基百科将MAC 地址符号约定记录为:

用于以人性化形式打印 EUI-48 地址的标准 (IEEE 802) 格式是六组两个十六进制数字,按传输顺序(例如01-23-45-67-89-AB用连字符 (-) 分隔这种形式也常用于 EUI-64(例如 01-23-45-67-89-AB-CD-EF)。其他约定包括六组由冒号 (:) 分隔的两个十六进制数字(例如 01:23:45:67:89:AB),以及三组由点(.)分隔的四个十六进制数字(例如0123.4567.89AB);再次按传输顺序。

虽然不那么可读,但通常会看到以原始形式输入的 MAC 地址:AAAABBBBCCCC.

鉴于维基百科和其他地方记录的常用符号,我们使用正则表达式

^(?:[0-9A-Fa-f]{2}([-: ]?))(?:[0-9A-Fa-f]{2}\1){4}[0-9A-Fa-f]{2}$|^(?:[0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4}$

匹配以下格式:

  • AAAABBBBCCCC
  • AA:AA:BB:BB:CC:CC
  • AA-AA-BB-BB-CC-CC
  • AAAA.BBBB.CCCC

最近有人将我引向了使用格式示例介绍MAC 地址的文章其中介绍了以下格式AAA.ABB.BBC.CCC,我们的正则表达式不支持该格式

经过一些研究和谷歌搜索,我无法将这种格式归因于特定的供应商或来源。在修改我们的正则表达式之前,我想了解格式来源的上下文。遗憾的是,上述文章来源不佳,出现在 Google 搜索MAC 地址格式的第一个结果中

在我的研究过程中,我遇到了我们的正则表达式不匹配的其他几种格式。显然有多种方法可以表示 48 位 MAC 地址。

表示 48 位 MAC 地址的各种标准和行业实践方式有哪些?如果可能的话,可以在几个不同的地方用分隔符分解一个 12 个字符的字符串,我想有一个给定格式的来源。

1个回答

我真的没有 48 位 MAC 地址的各种表示的所有来源,但我看到它们被不同地使用:

AA-BB-CC-DD-EE-FF
AA.BB.CC.DD.EE.FF
AA:BB:CC:DD:EE:FF
AAA-BBB-CCC-DDD
AAA.BBB.CCC.DDD
AAA:BBB:CCC:DDD
AAAA-BBBB-CCCC
AAAA.BBBB.CCCC
AAAA:BBBB:CCCC
AAAAAA-BBBBBB
AAAAAA.BBBBBB
AAAAAA:BBBBBB

如果我为此构建正则表达式,我会考虑所有这些格式,并确保不允许混合大小和分隔符。奇怪的是,我还没有看到一个表示为一组没有分隔符的字符。


长期以来,这一直是我的烦恼,尤其是当我需要通过各种交换机、路由器、WAP 等网络跟踪 MAC 地址时,查看 ARP 和 CAM 表,并且每个设备在其表中都有不同的表示.