哈工大计算机网络课程局域网详解之:交换机概念

news2024/11/18 17:44:55

哈工大计算机网络课程局域网详解之:交换机概念

文章目录

  • 哈工大计算机网络课程局域网详解之:交换机概念
    • 以太网交换机(switch)
    • 交换机:多端口间同时传输
    • 交换机转发表:交换表
    • 交换机:自学习
    • 交换机互联
    • 组织机构(Institutional)网络
    • 交换机 VS 路由器

在介绍完局域网中最具代表性的以太网技术后,接下来我们继续来看一下在局域网中使用非常广泛也是非常重要的网络设备:交换机。

以太网交换机(switch)

本节主要面向以太网来介绍其中使用的交换机。

作为以太网交换机来说,是一个典型的数据链路层设备,可以实现对链路层数据帧的存储-转发。在存储-转发的过程中,交换机是通过检验到达数据帧的目的MAC地址,选择性(selectively)向一个或多个数据链路转发帧。

同时,交换机作为链路层设备,在每个接口中发送/接收数据帧时,实际上都是利用CSMA/CD协议来访问链路,发送数据帧的。

最典型也是使用最广泛的一类交换机叫做透明(transparent)交换机。这里透明的意思是指:

  • 主机感知不到交换机的存在。

因此,这类透明交换机就是一种即插即用的设备。也就是说,作为标准的链路层设备,交换机可以直接接入到网络就可以工作,而不需要复杂的配置和管理。

交换机:多端口间同时传输

交换机在现在的网络中,使用最广泛的场景,比如在以太网中,通过把计算机利用一个点对点链路,直接接入到交换机的一个接口上,从而构成了一个局域网,有时也被称为交换以太网。示例图如下所示:

在这里插入图片描述

这些主机都是通过一个独享的,或非共享的链路直接与交换机相连。作为交换机可以在这些互联的主机之间实现数据帧的存储-转发。同时,正如上面介绍的,交换在每段链路上都是遵循CSMA/CD协议来收发数据帧。由于在上述网络中,每个主机都是点对点与交换机连接的(每段链路一个独立的冲突域),所以不会发送冲突,且可以实现全双工。

交换机可以在这些所有互联的主机之间,实现并行的交换传输。比如A-A‘之间进行通信和B-B‘之间进行通信是可以同时进行的,互不干扰,没有冲突。

交换机转发表:交换表

作为交换机,如何保证数据能够动态的在多个不同的接口之间进行交换传输呢?

比如还是上面的示例图,交换机怎么知道A‘(实际指的是MAC地址)可以通过接口4到达,而B‘可以通过接口5到达?

这里就涉及交换机里一个非常重要的概念:交换表。

每个交换机都会维护一个交换表(switch table),交换表中的每条记录entry,记录了MAC地址与相应接口的转发映射关系(类似路由器中的转发表)。

比如,每个entry的格式:(主机MAC地址,到达主机的接口,时间戳)。这个时间戳的设置是当时间戳设置的时间超时之后,会把该条记录从交换表中清除,再重新学习获取。(看起来很像路由表!)

接下来还有一个疑问,就是上面交换机中的交换表是怎么构建出来的? 我们在网络层中介绍过,路由器中的转发表是利用一些路由协议(e.g. OSPF、BGP),根据算法来计算得到的转发信息。这里的交换表是这样做的吗?

交换机:自学习

实际上,交换表的构造方法跟网络层中路由转发表的构造方法有很大差异。这个差异在于,交换机获取交换表的信息是通过自学习来完成的。

交换机通过自学习,获知到达主机的接口信息。学习的过程大致如下:

  • 当收到帧时,交换机“学习”到发送帧的主机(通过帧的源MAC地址),位于收到该帧的接口所连接的LAN网段。
  • 学到该信息之后,就可以将发送主机的MAC地址/接口信息记录到交换表中。

下面以一个示例来看一下自学习的过程。还是上面的示例图,假设主机A要向目的主机A‘发送数据帧。(A和A‘实际上都是指MAC地址)

在这里插入图片描述

数据帧从主机A发送后,到达交换机,此时交换机就可以根据数据帧的源MAC地址学习到,当MAC地址为A时,其接口对应的是1。也就是说,交换机学习到了将来如何有数据帧需要发送给主机A,则会通过接口1来转发。

同时由于初始时,交换表是空的,不清楚应用通过哪个接口来转发该数据帧。此时会采用一种泛洪的方式,也就是除了接口1之外,其余的接口都会转发一个该帧的副本。 主机接收到后,会比对数据帧中的目的MAC地址,因此只有主机A‘会正确接收该数据帧,其他主机则直接丢弃。

作为交换机,在整个自学习过程中,有时也被称为一个帧过滤/转发过程。

