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

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

文章目录

  • 哈工大计算机网络课程局域网详解之:交换机概念
    • 以太网交换机(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地址。

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

在这里插入图片描述

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【SCSS】网格布局中的动画

效果 index.html <!DOCTYPE html> <html><head><title> Document </title><link type"text/css" rel"styleSheet" href"index.css" /></head><body><div class"container">&l…

RabbitMQ 教程 | 第3章 客户端开发向导

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

什么是云原生和 CNCF?

一、CNCF简介 CNCF&#xff1a;全称Cloud Native Computing Foundation&#xff08;云原生计算基金会&#xff09;&#xff0c;成立于 2015 年 12 月 11 日&#xff0c;是一个开源软件基金会&#xff0c;它致力于云原生&#xff08;Cloud Native&#xff09;技术的普及和可持续…

Docker中gitlab以及gitlab-runner的安装与使用

1、本文主要讲述如何使用Docker安装gitlab以及gitlab-runner&#xff0c;并且会讲述gitlab-runner如何使用 2、gitlab部分不需要修改过多的配置即可使用&#xff0c;本文未讲述https配置&#xff0c;如有需求&#xff0c;可自行百度 3、Docker如何安装可以自行百度 一、Docker安…

保姆级教程,Linux服务器docker搭建jenkins持续集成一键部署SpringBoot项目(Gradle)

前言&#xff1a; 在后台项目开发过程从Java延伸到Kotlin开发&#xff0c;从maven pom到gradle&#xff0c;IDEA新项目SpringBoot init框架官方推荐kotlingradle&#xff0c;本章以此为jenkins持续集成做项目部署&#xff0c;服务器为Centos&#xff0c;JDK 17&#xff0c;Spr…

【C++】文件操作(囊括特殊情况:读文件遇到的空格被跳过、“文件只读一次“)

author&#xff1a;&Carlton tag&#xff1a;C topic&#xff1a;【C】文件操作&#xff08;囊括特殊情况&#xff1a;读文件遇到的空格被跳过、“文件只读一次”&#xff09; website&#xff1a;黑马程序员C date&#xff1a;2023年7月31日 目录 文本文件 写文件 源…

如何在面试IT公司时展现出色的表现

在面试IT技术岗位的过程中&#xff0c;展现出色的表现是至关重要的。下面我将分享一些我个人的经验和观察&#xff0c;希望对大家有所帮助。 首先&#xff0c;提前准备是非常重要的。在面试前&#xff0c;你应该充分了解目标公司的业务和技术需求。这样你就能更好地回答面试官…

基于Java+SpringBoot+Vue前后端分离电商项目

晚间lucky为友友们送福利啦~&#x1f381; Tips&#xff1a;有需要毕业设计指导的童鞋一定要认真看哦&#xff0c;文末有彩蛋。 一.项目介绍 该电商项目是一个简单、入门级的电商项目&#xff0c;是基于JavaSpringBootVue前后端分离项目。前端采用两套独立的系统分别完成项目…

手机的python怎么运行文件,python在手机上怎么运行

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;手机上的python怎么运行程序&#xff0c;手机的python怎么运行文件&#xff0c;今天让我们一起来看看吧&#xff01; 1、python程序怎么在手机上运行 python语言应用很广泛&#xff0c;自己也很喜欢使用它&#xff0c;其…

【机器学习】Cost Function for Logistic Regression

Cost Function for Logistic Regression 1. 平方差能否用于逻辑回归&#xff1f;2. 逻辑损失函数loss3. 损失函数cost附录 导入所需的库 import numpy as np %matplotlib widget import matplotlib.pyplot as plt from plt_logistic_loss import plt_logistic_cost, plt_two_…

【自动化剧本】Role角色

目录 一、Roles模块1.1roles的目录结构1.2roles 内各目录含义解释1.3在一个 playbook 中使用 roles 的步骤 二、使用Role编写LNMP剧本2.1 搭建Nginx角色2.2搭建Mysql角色2.3搭建php角色2.4lnmp剧本 一、Roles模块 roles用于层次性、结构化地组织playbook。roles能够根据层次型结…

vue基础-虚拟dom

vue基础-虚拟dom 1、真实dom目标2、虚拟dom目标 1、真实dom目标 在真实的document对象上&#xff0c;渲染到浏览器上显示的标签。 2、虚拟dom目标 本质是保存节点信息、属性和内容的一个JS对象 更新会监听变化的部分 给真实的DOM打补丁

vue 表单form-item模板(编辑,查看,新建)

目录 formatFormData 后端数据格式​编辑 JSON解析和生成 加载&#xff08;请求前&#xff0c;await后&#xff09; formComp formatFormData 后端数据格式 为空的&#xff0c;可以直接不提交/提交null/undefined JSON解析和生成 var str {"name": "…

容斥原理 训练笔记

​ 容斥原理 设S是一个有限集&#xff0c;A_1,A_2…A_n是S的n个子集&#xff0c;则 ∣ S − ⋃ i 1 n A i ∣ ∑ i 0 n ( − 1 ) i ∑ 1 ≤ j 1 < j 2 . . . < j i ≤ n ∣ ⋂ k 1 i A j k ∣ |S-\bigcup_{i1}^{n}A_i|\sum_{i0}^{n}(-1)^i\sum_{1\leq j_1< j_2.…

windows如何上架ios应用到app store

Application Uploader iOS App上架工具是一款非常好用的针对iOS苹果应用程序软件开发的实用编程工具&#xff0c;它的主要作用是帮助用户进行快速的程序应用设计和程序应用调试&#xff0c;节省用户进行软件开发耗费的不必要时间&#xff01; ​ 编辑切换为居中 添加图片注释&…

Minecraft 1.20.x Forge模组开发 05.矿石生成

我们本次尝试在主世界生成模组中自定义的矿石 效果演示 效果演示 效果演示 1.由于1.20的版本出现了深板岩层的矿石,我们要在BlockInit类中声明一个矿石的两种岩层形态: BlockInit.java package com.joy187.re8joymod.init;import java.util.function.Function;import java…

数据可视化(5)热力图及箱型图

1.热力图 #基本热力图 #imshow&#xff08;x&#xff09; #x&#xff0c;数据 x[[1,2],[3,4],[5,6],[7,8],[9,10]] plt.imshow(x) plt.show() #使用热力图分析学生的成绩 dfpd.read_excel(学生成绩表.xlsx) #:表示行号 截取数学到英语的列数 xdf.loc[:,"数学":英语].…

操作系统专栏2-文件系统from小林coding

文件系统 文件系统构成虚拟文件系统文件的使用文件的存储连续存储非连续空间存放方式链表方式索引方式 Linux文件的实现方式 空闲分区的管理文件系统结构目录的存储软链接和硬链接 文件系统构成 Linux的设计哲学有一点很重要:一切皆文件,不仅仅是普通的文件和目录,就连块设备,…

六、代理模式

文章目录 一、代理模式1、代理模式的好处和缺点1.1 代理模式理解加深 一、代理模式 为什么要学习代理模式&#xff1f; 代理模式是Spring AOP 以及 Spring MVC 的底层&#xff01;&#xff01;并且还是 JAVA 的23种设计模式之一&#xff01;&#xff01; 代理模式的分类&#…

C++ | 哈希表的实现与unordered_set/unordered_map的封装

目录 前言 一、哈希 1、哈希的概念 2、哈希函数 &#xff08;1&#xff09;直接定址法 &#xff08;2&#xff09;除留余数法 &#xff08;3&#xff09;平方取中法&#xff08;了解&#xff09; &#xff08;4&#xff09;随机数法&#xff08;了解&#xff09; 3、哈…