浅谈交换机MAC地址学习和数据转发

时间:2024-04-04 14:12:53

下面将谈谈MAC地址学习这块的东西,欢迎大家一块探讨,补充!

浅谈交换机MAC地址学习和数据转发


图1 网络拓扑结构

PC1要与PC2通信,基于以太网通信中,必须在数据帧中指定目标MAC地址才可以进行正常通信。

假定PC1的arp表项中没有对应通信的PC2的MAC地址B与IP映射,那么PC1将广播一个“arp请求”,交换机通过port1 接收到PC1广播的arp请求报文,通过查找交换机内部的转发表,发现没有PC1的MAC地址A与端口1对应关系(假定交换机处于初始化状态),如表1

表1 初始化的交换机转发表

MAC地址表

MAC地址

端口

 

 

 

 

 

 

 

于是,交换机会将PC1发来的数据帧的源MAC地址A与端口1的对应关系更新到自己的转发表中,如表2;

表2 更新PC1的MAC地址

MAC地址表

MAC地址

端口

MAC:A

Port1

 

 

 

 

 

接着交换机会广播arp请求(flooding)到除了接收端口的的其他端口,如图2

浅谈交换机MAC地址学习和数据转发

  图2 arp泛洪

PC2的情况:

PC2接收到arp请求后,通过对比目的IP与自己IP,如果相等,则会将PC1的MAC地址A与IP映射关系更新到自己的arp表项中,并且会以单播的形式通过端口2返回一个“arp应答”,交换机接收到此arp应答后,会将PC2发来的数据帧的源MAC地址B与对应的端口2更新到自己的转发表中,如表3

表3 更新PC2的MAC地址

MAC地址表

MAC地址

端口

MAC:A

Port1

MAC:B

Port2

 

 

 

接着交换机查看自己的转发表发现arp应答目标MAC地址A对应端口1,如表4,

表4 查找MAC:A

MAC地址表

MAC地址

端口

MACA

Port1

MAC:B

Port2

 

 

 

于是将此arp应答请求通过端口1发送给PC1,PC1得到arp应答,将PC2 的MAC地址B与IP映射关系更新到自己的arp表项中。PC1发送由链路层封装的数据帧给PC2,如图3

浅谈交换机MAC地址学习和数据转发

图3 PC1向PC2发送数据帧

经过交换机,交换机通过转发表发现目的MAC地址是B,如表5,对应端口为2,于是通过端口2 将此数据帧传给PC2。

表5 数据转发

MAC地址表

MAC地址

端口

MAC:A

Port1

MACB

Port2

 

 

PC3的情况

PC3也接收到交换机广播来的arp请求,如图2,发现目的IP不是自己的IP,于是不作出任何回应


下面是模拟Cisco交换机做的实验(用CiscoPacket Tracer 做的实验,不能抓包用wireshark分析)

网络拓扑如图1,交换机型号Cisco 2950-24

下图6是模拟交换机初始化的转发表,转发表为空

浅谈交换机MAC地址学习和数据转发

            图6 模拟cisco交换机初始转发表

由于不能通过wireshark抓包分析,我查看PC1 ping PC2的动画演绎数据报收发过程。事先PC1、PC2 、PC3  arp表项均为空,均如图7,交换机转发表MAC表项为空,如图6

浅谈交换机MAC地址学习和数据转发

图7 PC1、PC2和PC3初始arp表项

PC1先广播arp请求,交换机接收到arp请求后,将PC1发来的arp数据帧中源MAC和端口映射关系更新到自己的转发表中,如图8,接着交换机会广播arp请求(flooding)到除了接收端口的其他端口,如图9、图10

浅谈交换机MAC地址学习和数据转发

         图8 交换机接收到PC1广播的arp请求

浅谈交换机MAC地址学习和数据转发

                                         图9 交换机广播arp请求

浅谈交换机MAC地址学习和数据转发

    图10 交换机广播arp请求的模拟过程

PC2接收到广播来的arp请求后,查看目标IP发现是自己的IP,于是将PC1的MAC与IP映射关系更新到自己的arp表项中,并单播一个arp应答给交换机,而PC3查看收到的arp请求后查看目标IP并不是自己的IP,于是不做任何回应,如图11、图12。

浅谈交换机MAC地址学习和数据转发

             图11  PC2单播arp应答

浅谈交换机MAC地址学习和数据转发

          图12  PC2单播arp应答


交换机接收到arp应答后将源MAC和端口映射关系更新到自己的转发表中,如图13,然后将arp应答通过端口1扔给PC1,PC1将PC2的MAC与IP映射更新到自己的arp表项,然后向PC2发送ping包,数据帧到达交换机后,交换机查看转发表,发现PC2的MAC与端口2的映射关系,于是将数据帧通过端口2扔给PC2,如图14、图15和图16

浅谈交换机MAC地址学习和数据转发

            图13 更新PC2的MAC后交换机中转发表

浅谈交换机MAC地址学习和数据转发

浅谈交换机MAC地址学习和数据转发

          图14/15 数据帧转发模拟过程


浅谈交换机MAC地址学习和数据转发

           图16 数据帧转发过程

Cisco交换机转发表老化时间默认也是300s,PC1与PC2自从上一次通信后没有进行数据交互,一段时间后查看转发表项,如图17

浅谈交换机MAC地址学习和数据转发

        图17  PC1与PC2通信一段时间后交换机转发表

在Cisco这款交换机条件下做了一个错误链路实验,PC1的MAC与端口1映射在老化时间内,我断开PC1与交换机连接,查看交换机转发表,结果如下图18,PC1的MAC对应端口映射立即消失了。

浅谈交换机MAC地址学习和数据转发

                        图18 错误链路情况