MAC地址知识

Last Updated: 2023-04-18 09:44:07 Tuesday

-- TOC --

本文汇总一些与MAC地址有关的知识。

MAC地址是绑定硬件的,烧在网卡内,长度为48bit。(IP地址32bit,IPv6地址128bit)

MAC地址分单播,组播和广播!

单播MAC地址

mac

广播MAC地址

FF-FF-FF-FF-FF-FF,全F!二层广播,ARP协议就是利用全F的广播MAC地址进行请求。

组播MAC地址

高25bit固定,低23bit可变,低23bit是组播IP地址的映射。IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位为0,低23位为IPv4组播地址的低23位。

multicast_mac

To map an IP multicast address to a MAC-layer multicast address, the low order 23 bits of the IP multicast address are mapped directly to the low order 23 bits in the MAC-layer multicast address. Because the first 4 bits of an IP multicast address are fixed according to the class D convention, there are 5 bits in the IP multicast address that do not map to the MAC-layer multicast address. Therefore, it is possible for a host to receive MAC-layer multicast packets for groups to which it does not belong. However, these packets are dropped by IP once the destination IP address is determined.

交换机如果不运行IGMP Snooping,对于组播MAC报文来说,就是广播!

这样的映射有何作用?

2层交换机通过此地址格式来判断接收到的frame类型,单播frame直接查找mac转发表,组播报文查找通过IGMP Snooping建立起来的组播转发表,这样组播就是组播,不用广播,优化性能。

IPv4组播地址的后28位中,只有23位被映射到MAC地址,因此丢失了5位的地址信息,直接结果是有32个IPv4组播地址会映射到同一MAC地址上。例如IP地址为224.0.1.1、224.128.1.1、225.0.1.1、239.128.1.1等组播组的组播MAC地址都为01-00-5e-00-01-01。

技术上可以解决组播IP地址后23bit映射带来的mac组播地址重复,这就要2层交换机snoop到packet层面,建立的组播转发表也是基于组播IP地址的,而不是组播Mac地址,但是带来的就是转发性能的降低,不过减少了无效转发。可以考虑一个折中的办法:只对会造成MAC组播地址重复的组播IP地址进行特别处理。

MAC转发表

L2交换机的端口收到任何Frame(我们管2层报文叫帧,Frame),就把这个Frame里面的Source MAC Address(源MAC地址)记录下来,并与此接收端口形成对应关系,以此形成MAC转发表。

2层交换机对frame进行转发,不会对frame进行任何修改。(这个跟3层IP路由一样,报文中的源地址和目的地址在整个路由交换的过程中,是不变的。2层交换网络同样如此,不过,如果经过了3层路由,2层头被剥离然后再重新组装,这个时候源MAC和目的MAC才会改变。)

  1. 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;
  2. 再去读取包头中的目的MAC地址,并在地址表中查找相应的端口;
  3. 如果表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上去发送;
  4. 如果表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一个目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。(这里的广播,是不是ARP广播?)

不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。

So, networks are to routers as individual devices are to switches and bridges。路由器连接的是不同的网络,交换机链接的是一个个独立的设备。

(家用)路由器上的MAC地址克隆

其实就是修改网口MAC地址的功能,一般是修改WAN口的。

为什么要更换MAC地址呢?

原因在于,在某些网络环境下,运营商限制了接入设备的MAC地址,比如,只有某个C地址才可以接入网络(运营商在它的网络接入的地方进行MAC地址判断,发现非法的MAC地址,报文直接丢弃)。这个时候,如果我们更换了设备,原设备WAN口MAC地址也会变化,这时就需要在新设备上绑定原来的MAC地址,将原来设备的MAC地址克隆到新设备上来,其实就是修改新设备的MAC地址为原来设备的MAC地址,这样,网络就通了。

MAC地址克隆只是一个比较形象有趣的说法。

本文链接:https://cs.pynote.net/net/eth/202111182/

-- EOF --

-- MORE --