首页 常识
当前位置: 首页 > 常识 >

交换机工作原理(收到一个数据包后交换机是如何处理的)

感受集线器

在基础课程里面了解过集线器的原理,那会没有太多的去做实验,这里我们使用eNSP来做一个实验,正好支持HUB这个设备。


这里使用192.168.255.1去ping 192.168.255.2,然后抓起PC3的流量,看看发生什么事情。



当你抓起PC3的流量的时候,使用PC1去PingPC2,所有的流量,PC3都是可以收到的,这个就是集线器工作的原理,一个数据发送出去,会复制到其他的所有接口,不管该PC是否要不要,另外的半双工、冲突域这些缺点就不在介绍了,可以回顾下基础的内容,后面替代这个产品的就是交换机。

了解交换机的工作过程

在了解交换机的正式过程之前,回顾下交换机带来的特性



还是之前的实验环境,只是把HUB换成了一台交换机。



在开始之前,先学一个命令,通过上面了解到交换机是具有学习地址的功能,也就是MAC地址,在交换机里面可以通过 display mac-address 查看当前交换机学习到的MAC地址,这个表项叫做MAC地址表,用于存放学习到的MAC地址,当前没有学习,因为还没触发数据。


开启PC3的抓包,建议过滤一下,因为交换机默认会发送一个报文,有点干扰我们抓包,然后就PC1去ping PC2


会发现现在抓包,PC3上面只收到了一个广播包,广播包是目的MAC全F,所以交换机会除了发送者接口以外的所有接口发送出去,但是其余的单播包,PC3是收不到的。




这个时候交换机的MAC表里面就出现了内容了,这个就是我们要了解的。


(1)当PC1发起去往PC2的Ping请求后,首先PC1会发送一个ARP请求



因为它并不知道PC2的MAC地址是多少。


(2)这个数据包发出以后会被交换机的G0/0/1收到,它通过读取以太网的头部信息,发现源MAC地址是PC1,目的MAC全F(广播,表示局域网所有主机)

这个时候交换机会做两件事情,第一个:将PC1的MAC地址记录到MAC地址表中,并且关联接口G0/0/1(因为数据包是从G0/0/1收到)。



第二个,将这个ARP请求包,发送至接收接口以外的全部接口(PC1以外的全部接口)



这就是为什么在PC3抓包能够看到ARP广播报文的原因。


(3)交换机发出以后,PC2与PC3会都收到ARP的请求,PC3发现请求的不是自己,就丢弃了,PC2发现,这是找自己的,于是回应一个ARP响应,这个是单播回应,这也是在PC3抓包看不到的原因,为什么看不到呢?这就是交换机的处理过程了。当交换机收到这个ARP响应后,它读取二层头部信息,发现源MAC是PC2,于是它将PC2的MAC记录到MAC地址表中,关联G0/0/3。




在看目的MAC是PC1的MAC,它会在MAC表中查询是否有该MAC地址与接口对应记录存在,发现存在PC1的MAC地址,于是从G0/0/1把这个数据包发送出去,这就是PC3收不到的原因,因为交换机知道PC1在哪,并不会像HUB一样全部接口都发送。



(4)PC1收到ARP回应后,可以进行封装二层头部了,这样就把ICMP的请求发送出去,交换机收到以后同样的读取二层头部,发现目的MAC是PC2,MAC表中有记录,从G0/0/3发出。


(5)PC2收到PC1的ICMP请求,回应ICMP应答,交给交换机,交换机同样读取二层头部,发现目的MAC是PC1,直接从G0/0/1发出。


总结:从以上的流程中可以发现,交换机是通过读取以太网头部中的源MAC来学习MAC地址的,并且后续通过二层头部的目的MAC,在自己学习到的MAC地址表来寻找到对应接口,将数据发送出去。


要完成这个实验呢,首先,要先Ping一次,建议关闭之前的PC3抓包,重新抓取。




老样子,PC3抓包还是只看到了ARP报文,这个时候做一个操作,假设PC2的线路坏了



通过把PC2停止(关机),好玩的事情出现了,pc1ping pc2,显示Request timeout(这个在ICMP的差错报文中有讲解,还记得吗),这因为PC2关了,自然是不通,但是好玩的事就在PC3竟然收到了PC1的ICMP报文!!!!是不是有点奇怪,不是只有目的MAC全F的才进行发送到其他接口吗?


这里就要介绍交换机工作的另外一个特点了




当交换机收到一个数据包以后,它会读取里面的以太网头部,源MAC学习进MAC地址表


至此呢,交换机的转发数据原理就明白了,总结下来就是上面这2点,建议大家做做这个实验,可以了解下整个转发的原理。


H3C设备MAC地址表查看



H3C模拟器跟华为一样,拖3台PC,然后一台交换机出来,通过连线接好,然后测试下。



PC3与PC4同样的设置地址,记得启用哦


开启抓包后,还要启动wirehsark,不会自动启动的。



这个时候默认情况下华三交换机也是没有任何地址表项存在的。



启动命令行终端(这个就是之前为什么用eNSP演示的原因,HCL稍微有点麻烦)



现象跟华为是一样的


一个特殊案例分享(华为华三命令一样)



在某些特定的环境下,特别是有服务器这种,通常会进行一个操作,就是把服务器MAC地址静态绑定的操作,比如上图服务器接在G0/0/3上面,可以在交换机做一个操作。



命令:mac-address static 【MAC地址】【接口】【VLAN】 MAC地址你在操作的时候MAC地址跟图不一样,以你自己实际的为准 将服务器的MAC地址静态的跟G0/0/3口进行绑定,其中有一个比较陌生的参数是vlan 1,这个下一篇我们会学到,可以先理解交换机默认初始状态都属于VLAN1。





可以看到类型变成了static,访问也没什么问题,这个时候假设有一个伪装服务器MAC的设备出现,会怎么样呢?



当把PC2设置成192.168.255.3后,并且MAC地址也伪装,但是实际PC1去访问服务器,PC2这个伪装并不会影响到服务器,这样就是静态绑定的好处,也是实际中比较常用的方法,因为静态绑定的优先级是高于动态的,所以PC2设置成了服务器一样的IP地址跟MAC也不会影响到服务器,交换机不会把这个MAC地址记录到MAC表中,通过上面查看也可以发现,没有关于G0/0/2的信息,保障了服务器连接的稳定性。


如果我想要G0/0/3不在学习其他的MAC地址,就只使用静态绑定的行不行呢?是可以的,交换机支持一个功能可以关闭某一个接口的动态MAC学习机制




作业


PC_2,pc_3_pc4设置好地址,PC4当做一台服务器

相关文章