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

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

文章目录

  • 哈工大计算机网络课程局域网详解之:交换机概念
    • 以太网交换机(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.mzph.cn/news/18288.shtml

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

相关文章

iPhone 7透明屏的显示效果怎么样?

iPhone 7是苹果公司于2016年推出的一款智能手机,它采用了4.7英寸的Retina HD显示屏,分辨率为1334x750像素。 虽然iPhone 7的屏幕并不是透明的,但是苹果公司在设计上采用了一些技术,使得用户在使用iPhone 7时可以有一种透明的感觉…

【STM32零基础入门教程03】GPIO输入输出之GPIO框图分析

本章节主要讲解点亮LED的基本原理,以及GPIO框图的讲解。 如何点亮LED(输出) 首先我们查看原理图,观察电路图中LED的连接情况,如下图可以看出我们的板子中LED一端通过限流电阻连接的PB0另一端连接的是高电平VCC&#xf…

排序进行曲-v2.0

小程一言 这篇文章是在排序进行曲1.0之后的续讲, 0之后的续讲,英语在上一篇讲的排序的基本概念与分类0之后的续讲, 英语在上一篇讲的排序的基本概念与分类这片主要是对0之后的续讲,英语在上一篇讲的排序的基本概念与分类这 篇主要是对几个简单的排序进行细致的分析…

JavaData:JDK8之前传统的日期和时间

Data JDK8之前传统的日期和时间 //目标:掌握Date日期类的使用。 //1、创建一个Date的对象:代表系统当前时间信息的。 Date d new Date(); system.out.println(d);//2、拿到时间毫秒值。 long time d.getTime(); system.out.println(time);//3、把时间毫秒值转换成日期对象:2…

企业电子招投标采购系统源码之首页设计

功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&…

Unity-缓存池

一、.基础缓存池实现 继承的Singleton脚本为 public class Singleton<T> where T : new() {private static T _instance;public static T GetIstance(){if (_instance null)_instance new T();return _instance;} } 1.PoolManager using System.Collections; using S…

C语言手撕单链表

一、链表的概念 链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;也就是内存存储不是像顺序表那么连续存储&#xff0c;而是以结点的形式一块一块存储在堆上的&#xff08;用动态内存开辟&#xff09;。 既然在内存上不是连续存储&#xff0c;那我们如何将这一…

Qt/C++音视频开发50-不同ffmpeg版本之间的差异处理

一、前言 ffmpeg的版本众多&#xff0c;从2010年开始计算的项目的话&#xff0c;基本上还在使用的有ffmpeg2/3/4/5/6&#xff0c;最近几年版本彪的比较厉害&#xff0c;直接4/5/6&#xff0c;大版本之间接口有一些变化&#xff0c;特别是一些废弃接口被彻底删除了&#xff0c;…

Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查

Django学习记录&#xff1a;使用ORM操作MySQL数据库并完成数据的增删改查 数据库操作 MySQL数据库pymysql Django开发操作数据库更简单&#xff0c;内部提供了ORM框架。 安装第三方模块 pip install mysqlclientORM可以做的事&#xff1a; 1、创建、修改、删除数据库中的…

【腾讯云 Cloud studio 实战训练营】搭建Next框架博客——抛开电脑性能在云端编程(沉浸式体验)

文章目录 ⭐前言⭐进入cloud studio工作区指引&#x1f496; 注册coding账号&#x1f496; 选择cloud studio&#x1f496; cloud studio选择next.js&#x1f496; 安装react的ui框架&#xff08;tDesign&#xff09;&#x1f496; 安装axios&#x1f496; 代理请求跨域&#x…

动态爬虫IP与反爬虫技术的博弈:揭秘真实反爬虫事例引发的思考

作为一名长期从事爬虫行业动态IP解决方案服务商&#xff0c;我们深知动态IP代理在抗击反爬虫方面的重要性。在当今数字化时代&#xff0c;互联网数据的爆炸性增长让数据采集变得前所未有的重要。然而&#xff0c;随着数据价值的不断提升&#xff0c;反爬虫技术也日益增强&#…

分库分表之基于Shardingjdbc+docker+mysql主从架构实现读写分离(一)

说明&#xff1a;请先自行安装好docker再来看本篇文章&#xff0c;本篇文章主要实现通过使用docker部署mysql实现读写分离&#xff0c;并连接数据库测试。第二篇将实现使用Shardingjdbc实现springboot的读写分离实现。 基于Docker去创建Mysql的主从架构 #创建主从数据库文件夹…

版本控制和团队协作:前端工程化的关键要素

文章目录 版本控制系统介绍&#xff08;如 Git&#xff09;1. 分布式系统2. 分支管理3. 版本控制4. 快速和高效5. 社区和生态系统 分支管理和团队协作流程1. 主分支2. 功能分支3. 开发工作4. 合并到develop5. 发布准备6. 发布 持续集成与持续部署实践持续集成&#xff08;CI&am…

【前端知识】React 基础巩固(三十七)——自定义connect高阶组件

React 基础巩固(三十七)——自定义connect高阶组件 一、手撸一个自定义connect高阶组件 import { PureComponent } from "react"; import store from "../store";/*** connect的参数&#xff1a;* 参数一&#xff1a; 函数* 参数二&#xff1a; 函数* 返…

lc1074.元素和为目标值的子矩阵数量

创建二维前缀和数组 两个for循环&#xff0c;外循环表示子矩阵的左上角&#xff08;x1,y1&#xff09;&#xff0c;内循环表示子矩阵的右下角&#xff08;x2,y2&#xff09; 两个for循环遍历&#xff0c;计算子矩阵的元素总和 四个变量&#xff0c;暴力破解的时间复杂度为O(…

ChatGPT安全技术

前言 近期&#xff0c;Twitter 博主 lauriewired 声称他发现了一种新的 ChatGPT"越狱"技术&#xff0c;可以绕过 OpenAI 的审查过滤系统&#xff0c;让 ChatGPT 干坏事&#xff0c;如生成勒索软件、键盘记录器等恶意软件。 他利用了人脑的一种"Typoglycemia&q…

Vue.js2+Cesium 四、模型对比

Vue.js2Cesium 四、模型对比 Cesium 版本 1.103.0&#xff0c;低版本 Cesium 不支持 Compare 对比功能。 Demo 同一区域的两套模型&#xff0c;实现对比功能 <template><div style"width: 100%; height: 100%;"><divid"cesium-container"…

MTK联发科安卓核心板MT8385(Genio 500)规格参数资料_性能介绍

简介 MT8385安卓核心板 是一个高度集成且功能强大的物联网平台&#xff0c;具有以下主要特性&#xff1a; l 四核 Arm Cortex-A73 处理器 l 四核Arm Cortex-A53处理器 l Arm Mali™-G72 MP3 3D 图形加速器 (GPU)&#xff0c;带有 Vulkan 1.0、OpenGL ES 3.2 和 OpenCL™ 2.x …

Linux中的file命令:查看文件类型

2023年8月1日&#xff0c;周二上午 目录 简要说明使用方法MIME类型举例说明 简要说明 在Linux中&#xff0c;file命令用于识别文件类型。 file命令可以识别各种类型的文件&#xff0c;包括普通文件、目录、符号链接、设备文件、压缩文件、二进制可执行文件等。 它是一个非常…

云原生势不可挡,如何跳离云原生深水区?

云原生是云计算领域一大热词&#xff0c;伴随云原生概念而来的是数字产业迎来井喷、数字变革来临、数字化得以破局以及新一波的技术红利等等。云原生即“云”原生&#xff0c;顾名思义是让“应用”最大程度地利用云的能力&#xff0c;发挥云价值的最佳路径。具体来说&#xff0…