挖坑,最近也是想这个问题。
所以MAC的作用就是用来在一个广播域里面区分物理地址的,相当于一个唯一的实体。
在某些时候,我们没有IP(如DHCP请求情况),就需要广播,广播时候就需要MAC来标识你的身份,是谁请求的。那么MAC此时就当于没有IP地址时候的标识身份的。
另一种情况就是我们交换机使用时候,特别是三层交换机,一次路由,多次转发。当你的IP和mac在L3交换机里面建立映射了之后,那么交换机只需要剥离检查MAC就转发了,完全没有必要检查IP了。
所以mac在一个广播域内必须唯一。
以太网发明出来的时候,IP还没有垄断网络层协议,那时还有Novell网的IPX/SPX协议、DEC公司开发的CLNP网络协议,以及Apple公司开发的Apple Talk协议,以太网需要支持这所有的网络层协议,如果没有MAC地址,势必需要网卡解读网络层协议头的地址信息,而每一种网络层的地址都大相径庭,所以增加了以太网卡的实现复杂度。
而网卡有了MAC地址,可以不依赖于任何网络层协议,可以独立判断一个以太帧是否接收(依据MAC地址匹配),这样大大简化了网卡的实现。 即使以后出现更多的网络层协议,网卡也无需太多的改变,这就是网络分层的精髓,一层的内部实现无需知晓其上层、或下层协议字段。