集线器、网桥、交换机

news2024/11/13 9:59:16

一.集线器

集线器(HUB),它是工作在物理层的设备, 由于它只是工作在物理层的设备,所以它并不关心也不可能关心OSI上面几层所涉及的,它的工作机制流程是:从一个端口接收到数据包时,会在其他端口把这个包转发一次,因为它不知道也不可能知道这个包是发给谁的(物理层设备只关心电压这些物理概念),它也只能对所有人广播(注释①),让他们自己处理了。

注释①:这里和下文提到的 广播该词的意思和ARP请求时的广播有些不同,这里的广播意思是:使用物理层 转发设备,如HUB,导致的广播,可以说这个广播是被逼的,因为设备的问题!是设备转发包引起的广播!

而ARP请求的广播是自己要求的,主动的,因为ARP请求包的目标地址I是255.255.255.255,但ARP请求的广 播涉及IP层的知识,不在这篇文章讨论的范围,所以这里提到的广播,除非特别说明,否则都是第一个意思,也就说是"因设备转发数据包引起的广播" 。

这样一来会有不少问题,你发的数据其他人都收到了,私隐这种东西是不存在的!别人可以随便监听你信息!所以会话劫持在那个年代相当容易。


另外一个比较严重的问题是,如果一个大型的局域网,比如有500台机器,全部用HUB连接的,后果会怎么样呢??


相当慢,网络的效率极差!为什么?


如果500台机器都发一个包,那就是说每台机器,都需要接收差不多499个无用包,并且如果是需要回应的话,无用的数据包会充斥着整个的局域网,这就是传说中的广播风暴!


为了减少广播风暴,网桥产生了!


在介绍网桥之前,还想简单介绍另一个物理层的设备:“中继器”。这种设备的作用是把物理层传输的信号放大,由于长距离的传输,信号会有一定的损耗的,这种设备主要解决的就是这个问题。


它和HUB的区别是:HUB主要是为了在物理层上转发数据的,所以它不关心电压值的大小,也不会放大物理信号;而中继器它的作用就是为了放大信号用的。

二.网桥


网桥又称桥接器,英文名Network Bridge,数据链路层设备。它也是转发数据包的设备,但和HUB不一样的是,它工作在数据链路层,HUB只能看懂物理层上的东西(比如一段物理信号),网桥却能看懂一些帧的信息(在链路层上,把上面传下来的数据封装后,封装好了的数据就是帧,但这里我用“数据包”这样的泛指去代替“帧”这个专业术语)。


在以太网构造的局域网上,最终的寻址是以数据链路层的MAC地址作为标识的(就是用MAC地址可以在局域网上找到一台唯一的机器),网桥能从发来的数据包中提取MAC信息,并且根据MAC信息对数据包进行有目的的转发,而不采用广播的方式,这样就能减少广播风暴的出现,提升整个网络的效率。

三.交换机

交换机Switch,数据链路层设备,作用是转发数据包。和网桥一样它也是通过识别帧中的MAC地址,然后对特定的端口进行转发的。

四.网桥和交换机的工作原理及区别


回答网桥和交换机区别之前,我们先一起看两幅图(这是从《计算机网络(第四版)》第四章截下来的:>):


1.网桥的连接模式:(红点处为HUB)

  1. 交换机连接模式:

从图中可以看到,网桥只有2个输入/出端口,而交换机有8个。


一开始的时候,由于硬件水平不是很发达,人们为了提高局域网效率,减少广播风暴的出现,他们生产了网桥,然后他们把一个局域网一分为2,中间用网桥连接,这样A发给BCD的数据就不会再广播到EFGH了,只有从A发到EFGH的数据包才能通过网桥,到达另外一个子网。


这样一来,非必要的传输减少了,整个网络的效率也随之提高可不少!随着硬件发展,出现了4个、8个端口的链路层设备,这就是交换机,由于交换机可以使得网络更安全,网络效率更高,交换机渐渐替代了HUB,成为组建局域网的重要设备。


所以说,网桥和交换机,基本上是一样的,但细看还是会有些不一样。


3.网桥的工作原理:

上图是用一个网桥连接的两个网络,网桥的A端口连接A子网,B端口连接B子网。为什么网桥知道哪些数据包该转发,哪些包不该转发呢?


那是因为它有两个表A和B,当有数据包进入端口A时,网桥从数据包中提取出源MAC地址和目的MAC地址。


