10.06 科普一下:什么叫MAC地址学习,记录什么内容

概述

MAC地址学习虽然说起来比较简单,但是在工作中,还是经常看小伙伴不能正确的应用,遇到问题时也比较迷茫,不知道如何分析问题。究其原因,可能还是对MAC地址学习的工作原理了解的不够,所以我今天写一篇文章,给还迷糊的小伙伴在普及一下,如果是已经了解的同学,可以当做复习。

MAC地址简介

在OSI七层模型中,每一层都有不同标识符,用来区分不同的设备,这样它们之间才能对等的进行通信。而MAC地址是数据链路层(layer2)标识符,在数据链路层唯一标识一台设备。

科普一下:什么叫MAC地址学习,记录什么内容

OSI七层模型

MAC地址总共有48个比特(bit),在工作中通常使用16进制来表示,一般有两种写法,一种是:HH:HH:HH:HH:HH:HH格式,如下图:

科普一下:什么叫MAC地址学习,记录什么内容

HH:HH:HH:HH:HH:HH

另外一种是:HHHH:HHHH:HHHH,如下图:

科普一下:什么叫MAC地址学习,记录什么内容

HHHH:HHHH:HHHH

中间可以使用冒号(:)或者点(.)分割,看具体的厂商实现。

源MAC vs 目的MAC

我们注意到,在一个以太网报文中,有两个MAC地址:源MAC、目的MAC,如下图所示:

科普一下:什么叫MAC地址学习,记录什么内容

源MAC、目的MAC

那么这两个MAC地址有什么区别呢?这也是大家容易犯迷糊的地方,其实只要记住三句话就可以了:

  1. 源MAC地址是属于报文发送者;
  2. 目的MAC地址是属于报文终结者;
  3. 交换机接收到报文以后,会记录源MAC,同时根据目的MAC查找出接口。

MAC地址学习原理

MAC地址学习是针对于交换机来说的,它说的是交换机在收到一个报文时,会把报文的源MAC地址记录在MAC地址表项中。

如下图所示,交换机E0/1接口收到任何PC1发送的报文,都会把源地址记录在MAC地址表项中:

科普一下:什么叫MAC地址学习,记录什么内容

记录MAC地址表项

交换机MAC地址表项的格式类似于下图:

科普一下:什么叫MAC地址学习,记录什么内容

MAC地址表项

当交换机从别的接口,收到目的MAC是0000:0000:1111的报文时,就会从E0/1接口转发出去,这个也称为查找MAC地址表。

下面我们以一个具体的例子来阐述上面的内容。

原理举例

拓扑

科普一下:什么叫MAC地址学习,记录什么内容

拓扑图

  • 三台PC配置同一个网段的IP地址;
  • 交换机和三台PC相连的接口配置同一个Access VLAN 10;

MAC地址学习

初始情况下,交换机的MAC地址表项是空的,如下图:

科普一下:什么叫MAC地址学习,记录什么内容

初始的MAC Table

当PC1发送的任何报文到达交换机时,例如ARP报文:

科普一下:什么叫MAC地址学习,记录什么内容

ARP报文

交换机都会记录报文的源MAC地址,同时更新在MAC地址表项中,如下图所示:

科普一下:什么叫MAC地址学习,记录什么内容

更新MAC地址表

下次如果收到目的MAC为0000.0000.1111的报文,就会只从E0/1接口转发出去,如下图所示:

科普一下:什么叫MAC地址学习,记录什么内容

特定出接口

估计看到这里,有小伙伴就会问:如果交换机接收到的报文,在MAC地址表找不到目的MAC对应的表项该怎么办?

答案是:在同一个VLAN里进行泛洪。

例如此时PC2发送一个报文,其目的MAC地址为0000.0000.4444,交换机没有这个表项,则交换机会把报文同时发送到PC1和PC3,如下图所示:

科普一下:什么叫MAC地址学习,记录什么内容

交换机泛洪报文

总结

各位小伙伴看完上面的描述,应该对MAC地址学习的原理了解了吧,我们简单的总结出3条结论:

  1. MAC地址学习,记录是接收报文的源MAC地址;
  2. 交换机收到报文以后,会根据目的MAC地址查找出接口;
  3. 如果找不到出接口,会从同一个VLAN里的所有接口转发出去(泛洪);
  4. ​如果找到出接口,会只从特定的出接口转发出去,这个就是MAC地址学习的真正目的:减少网络的流量。

如果各位还有疑问,欢迎留言讨论,也非常欢迎各位关注我的头条号,一起讨论网络问题!


分享到:


相關文章: