什么是交换机?顾名思义,交换机就是用来数据包交换的;广泛用于终端接入;它的前身是hub(集线器),hub是一个古老的设备,它的作用也是用于终端接入,但hub有一个最大的缺点是它不能隔离冲突域;所谓冲突域就好比我们现实生活中的单行道路;冲突域的特点就是在一个冲突域内的设备,同一时刻只能允许一个设备发送数据;这样一来就很影响双方通讯;为了解决冲突域问题,交换机出现了;交换机的出现解决了hub的冲突域问题(其原因是交换机的每个端口都是一个冲突域,而hub的所有端口都属于一个冲突域,即交换机天生就有隔离冲突域的作用),极大提升网络的性能和安全性;

  冲突域和广播域

  在以太网中冲突域是由hub设备产生的,一个hub就是一个冲突域。而交换机的一个端口属于一个冲突域,有多少个接口就有多少个冲突域,接口之间的冲突域是相互隔离的;在同一个冲突域中的每个节点都能收到所有被发送的帧,而在同一广播域中的每个节点能接收任意一台设备发出的广播帧;我们可以简单理解同一冲突域中的设备只能同一时刻一台设备发送,多台设备接收;而在同一广播域中的设备,可以同一时刻多台设备同时发送和接收;冲突域是基于第一层(物理层,由硬件设备属性决定),而广播域是基于第二层(数据链路层,由协议封装报文决定,不同协议封装报文,其二层封装也有所不同,比如以太网封装二层就是封装源mac地址和目标mac地址,而ppp协议封装就不用mac地址) 。

  交换机工作在数据链路层,对数据帧进行操作,在收到数据帧后,交换机会根据数据帧的头部信息对数据帧进行转发;

  交换机的作用功能

  1、终端设备的接入,因为交换机有很多接口可以供其他设备接入到网络中来;

  2、以太网数据帧的交换(数据包),根据目标mac地址转发数据包;

  3、学习mac地址,并维护mac地址表(交换机核心工作原理,转发数据包就是根据这张表进行的)

  4、防止二层环路(一般傻瓜交换机没有这种功能,必须支持运行stp协议的交换机才有该功能)

  交换机的核心工作原理:根据MAC地址表中的MAC地址记录,做出智能转发

  提示:交换机的工作原理很简单,它就是靠mac地址表来进行转发数据包;当交换机从一个接口收到一个数据包以后,首先它会查看该数据包的目标mac地址,看看自己的mac地址表中是否有对应记录,如果有,就根据对应的mac地址所绑定的接口,将数据包从该接口发送出去;如果没有,它就会发送一条arp广播,问某某ip地址的mac地址,在问的时候会向所有接口发送arp请求,收到该arp请求的设备首先会查看对应的ip地址是否是自己,如果不是,那么该设备不会回复arp请求,如果是,它会回复该arp请求,这样一来交换机就会从对应回复包发送的接口和对应设备的mac地址绑定,并将该绑定关系信息存放在mac地址表中,然后再将对应的数据包从对应接口发送出去;从而实现了交换机从一个接口收到数据包,智能的从特定的端口转发出去;

  提示:如上图所示,当交换机收到一个数据包是发送给目标mac为2222的主机,此时交换机会查看自己的mac地址表,一看有对应mac地址为2222的记录,该mac地址对应的接口为f0/2;那么此时数据包会从f01转发至f0/2,从而连接交换机的f0/2口的设备就会收到连接f0/1口的设备发送到数据包;此时f0/3和f0/4口是收不到f0/1口发送的数据包;

  实验:根据下面的拓扑图抓包分析交换机的工作原理

  配置pc1

  提示:我们把pc1的ip地址配置为1.0.0.1/8,和交换机的g0/0/1口连接;

  在查看交换机的mac地址表,看看对应是否能够学习到pc的mac地址呢?

  提示:可以看到交换机的mac地址表为空,没有任何信息;其实在真机环境中,只要对应的主机配置好ip地址以后,它会发送免费arp(就是自己问自己,然后自己回答,其主要目的就是想让局域网中的交换机学习自己的mac);

  在pc1上抓包,然后使用pc1Ping任意一地址(不一定是pc2),看看交换机是否会学习pc11的mac地址?

  提示:首先pc1ping1.1.1.1的时候,在pc1上会封装1.1.1.1的mac地址,这个mac地址对应在pc1的mac地址表中没有,此时pc会发送arp请求,请求局域网中的ip地址为1.1.1.1的mac地址,如果有设备回复这个arp请求,那么对应pc1就能收到对应设备的mac地址;然后pc的icmp包就会在二层封装自己的mac地址为源mac,对方设备的mac地址为目标mac地址,进行数据包发送;此时对于交换机来说,在收到pc1发送到arp请求时,它首先会查看收到的数据包目标mac地址,一看目标mac地址为全f,此时交换机就知道这是一个广播,此时它会将该arp请求数据包中的源mac地址和收到该包的接口做绑定并记录域mac地址表中,然后在把该arp请求从其他接口泛洪出去;此时交换机就通过pc1发送的arp请求包学习到pc的mac;

  验证:查看交换机mac地址表,看看是否学习到pc1的mac地址呢?

  提示:可以看到此时交换机的mac地址表中就记录了pc1的mac地址和对应的接口;

  验证:用pc1ping pc2,看看交换机是否会学习pc2的mac地址呢?

  提示:首先我们可以看到pc1ping pc2 通了,在抓包中我们发现,首先抓到了是pc1发送到arp请求,在pc2收到pc1发送到arp请求,查看其地址和自己一样,此时pc2就回复pc1,然后pc1和pc2就可以正常发送icmp数据包了;其实在这一过程中交换机会从arp请求中学习到pc1的mac地址,从arp回复报文中学习到pc2的mac地址,在这同时pc1会收到pc2的mac地址,pc2会收到pc1的mac地址并记录在自己的mac地址表中;

  验证:查看pc1、pc2的mac地址表,看看是否记录了对方的mac地址呢?

  验证:查看交换机的mac地址表,看看是否学习到pc1和pc2的mac地址呢?

  提示:交换机能够学习到pc1和pc2的mac地址的前提是他俩都是同一vlan;交换机有了这个mac地址表,它就知道去往那个mac地址的数据包,该从那个接口发送出去;

  交换机工作逻辑图

  提示:交换机和路由器不同,路由器的工作是依靠路由表,如果收到数据包没有匹配的路由,则丢包,而交换机不会,交换机收到数据包查看mac地址表,如果mac地址表中有对应的记录,那么就从对应的接口转发出去,如果没有对应的记录则从其他接口防洪出去;

  总结:交换机的工作过程

  1、交换机在初始状况下mac地址为空

  2、学习mac地址:当从一个接口收到一个帧时,就会把帧内的源MAC与该接口进行绑定,放入MAC地址表;

  3、转发数据帧:当从一个接口收到广播帧、组播帧、未知单播帧(目标MAC不存在于MAC地址表中),就会把该帧从所有其它接口转发出去,除了接收接口;

  4、当从一个接口收到已知单播帧,立即从相应的的接口转发出去;

  交换机的mac地址表更新规则

  1、默认每条记录保存300秒;

  2、交换机重启会清空所有接口学习到的mac记录,接口关闭后会清空该接口学习到的记录;

  3、一个源mac出现在另外一个接口上,会删除老的记录,添加新的记录;也就是说一个mac只能关联在一个接口上;但对于接口来说,一个接口可以关联多个mac地址;比如交换机和交换机相连接;

  验证:查看交换机mac地址表生存时间

  提示:这个生存时间是指没有对应接口没有发送数据,如果300秒钟都没有发送数据,那么对应接口学习到的mac信息就会从mac地址表中清除,一旦有数据包发送,那么这个时间会刷新;如果一直有数据包发送,那么该接口学习到的mac地址就会一直存放在mac地址表中;

  验证:查看交换机的mac地址表,看看是否清空了记录?

  提示:可以看到现在交换机的mac地址表没有了记录,其原因是pc1和pc2超过300秒没有发送数据,所以对应学习到的mac信息就会从该表中删除;

  以太网接口工作模式

  1、半双工(half-duplex):通信双方都能发送和接收数据,但不能同时进行;

  2、全双工(full-duplex):通信双方都能同时接收和发送数据;

  提示:接口的双工模式有两种,一种是半双工,一种是全双工;半双工我们可以理解为现实生活中的单行道路,同一时间只允许一台主机发送数据,另外一台主机只能接受,两者不可同时发送数据;而全双工就好比双行道路,可以允许同一时间双发收发数据;默认情况下接口都是全双工模式;

  3、速率(speed):接口连接时两端进行协商,协商失败则无法正常通信;

  提示:默认情况下接口的速率都是自动协商,只有双方的速率一样,才可以实现通讯;

  配置交换机接口为半双工模式

  提示:修改接口的双工模式,首先要先关闭自动协商,其次1000M接口不支持半双工;通常不建议修改双工模式;

  修改电脑的网卡双工模式

  提示:如果修改电脑的速率为10M,而连接的交换机速率为100M,两者无法实现通讯,只有速率相同的情况下才可正常通行;其次全双工和半双工,是建立在两者都能通信的前提下;所以通常情况下不建议修改交换机或终端设备的接口的速率和双工模式;