一开始的时候,表A和表B都是空的,没有一条记录,这时,网桥会把数据包转发给B网络,并且在表A中增加一条MAC地址,说明这个MAC地址的机器是A子网的。同理,当B子网发送数据包到B端口时,网桥也会记录源MAC地址到B表。


当网桥工作一段时候后,表A基本上记录了A子网所有的机器的MAC地址,表B同理,当再有一个数据包从A子网发送给网桥时,网桥会先看看数据包的目的MAC地址是属于A子网还是B子网的,如果从A表中找到对应则抛弃该包;如果不是,则转发给B子网,然后检查源MAC地址,是否在表中已经存在;如果不存在,在表A中增加一条记录。


为什么需要两张表呢,一张表不行么??


刚才把表一分为二是为了便于理解,实际上,真正的网桥里面存的应该是一张表(当然有可能为了提速,或者其他原因,它也可能把信息存为多张表,这个得看它怎么实现了),如果是一张信息表,表里记录的应该是:MAC-PortNum。


4.交换机有些许不同,如图:


交换机也有一张MAC-PORT对应表(这张表的学名为:CAM)。和网桥不一样的是,网桥的表是一对多的(一个端口号对多个MAC地址),但交换机的CAM表却是一对一的。


如果一个端口有新的MAC地址,它不会新增MAC-PORT记录,而是修改原有的记录。


比如:现在交换机记录表里已经有一项:MAC1-Port1,如果此刻端口1又来了一个数据包,里面的源MAC地址是MAC2,此时,交换机会刷新交换机记录表:MAC1-Port1记录被修改为MAC2-Port1,因为交换机认为是端口1的计算机MAC地址变了,如果端口1连接的一台物理机器,MAC一般是不会变的,如果连接的是另外一个交换机,那这个端口的记录会变化得比较频繁(如上图的Port12,它是对外的接口,与一个局域网连接)。


另外,如果CAM表中没有找到和数据包的目的MAC地址对应的记录,交换机会对此数据包进行广播,发给本交换机的每一个端口。


网桥和交换机除了用CAM表指导数据包转发这点和HUB不一样外,网桥和交换机还有一个特点:缓存!


对,网桥和交换机都有一定量的缓存,因为网桥和交换机转发数据包需要一些额外的操作,所以可能会占用一些时间,为了避免出现因来不及转发数据,导致大量数据丢失的情况,网桥和交换机就出现了缓存。


当然,缓存不是万能的,当网桥或交换机处理不及并且缓存用完了,以后再来的数据还是会丢失的。


还一个网桥需要缓存的原因是:桥接两个传输速率不同的局域网,比如:802.3的传输速率说10mb/s,但实际上并不是真的10Mb/s,而 802.4(几乎)确实为10Mb/s,但两个局域网桥接时候必须是速率一样的,否则会有包丢失,而缓存也正好可以为不同速率网络连接时所使用。


这里需要对比一下网桥和交换机的缓存,一般来说,网桥的缓存量是大于交换机的缓存量,因为网桥天生是为了连接两个网络的,两个网络桥接时所要处理的数据量会比一般的交换机需要处理的数据量要多,所以网桥的缓存也一般要比交换机大一点。


值得注意的一些问题:


1). 网桥需要软件辅助?


回答这个问题,首先要看看原始的网桥,《计算机网络(第四版)》里有一段话是这样的:传统上,网桥往往包含一个CPU,"转发-存储"由软件来实现。噢,以前的网桥是这样的,但现在由于硬件水平的提升,网桥,交换机都包含了特殊的,用于转发的集成电路部分,现在的网桥和交换机都可以不需要软件辅助了!顺带说一句,模拟网桥功能的软件现在也是有的。


2). 网桥用于连接不同的网段?


首先这里要理解什么是网段,它涉及到子网掩码的等等一系列的东西。


这里我觉得要明确的是,网桥不是用来连接不同网段的!!!


不同网段之间通信,需要网关的帮助,它一般是路由器这类网络层的设备。网桥或交换机是链路层设备,网段这个是和IP相关的概念,属于网络层。


网桥和交换机根本无能力去处理网络层的东西!如果非要说用网桥和交换机去连接两个不同网段的网络不是不行,只是没有作用而已,因为不同网段机器的始终是不能互访问,网桥不能做网关!


上面我已经说了网桥的由来,它是为了减少HUB的广播,提高局域网网络性能出现的,网桥连接的仅仅是两个子局域网,并且这里说的子局域网必须是同构的(同构的意思是:如果是以太网,那么网桥连接的两个子网都必须是以太网,不能一个是以太网一个是令牌网)。