交换机事实上就是利用收到数据帧的目的MAC地址去检索交换表,来决定从哪个接口转发数据帧。在这个过程中,也同时利用帧的源MAC地址来进行自学习。

接下来,我们对上面介绍的过程进行汇总,来描述一个帧转发过程。

当交换机收到帧时:

  1. 记录帧的源MAC地址与输入链路接口。

  2. 利用目的MAC地址检索交换表。

  3. if在交换表中检索到与目的MAC地址匹配的入口(entry)

    then {

    if 目的主机位于收到帧的网段

    then 丢弃帧

    else 将帧转发到该入口指向的接口

    }

    else 泛洪(flood)/* 向除收到该帧的接口之外的所有接口转发 */

交换机互联

作为利用交换机连接的局域网,显然不会只有一台交换机来连接所有的主机。有的时候可能是接口的限制,或是网络距离的需要,需要对网络进行扩展。最典型的扩展方式,就是利用多交换机互联之后,构成一个更大范围的层级结构的局域网。

在这里插入图片描述

这种网络结构在现在的局域网中是非常常见的。那么在上面的层级结构中,主干交换机S1、S2、S3、S4又是如何来构建交换表的呢?

需要再次强调的是,上述A、B、C…这些实际上指代的都是主机的MAC地址。

假设此时A向G发送数据帧,S1怎么知道通过S4转发?S4又怎么知道通过S3转发?

显然这个过程也是要通过自学习来完成的。这个过程实际上与单一交换机情形相同。比如上面的例子中,S1不知道如何转发数据帧时,采用的方式仍然是泛洪。泛洪之后,把数据帧传输到了S4,S4同样不知道如何转发,则仍然继续泛洪。以此类推,最终S3经过泛洪把数据帧的一个副本传输给了G。而在这个过程中,每个交换机都会自学习来学习各自交换表中的转发映射关系。

组织机构(Institutional)网络

交换机在实际局域网中使用非常广泛,比如下图的示例网络,就是一些比较典型的组织机构网络的一个缩影。

在这里插入图片描述

事实上比如像校园网、小型中小企业的网络等,它们的网络构成,大部分都由我们图中所示的网络特点。

比如,通过一个局域网的边缘路由器与外部网络连接(一般是连接到一个ISP网络上)。在网络(组织)内部,利用交换机连接交换机,交换机连接主机这样的方式构成一个组织内部网络。

从这个网络中可以看出,如果说路由器右边连接的网络不再包含网络层(第三层)设备的话,显然这样的网络对应的就是一个IP子网。在这个IP子网中,任何一个交换机在工作过程中,如何收到在这个网络范围内的任何一个主机发送的广播数据帧(目的MAC地址是全1),此时,所有交换机都会把这个广播帧转发到所有的其他接口上去,也就是上面讲过的泛洪。因此,对于这样一个IP子网来说,也被称为一个广播域。

再结合之前介绍过的冲突域的概念:如果交换机的某个接口所连接的网络不再经过另外一个交换机或网络设备的话,这样的网络就是一个冲突域。

上面的示例网络可以看得出来,由于每个交换机的接口最多只连接一个主机,所以每个冲突域都只有一台主机。

交换机 VS 路由器

在现在的网络中,经常会需要用到交换机和路由器等设备,因此,我们对交换机和路由器设备进行一个简单的对比,来加深理解。

交换机 vs 路由器:

  • 两者均为存储-转发设备:
    • 路由器:网络层设备,检测网络层分组首部,处理的是IP数据报。
    • 交换机:链路层设备,检测链路层帧的首部,处理的是链路层数据帧。
  • 二者均使用转发表:
    • 路由器:利用路由算法(路由协议)计算(设置)转发表的转发映射关系,依据IP地址。
    • 交换机:利用自学习、泛洪构建转发表,依据MAC地址。

可以参照下面的示意图来理解。

在这里插入图片描述

进一步的,可以把在网络中,尤其是局域网中,常用的一些网络设备,对其功能和局限性进行一个简单对比:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/799795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spire.Office for.NET Crack

Spire.Office for.NET Crack Spire.Office for.NET是E-iceblue提供的企业级Office.NET API的组合。它包括Spire.Doc、Spire.XLS、Spire.Seadsheet、Spire.Presentation、Spire_PDF、Spire.DataExport、SpireOfficeViewer、Spire-PDFViewer、Spire.DocViewer、Spire.Barcode和Sp…

模板(简单介绍C++)

模板 引入模板函数模板概念语法函数模板的原理函数模板实列化隐式实例化显示实例化 模板参数匹配原则 类模板类模板的定义格式类模板的实列化 泛型编程补充知识 引入模板 当我们想实现一个通用的交换函数时,我们能否告诉编译器一个模子,让编译器根据不同…

基于Java+SpringBoot+vue前后端分离墙绘产品展示交易平台设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

Ansible 自动化运维