HCNA Routing&Switching之交换技术基础的更多相关文章

  1. HCNA Routing&Switching之二层交换技术VLAN基础

    前文我们主要聊了下交换机的工作原理和以太网接口的速率和双工相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15088183.html:今天我们主要来聊一 ...

  2. HCNA Routing&Switching之路由基础

    在开始聊路由之前,我们首先要明白在网络通讯里,什么是路由?什么是路由表.路由器以及网关的相关术语:路由简单讲就是指网络数据包从源头到目标的路径,主要用来为不同网络间通讯提供数据包转发依据:路由表就是多 ...

  3. HCNA Routing&Switching之动态路由协议OSPF基础(二)

    前文我们主要了解了OSPF的区域.区域分类.路由器类型.OSPF的核心工作流程,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/15025533.html:今天 ...

  4. HCNA Routing&Switching之OSPF度量值和基础配置命令总结

    前文我们了解了OSPF的网络类型,OSPF中的DR和BDR的选举规则.作用等相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15054938.html: ...

  5. HCNA Routing&Switching之地址转换技术NAT

    前文我们了解了包过滤工具ACL相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15156308.html:今天我们来聊一聊地址转换技术NAT相关话题: ...

  6. HCNA Routing&Switching之动态路由协议OSPF基础(一)

    前文我们了解了基于路径矢量算法的动态路由协议RIP防环以及度量值的修改相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15012895.html:今天我 ...

  7. HCNA Routing&Switching之STP基础

    前文我们了解了VLAN动态注册协议GVRP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15113770.html:今天我们来讨论下二层环路和STP相 ...

  8. HCNA Routing&Switching之静态路由

    前文我们聊到了路由的相关概念和路由基础方面的话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14947897.html:今天我们聊聊静态路由相关话题: 回顾 ...

  9. HCNA Routing&Switching之GVRP

    前文我们了解了不同vlan间路由相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15110336.html,今天我们来聊一聊vlan动态注册相关话题: ...