我一直认为:以太网的特性导致了网桥的出现,因为广播是以太网的重要特性,其他构造的网络不一定有,为了优化以太网的性能,网桥出现了。所以其他构造网络似乎也不需要使用网桥这个东东!


其实后来带着这个想法继续看无线网络的东西,发现这个想法应该是错误的,网桥的天性应该是:连接两个同构网络。而在以太网上,刚好HUB可以作为连接两个网络的设备,但是由于HUB的各种弊端,人们研发了工作在链路层上的网桥,它除了连接两个网络的功能外,还有优化网络性能的功能。而在其他构造的网络也有网桥这个设备,但它的功能可能是仅仅连接两个网络,而没有了优化网络性能的功能(或者根据网络特性,它又有了新的功能)。


这里再次总结一下网桥和交换机:


网桥和交换机用户分割冲突域,就是网桥和交换机可以较少被逼的广播(hub导致的),但不能分割广播域。不严格地说,交换机可以看作网桥的高度集成。


①冲突域:总的来说,冲突域就是连接在同一导线上的所有工作站的集合,或者说是同一物理网段上所有节点的集合,或以太网上竞争同一带宽的节点集合。HUB这种设备不能分割冲突域。


②广播域:网络中能接收任一设备发出的广播帧的所有设备的集合。

  • HUB 所有端口都在同一个广播域,冲突域内。

  • Switch所有端口都在同一个广播域内,而每一个端口就是一个冲突域。

  • Router的每个端口属于不同的广播域。

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

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

相关文章

STL基础

目录 一、STL的诞生 二、STL基本概念 三、STL六大组件 大体分为六大组件:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器 四、容器、算法与迭代器的认识 容器container:存放数据地方 算法algorithm:解…

中级软件设计师备考---软件工程2

目录 软件测试分类和要求测试用例设计测试阶段McCabe复杂度软件维护软件过程改进---CMMICMM英文版CMM中文版CMMI 软件测试分类和要求 分类: 灰盒测试:多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。…

MySQL:插入,更新与删除、索引

一、学习目标 掌握如何向表中插入数据掌握更新数据的方法熟悉如何删除数据掌握对数据表基本操作的方法和技巧了解什么是索引掌握创建索引的方法和技巧熟悉如何删除索引熟悉掌握索引的常见问题 二、实验内容 创建表books,对数据表进行插入、更新和删除操作&#x…

SkyWalking集成Logback的使用

SkyWalking集成Logback的使用 将微服务的日志框架去集成SkyWalking,我们希望在我们微服务中日志中,能够记录当前调用链路的id,然后我们再根据这个id去SkyWalking的前端界面中进行搜索找到对应的调用链路记录。 因为springboot默认实现的日志…

Ansible 的脚本 之playbook 剧本

目录 第一章.playbooks的组成 1.1playbooks的组成部分 1.2运行playbook 1.3定义、引用变量 1.4.指定远程主机sudo切换用户 1.6.when条件判断 1.7.迭代 第二章.Templates模块 2.1.准备模板 2.2.修改主机清单文件 2.3.编写 playbook 第三章.tags 模块 3.1.yaml文件编…

操作系统原理 —— 线程的概念、实现方式、多线程模型(十)

什么是线程,为什么要引入线程? 有的进程可能需要 “同时” 做很多事情,而传统的进程只能串行的执行一系列的程序,为此,引入了 “线程” ,来增加并发度。 可以把线程理解为 轻量级进程,线程是可…

剧本杀闯关小程序app软件

剧本杀闯关小程序软件是一种结合了角色扮演和解谜游戏元素的互动娱乐产品,目前在市场上越来越受欢迎。以下是剧本杀闯关小程序软件市场行业情况的一些特点: 市场需求增长:随着人们对于线上互动娱乐的需求增加,剧本杀闯关小程序…

maven install的时候报Unable to find main class

目录 问题描述解决办法解决方案一:添加一个主函数解决方案二:将不是web工程的设置跳过解决方案三:打包插件的作用本质上就是将当前项目所依赖的jar打包到一块,这样jar包就可以运行了,我们完全可以把parent的pom.xml的b…

智慧农业物联网平台建设方案

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。 智慧农业物联网系统组网图 2.2.1 智能温室组网说明 该组网图演示的为小面积示范区,每个连栋温室为 1个灌溉区域,1个子系统,该子系统完成…

