以太网帧头定义为:
struct ethernet_header {
uint8_t dest_address[6];
uint8_t source_address[6];
uint16_t length_or_ethertype;
};
我的理解是6字节的MAC地址格式现在正式称为EUI-48
。我还读到还有另一种格式,称为EUI-64
,它描述了一个8字节的MAC地址。
但是我对EUI-64
的目的感到非常困惑。从表面上看,EUI-64
的明显原因是当我们在地球上有2 ^ 48个以上的唯一设备时要处理地址耗尽。但是,我可以找到的所有关于EUI-64
的信息都似乎只是在谈论与IPv6有关的信息。也就是说,EUI-64
提供了一种将48位MAC地址映射到IPv6地址的方法。
但是,除了IPv6之外,EUI-64
还有其他目的吗? EUI-64是纯粹是为了解决与IPv6有关的问题而发明的,还是为了应对最终用完的48位MAC地址而发明的?
我认为EUI-64主要是为了处理最终用完的48位MAC地址而设计的-这意味着将创建许多具有64位MAC地址的新硬件设备(或扩展唯一标识符,以正式使用如果是这种情况,那么任何现有的网络设备(例如路由器和交换机)将如何分辨出源地址和目的地址为48位的数据包与64位地址为目的的数据包之间的区别。位和目的地址是什么?
由于以太网报头的前两个字段是2个48位源/目标地址,所以我们不能仅用64位源/目标地址替换这些字段,因为检查该数据包的任何软件都不知道如何分辨差异,因为地址前没有“类型”或“版本”字段。 (例如,以IP标头的形式方便地将4位版本字段作为标头的前4位,因此我们可以轻松地区分IPv4和IPv6。)
所以我的问题是:
EUI-64是要解决48位MAC地址耗尽的问题,还是 仅用于将MAC地址映射到IPv6地址?
如果要使用EUI-64解决最终的48位地址耗尽,如何 网络软件可以区分以太网数据包吗 包含48位和64位MAC地址?
答案 0 :(得分:2)
由于EUI-48在24位OUI块中分配,因此地址空间不足。尽管如此,它仍然并将继续用于非常流行的以太网和WiFi网络。
EUI-64是EUI-48的超集,适用于“新”应用程序。目前,它用于Firewire,ZigBee,并以EUI-48的形式用于IPv6。