目录 ansible 环境安装部署ansible 命令行模块inventory 主机清单 Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可…

MySQL 之 Buffer Pool

一、innoDB设计缓冲池目的 避免频繁访问磁盘,提高数据库读写性能。(作用与引用Cache三级缓存类似。) 二、缓冲池工作模式 读取数据:当Buffer Pool存在目标数据,就直接返回给客户端,没有再磁盘取数据。 修改…

1-高性能计算研究

高性能计算研究 E级计算机系统研制高性能计算应用软件研发并行编程框架应用协同开发优化平台和工具软件示例 高性能计算环境研发 E级计算机系统研制 高性能互联计算、编程、运行模型 应用驱动的新型可扩展基础算法(适用于E级计算的可计算物理建模与新型计算方法&a…

softmax回归

模型 softmax回归是多类分类模型,用于获取每个分类的置信度,置信度计算方式如下 经过全连接层,得到输出O,将O作为softmax的输入 O是输出向量,每个分量表示一个类别,y_hat_i表示i类别的置信度&#xff0…

[语义分割] DeepLab v1网络(语义分割、信号下采样、空间上的不敏感性、LargeFOV、膨胀卷积、空洞卷积、MSc、Multi-Scale)

Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs 论文地址:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs参考源码:https://github.com/TheLegendAli/DeepLab-Context DeepL…

数据库中的Hash索引以及哈希碰撞

hash索引,就是用过一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中 就比如下面的name字段,经过算法的分析,就会对应出一张hash表 如果我的两个name字段计算出来的key相同&a…

vscode eslint配置

1. 全局安装 eslint npm install -g eslint 2. control shift p 输入 settings 打开设置进行配置 3. 添加配置 {"workbench.colorTheme": "One Dark Pro","eslint.debug": true,"eslint.execArgv": null,"eslint.alwaysShow…

多表关联查询

十七、多表关联查询 但是开发中不会使用联合主键,还是只会使用一个主键 多表关联查询: 建表: 交叉连接 …… …… 重复时写清楚是哪个表的,不然会报错: 2、内连接 王妍没有部门,查不出来。此时需要用到外连…

Python 进阶(一):PyCharm 下载、安装和使用

❤️ 博客主页:水滴技术 🌸 订阅专栏:Python 入门核心技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 文章目录 一、下载 PyCharm二、安装 PyCharm三、创建项目四、界面汉化五、实用技巧5.1、使用快捷…

SpringMvc+Mybatis完整项目

0目录 1.SpringmybatisSpringmvc查询功能(记录数) 2.查询所有 3.增删改查(根据id) 4.增加用户注册登录功能 1.SpringmybatisSpringmvc增删改查 新建数据库 创建工程 配置web.xml 配置applicationContext.xml 实体类 My…

24考研数据结构-栈

目录 第三章 栈和队列3.1栈(stack)3.1.1栈的基本概念栈的基本概念知识回顾 3.1.2 栈的顺序存储上溢与下溢栈的顺序存储知识回顾 3.1.3栈的链式存储链栈的基本操作 第三章 栈和队列 3.1栈(stack) 3.1.1栈的基本概念 栈的定义 栈…

主流开源监控系统一览

减少故障有两个层面的意思,一个是做好常态预防,不让故障发生;另一个是如果故障发生,要能尽快止损,减少故障时长。而监控的典型作用,就是帮助我们发现及定位故障,这两个环节对于减少故障时长至关…

Docker挂载目录失败问题解决

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

SpringCloudAlibaba:服务网关之Gateway的cors跨域问题

目录 一:解决问题 二:什么是跨域 三:cors跨域是什么? 一:解决问题 遇到错误: 前端请求时报错 解决: 网关中添加配置文件,注意springboot版本,添加配置。 springboo…

Opencv Win10+Qt+Cmake 开发环境搭建

文章目录 一.Opencv安装二.Qt搭建opencv开发环境 一.Opencv安装 官网下载Opencv安装包 双击下载的软件进行解压 3. 系统环境变量添加 二.Qt搭建opencv开发环境 创建一个新的Qt项目(Non-Qt Project) 打开创建好的项目中的CMakeLists.txt,添加如下代码 # openc…

SpringBoot IOC与AOP(一)

IOC AOP 一、 分层解耦 内聚: 软件中各个功能模块内部的功能联系 耦合: 衡量软件中各个层/模块之间的依赖、关联的程度 软件设计原则:高内聚、低耦合 ​ 控制反转:Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到…

Java 悲观锁 乐观锁

锁可以从不同的角都分类。其中乐观锁和悲观锁是一种分类方式 一、悲观锁、乐观锁定义 悲观锁就是我们常说到的锁。对于悲观锁来说,他总是认为每次访问共享资源时会发生冲突,所以必须每次数据操作加上锁,以保证临界区的程序同一时间只能有一个…