随机推荐

  1. Spring Reactor 入门与实践

    适合阅读的人群:本文适合对 Spring.Netty 等框架,以及 Java 8 的 Lambda.Stream 等特性有基本认识,希望了解 Spring 5 的反应式编程特性的技术人员阅读. 一.前 ...

  2. Unity接入ShareSDK实现QQ登录和QQ分享、微信分享

    原文链接:Unity接入ShareSDK实现QQ登录和QQ分享.微信分享 由于微信登录需要企业审核,我这里就不说明了,有需要的可以去官网看一下文档,和QQ登录比多了一个打包的步骤. 第一步:到官网申请 ...

  3. 快来为你的 .NET 应用加个监控吧!

    导读 CZGL.ProcessMetrics 是一个 Metrics 库,能够将程序的 GC.CPU.内存.机器网络.磁盘空间等信息记录下来,使用 Prometheus 采集信息,然后使用 Grafa ...

  4. 数学:3D和矩阵

    跟紧工作需求学习,于是抽了点时间看了看用于2D3D转换的矩阵内容. 矩阵在3D数学中,可以用来描述两个坐标系间 的关系,通过定义的运算能够把一个坐标系中的向量转换到另一个坐标系中.在线性代数中,矩阵就 ...

  5. 手把手教会你远程Linux虚拟机连接以及配置pytorch环境。

    出一期用于连接远程Ubuntu系统并配置pytorch环境的教学.2021-07-07 13:35:57- 现在的矿难导致显卡大幅度的涨价对很多要做深度学习领域的小伙伴们非常的不友好,配置设备固然要掏 ...

  6. Destroying The Graph 最小点权集--最小割--最大流

    Destroying The Graph 构图思路: 1.将所有顶点v拆成两个点, v1,v2 2.源点S与v1连边,容量为 W- 3.v2与汇点连边,容量为 W+ 4.对图中原边( a, b ), ...

  7. springboot项目启动,停止,重启

    参考博客 https://www.cnblogs.com/c-h-y/p/10460061.html 打包插件,可以指定启动类 <build> <plugins> <pl ...

  8. Leetcode 递归题

    24. 两两交换链表中的节点 题目描述: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2-&g ...

  9. buu pyre

    一.下载附件是是pyc的字节码文件,找个在线网站反编译一下 思路还是挺清晰: 先逆着求出code, 这里就是求余,有点麻烦,那个+128%128其实没啥用的,省略就好了 算法里面再处理一下细节,跑一下 ...

  10. java 语言知识

    1.javase 标准版主要用于桌面应用.控制台:javaee 企业版主要用于web应用:javame微缩版主要用于嵌入式. 2.jre是java程序的运行环境,包含jvm(java虚拟机).jdk是 ...