感受集线器

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

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

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

了解交换机的工作过程

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

  • 交换机是主要是工作在数据链路层,能够去读取以太网的头部

  • 每个接口有独立的硬件芯片,工作在全双工,当1口与3发送数据的时候,并不影响其他接口,实现了隔离了冲突域的同时,其他接口也可以同时发送数据,提高了工作效率,这也是目前企业网一直使用交换机的原因。

  • 具有丰富的接口来满足企业的需求,目前市面上主流的8口、16口、24口、48口的交换机,根据实际需求灵活选择。

  • 具有地址学习功能,这也是交换机智能化的一点,能够知道具体的终端位置在哪,准确的送达目的地,而不是傻瓜式的复制到其他所有接口。

  • 从实验中来了解交换机的工作过程

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

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

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

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

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

  • 5489-9856-195f的MAC地址从G0/0/3接口学到,这个接口正是对应PC2的

  • 5489-98d4-0ac8的MAC从GE0/0/1接口学到,这个接口对应的是PC1。

  • Type为dynamic,也就是动态学习,竟然是动态学习,那势必就有生存周期,比如这台电脑关机了,在一定时间后,删除掉对应的表项,这样来优化资源,因为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地址表来寻找到对应接口,将数据发送出去。

  • 假设目的MAC在MAC表中不存在,交换机会如何处理呢?

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

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

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

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

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

  • 目的MAC如果是全F时(广播)或者组播MAC,直接从收到的接口以外的全部接口发送出去

  • 目的MAC为正常MAC时,检查MAC表是否有该目的MAC的条目,有则直接通过记录的口,单播发送出去,如果没有,从收到的接口以外的全部接口发送。  这个就是上面PC2关机以后,由于G0/0/3接口物理线路断开,交换机会将G0/0/3学习到的MAC地址全部删除,所以查看MAC表里面只有PC1的MAC,这时候PC1在去访问PC2,交换机发现MAC表中没有PC2的MAC记录,所以采取全部接口发送,其实有点回到HUB的模式,HUB是因为物理工作方式就是这样,交换机这样做的目的是为了能够找到PC2,让PC2回复,自己就能够学习到MAC地址,下次在收到对应的数据包就可以直接单播发送了,通过MAC表转发到对应的接口。

  • 对于单播的目的MAC地址在MAC表中没有找到的这种情况,称为未知单播帧,因为交换机并不知道它在哪,所以只能通过泛洪(Flooding),这个术语在很多书上面会提到,这里提及一下。

  • 泛洪与广播的区别:广播指的是收到目的明确为全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学习机制

  • 华为设备:接口下下面,  mac-address     learning disable    |    mac-address learning disable     action discard

  • 华三设备:接口下面,undo      mac-address mac-learning enable      (后续补充:如果需要禁止它转发该接口其他的MAC的流量,还需要两个命令,一个是限制接口学习MAC的数量,mac-address     max-mac-count 0,还一个命令是达到上限以后的处理规则, undo mac-address max-mac-count     enable-forwarding

  • MAC地址其他知识了解

    • 交换机自动学习的MAC会存放到MAC地址表中,这个属于动态学习(dynamic/Learned),是有时间限制的,不管是华为、华三还是思科的产品默认是300s,通过display       mac-address aging-time         查看。

    • 华为通过mac-address      aging-time  通过该命令可以修改MAC动态的老化时间,如果修改为0(华三通过mac-address      timer  no-aging来修改),表示永久存在,不老化,建议默认参数即可

    • 华为华三设备清除MAC地址表,可以通过undo mac-address  :清除所有MAC表项  |       undo      mac-address G0/0/1  :清除G0/0/1学到的 |  | undo mac-address static  清除静态的 |       undo mac-address dynamic:清除动态学习到的。

    • 华为华三设备静态绑定MAC,通过mac-address  static xxxx-xxxx-xxxx  interface vlan x  (华三可以支持全局跟接口下配置,华为只能全局)

作业

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

  • PC_2 ping 3与4通不通,然后观察MAC地址表(建议复制MAC地址,后续用的上)

  • 在G1/0/3口上面禁止掉MAC地址学习,查看下是否pc_2与3能不能跟PC_4通信(主要查看MAC表)

  • 做静态绑定功能,把PC_4的MAC地址绑定到交换机上面

交换机工作原理,收到一个数据包后交换机是如何处理的(实验加抓包详细了解)相关推荐

  1. 计算机网络交换机原理,计算机网络__交换机工作原理

    计算机网络交换机工作原理 在前面了解到根据交换机在OSI参考模型中工作的协议层不同,将交换机分为二层交换机.三层交换机.四层交换机.交换机工作的协议层不同,其工作原理也不相同.下面我们将介绍各层交换机 ...

  2. 路由器和交换机工作原理

    路由器工作原理 路由器:三层设备,同时基于二层设备工作 当数据包进到路由器时,首先查看的是二层报头(查看的是目标MAC) 目标MAC分为三种:广播,组播,单播 广播地址 解封装到三层报头 组播地址 每 ...

  3. Wireshark抓包分析交换机工作原理

    [实验名称] 交换机工作原理 [实验目的] 1.熟悉Linux虚拟网络环境: 2.熟悉Linux中network namespace的基本操作: 3.熟悉Linux中虚拟以太网设备Tap和veth p ...

  4. 路由和交换机工作原理

    路由器与交换机的工作原理 计算机网络往往由许多种不同类型的网络互连连接而成.如果几个计算机网络只是在物理上连接在一起,它们之间并不能进行通信,那么这种"互连"并没有什么实际意义.因 ...

  5. 交换机工作原理、MAC地址表、路由器工作原理详解

    一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...

  6. 网络基础笔记(三)二层交换机工作原理、单点故障与链路聚合、DHCP

    目录   0x01 二层交换机工作原理   0x02 二层交换机单点故障如何解决   0x03 链路聚合   0x04 DHCP 0x01 二层交换机工作原理 二层交换机MAC表的限制 1.交换机MA ...

  7. 6.OSI七层模型及交换机工作原理及VLAN(虚拟局域网)及VTP(vlan同步技术)

    交换机工作原理及VLAN(虚拟局域网) ❤OSI参考模型:从下往上,第一层是物理层 物理层:在设备之间传输比特流(以010101这样的二进制进行传输,以电信号的形式进行传输,0没有,1有) 物理层给线 ...

  8. 计算机网络 交换机工作原理

    交换机工作原理 数据通过网卡发送出去之前,必须在各层封装完成. 主机I向主机IV发送消息过程 主机I在各层上的数据都封装完毕,唯独在数据链路层没有目的主机的MAC地址,所以主机I会发送一个ARP广播. ...

  9. 交换机原理_交换机工作原理解析

    原文连接:http://www.elecfans.com/dianzichangshi/20171204593673.html 交换机原理 数据传输基于OSI七层模型,而交换机就工作于其第二层,即数据 ...

最新文章

  1. 剑指offer_第2题_替换空格
  2. 你准备好持续交付(CD)了吗?
  3. 怎么又有了50个 Gmail 邀请
  4. java获得一个空闲端口号_Python找出9个连续的空闲端口
  5. 【Android 逆向】Android 逆向通用工具开发 ( Android 逆向通用工具组成部分 | 各模块间的关联 )
  6. 腾讯敏捷研发协作平台TAPD荣获CCF科学技术奖
  7. 使用H5实现机器人脸
  8. SpringCloud之声明式服务调用 Feign(三)
  9. 取一定范围内随机小数 c_算伪随机概率中C值的快捷方法
  10. 收款神器!解读聚合收款码背后的原理,你都知道吗?
  11. Kafka的架构设计
  12. AMP、HMP、SMP
  13. Flutter快速上车之Widget 1
  14. shiro-cas------配置从数据库获取用户
  15. ztree去掉文字前面的文件夹图标
  16. Python图形处理
  17. please select a valid python interpreter(请选择一个解释器)
  18. crossApp初级-开发环境-1
  19. c语言定义指向结构体的指针,C语言入门教程-指向结构体的指针
  20. Python必学知识

热门文章

  1. FTD vs FMC
  2. 基于java的药店管理系统
  3. 湘潭大学c语言作业系统学生端,作业收发系统学生端使用说明
  4. 领英大数据:经济寒冬,“全思维IT工程师”成企业新宠
  5. 高伟达业绩暴雷的背后:主业几乎被掏空,利润被并购企业深度捆绑
  6. Excel的数据透视表怎么弄 ?数据透视表怎么做汇总求和
  7. 掌纹与掌静脉融合matlab代码,一种基于人脸和掌纹掌静脉识别的身份比对方法与流程...
  8. 设计模式六大原则-java复读记录
  9. 在EXCEL中VBA编程检验身份证号码有效性
  10. Linux将与Windows争夺主流地位