学习Typescript(第一弹)

Typescript的基础类型 Boolean类型 let bool: boolean true;Number类型 let num: number 222;String类型 let str: string 码上coding;数组Array类型 对数组类型的定义有两种方式: let arr1: number[] [1,2,3]; let arr2: Array<number | string> [1,2,码上co…

Android APK 反编译后重新打包并签名

APKTool&#xff1a; Apktool 是一个逆向android非常有用的工具&#xff0c;可以用来反编译apk文件&#xff0c;并且能在修改部分资源文件后&#xff0c;重新打包成一个新的apk。 下载连接&#xff1a;http://ibotpeaches.github.io/Apktool/install/ 下载之后文件夹非常清爽&…

电力节能设备远程监控系统解决方案

电力节能设备远程监控系统解决方案 一、项目背景 随着城市化进程的发展&#xff0c;对电力设备安全、可靠、经济运行的要求越来越高&#xff0c;由于没有统一专业的用电现代化管理规划&#xff0c;电力设备管理混乱、数据采集不方便、运行智能化程度低&#xff0c;需要实时掌…

复合查询--- MySQL总结(三)

复合查询 文章目录 复合查询多表查询自连接子查询单行查询多行查询多列子查询合并查询 多表查询 前面讲述的关于进行一个表的简单查询和关于时间函数的相关问题&#xff0c;下面要进行复合查询的相关内容。 这里要使用卡笛尔集的概率让两个表融合成为一个表。 需要使用相应的字…

vue项目为例解决element ui 时间选择器 picker使用样式穿透不起作用问题

今天在开发中 需要修改时间选择器弹出的这个组件的样式 但这个东西比较坑爹 首先 不能影响其他组件 就是其他组件用了时间选择器 不能受到我们写的样式的影响 那么 就只好穿透了 但你会发现 这东西是作用与body下的 就很坑 穿透我试了挺久的 不起作用 但官方文档有提供给我们一…

centos7 配置 sftp 服务器并通过 java 上传文件

虚拟机配置 1、创建sftp用户组 groupadd sftp2、添加用户 useradd -g sftp mysftp3、设置用户密码 passwd mysftp4、创建文件根目录 mkdir /app/data5、将该目录设置到用户上 usermod -d /app/data mysftp6、修改配置文件 vim /etc/ssh/sshd_config7、找到 Subsystem &am…

算法记录 | Day50 动态规划

123.买卖股票的最佳时机III 思路&#xff1a; 1.确定dp数组以及下标的含义 最多可完成两笔交易意味着总共有三种情况&#xff1a;买卖一次&#xff0c;买卖两次&#xff0c;不买卖。 具体到每一天结束总共有 5 种状态&#xff1a; 未进行买卖状态&#xff1b;第一次买入状…

手动封装一个日期处理工具类,几乎覆盖了所有的时间操作(收藏)

工具类包含以下方法&#xff1a; - stringToDate: 将字符串转换为java.util.Date类型- dateToString: 将java.util.Date类型转换为字符串- stringToLocalDateTime: 将字符串转换为LocalDateTime类型- localDateTimeToString: 将LocalDateTime类型转换为字符串- dateToLocalDat…

01-Java 核心基础

Java核心基础 Java 开发基础知识Java 语言概述安装 Java 开发环境 开发体验Hello World 程序Java 注释 Java 开发基础知识 Java 语言概述 Java 是 SUN&#xff08;斯坦福大学网络公司&#xff09;1995 年推出的一门高级编程语言&#xff0c;它是一种面向 Internet 的编程语言&…

医院检验信息管理系统源码(云LIS系统源码)JQuery、EasyUI

云LIS系统是一种医疗实验室信息管理系统&#xff0c;提供全面的实验室信息管理解决方案。它的主要功能包括样本管理、检测流程管理、报告管理、质量控制、数据分析和仪器管理等。 云LIS源码技术说明&#xff1a; 技术架构&#xff1a;Asp.NET CORE 3.1 MVC SQLserver Redis等…

【虹科案例】使用 TCP 分析测量握手时间

如何使用 Allegro Network 万用表的 TCP 分析确定握手时间 握手需要多少时间&#xff1f; 在图 1 中&#xff0c;您可以在虹科Allegro 网络万用表的 TCP 统计数据中看到过去 10 分钟的客户端握手次数。在这里&#xff0c;您可以清楚地看到在指定时间段内有延长的响应时间。但…