zoukankan      html  css  js  c++  java
  • 交换机MAC地址学习和数据转发

    转载:https://blog.csdn.net/ym815753607/article/details/75150593

    下面将谈谈MAC地址学习这块的东西

    图1 网络拓扑结构

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

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

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

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

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

    图2 arp泛洪

    PC2的情况:

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

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

                                  表4 查找MAC:A

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

    图3 PC1向PC2发送数据帧

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

                                                                        表5 数据转发

    表5

    PC3的情况

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

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

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

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

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

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

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

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

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

       图9 交换机广播arp请求

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

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

         图11  PC2单播arp应答

     图12  PC2单播arp应答

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

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

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

                                                          图16 数据帧转发过程

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

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

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

    图18 错误链路情况


    作者:saygoodbye_e92e
    链接:https://www.jianshu.com/p/c0f2ab8756e4
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    Unity 摄像机Clear Flags和Culling Mask属性用途详解
    Unity 坐标系
    Unity 模型导入导出
    Unity 序列化
    正确理解静态Static关键字
    Unity 中的协同程序
    Asp.Net中调用存储过程并返回输出参数
    php学习知识点
    Jauery 中Ajax的几种异步请求
    2014年12月21号面试
  • 原文地址:https://www.cnblogs.com/it-deepinmind/p/13490899.html
Copyright © 2011-2022 走看看