史上最通俗的集线器、交换机、路由器功能原理入门

1、前言

本文旨在简单地说明集线器、交换机与路由器的区别,因而忽略了很多细节,三者实际的发展过程和工作原理并非文中所写的这么简单。如果你看完本文能大概了解到三者的异同,本文的目的就达到了。

2、帝国时代


我相信我们都玩过一款特别火的游戏:帝国时代。小时候想要玩帝国时代,需要到软件城购买盗版光盘安装,大概3块钱一张左右的样子,当时已经觉得很便宜了,谁想到现在有了网络之后是免费。

小A是一个帝国时代大神,他打通了游戏的所有关卡,可以一个人单挑8个疯狂的电脑玩家。渐渐地他觉得无聊了,想要找小伙伴一起PK。

但是两个电脑需要互联才行,如何实现两台设备的互联呢?

小A很聪明,他发明了一个类似于USB口一样的可以传输数据的端口,他将其命名为网口。小A通过一根网线将自己的电脑与小B的网口相连,实现了两台电脑间的互连(如下图)。

640?wx_fmt=jpeg

3、集线器(Hub)


两个小伙伴很开心,联机玩了起来,这时被路过的小C看见了,小C也要加入进来。

但是我们知道,每台电脑只有一个网口,无法实现三台电脑的相互连接,那要要怎么办呢?

640?wx_fmt=jpeg

这时候小B出了一个主意:咱们再找一台计算机,给他多设计几个网口,我们每个人都连到这台计算机的网口上,不也实现咱们哥几个之间的互连了吗。

说干就干,于是他们设计出了一款微型计算机,他本身具备多个网口,专门实现多台计算机的互联作用,这个微型计算机就是集线器(HUB)。

顾名思义,集线器起到了一个将网线集结起来的作用,实现最初级的网络互通。

集线器是通过网线直接传送数据的,我们说他工作在物理层(如下图所示)。

640?wx_fmt=jpeg

4、交换机


有了集线器后,越来越多的小伙伴加入到游戏中,小D、小E等人都慕名而来。

然而集线器有一个问题,由于和每台设备相连,他不能分辨出具体信息是发送给谁的,只能广泛地广播出去。

例如小A本来想问小C:你吃了吗?结果小B,小D和小E等所有连接在集线器上的用户都收到了这一信息。 

由于处于同一网络,小A说话时其他人不能发言,否则信息间会产生碰撞,引发错误,对这种情况,我们称为各设备处于同一冲突域内。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

这样的设备用户体验极差,于是小伙伴们一起讨论改进措施。

这时聪明的小D发话了:我们给这台设备加入一个指令,让他可以根据网口名称自动寻址传输数据。

比如我把小A的网口命名为macA,将小C的命名为macC,这时如果小A想要将数据传给小C,则设备会根据网口名称macA和macC自动将资料从A的电脑传送到C的电脑中,而不让小B、小D和小E收到。

补充说明: 这里的macA, macB指的就是MAC地址,相当于一个人的身份证,独一无二。

也就是说,这台设备解决了冲突的问题,实现了任意两台电脑间的互联,大大地提升了网络间的传输速度,我们把它叫做交换机

由于交换机是根据网口地址传送信息,比网线直接传送多了一个步骤,我们也说交换机工作在数据链路层(如下图)。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

这回小伙伴们高兴了,他们愉快地玩耍起来。

5、路由器


渐渐地,他们在当地有了名气,吸引了越来越多的小伙伴加入到他们的队伍中。有一天,一个外村的小伙突然找上门来,希望能和他们一起互联,实现跨村间的网络对战。

小A说可以呀,于是他们找了一根超长的网线将两个村落的交换机连在了一起。结果发现一件奇怪的事:两个村落间竟然不能相互通信。

怎么回事?原来那边的电脑和他们用的不是一套操作系统,这导致信息间的传送形式的不匹配。在这期间,还有其他村落的人也来找过小A,可是小A发现,每个村子之间用的操作系统都不一样。

这可咋办呐?难道以后只能各自村子玩各自的了吗?为了解决这一问题,各村的小伙伴们坐在一起组织了一场会议,最终得出了一套解决方案:采用同样的信息传送形式(像不像秦始皇统一度量衡?)。

那如何实现呢?小伙伴们规定,不同的村子间先在各自的操作系统上加上一套相同的协议。不同村落通信时,信息经协议加工成统一形式,再经由一个特殊的设备传送出去。这个设备就叫做路由器。

在这套协议中,每个机器都被赋予了一个IP地址,相当于一个门牌号一样。路由器通过IP地址寻址,我们说它工作在计算机的网络层。

这样,经由如此的一系列改装,小A终于带领村民们实现了整个乡镇的通信。随着越来越多的城里人也加入小A的协议,小A带领村民逐步实现了全市、全国乃至全世界的通信。这一套协议便是TCP/IP协议簇,互联网也便这样形成了

640?wx_fmt=jpeg

然而,即便如今全网络已遍布了全世界,在小A和村里的小伙伴对战帝国时代的时候,也仍然用着交换机。只有和外面更大的世界交流的时候才用到路由器。

其实上图只是为了帮助您更好地理解路由器,一个真实的网络拓扑中,路由器、交换机、集线器是一起分工合作的,正如下图所示:

640?wx_fmt=jpeg

(如上图所示:Router即路由器、Switch即交换机、Hub即集线器)


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

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

相关文章

泛型(Generic)

为什么要有泛型? 1.解决元素存储的安全性问题 2.解决获取数据元素时,需要类型强转的问题 服用前: 服用后: 泛型,JDK1.5新加入的,解决数据类型的安全性问题,其主要原理是在类声明时通过一个标识表…

官宣!DevExpress Blazor UI组件,支持全新的.NET 8渲染模式

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生Blazor UI组件(包括Pivot Grid、调度程序、图表、数据编辑器和报表等)。 .NET 8为Blazor引入了令人兴奋的重…

linux内核源码树

linux内核源码树扫盲分析 sudo apt-get install tree //下载tree tree //输入指令(该指令可以检查第三方工具包里的内容是否完整)可以看到如图的树状结构: linux内核源码: 为什么内核大约1.3w个c文件,1100w行代码? linux是一个开…

POJ 2676/2918 数独(dfs)

思路&#xff1a;记录每行每列每一个宫已经出现的数字就可以。数据比較弱 另外POJ 3074 3076 必须用剪枝策略。但实现较麻烦&#xff0c;还是以后学了DLX再来做吧 //Accepted 160K 0MS #include<cstdio> #include<iostream> #include<algorithm> #include&l…

负载均衡很难?看完这篇全懂了

来自&#xff1a;金钟路上小码工链接&#xff1a;https://www.cnblogs.com/danbing/p/7459224.html一、什么是负载均衡&#xff1f;互联网早期&#xff0c;业务流量比较小并且业务逻辑比较简单&#xff0c;单台服务器便可以满足基本的需求&#xff1b;但随着互联网的发展&#…

配置树莓派linux的内核和编译并将镜像拷贝至树莓派

驱动代码的编写需要一个提前编译好的内核&#xff0c;编译内核就必须配置&#xff0c;配置的最终目标会生成.config文件&#xff0c;该文件指导makefile去把有用的东西组织成内核。 如何生成.config文件&#xff1a; 第一种方式&#xff1a; 厂家配linux内核源码&#xff0c;比…

h5 与原生 app 交互的原理

作者&#xff1a;senntyousegmentfault.com/a/1190000016759517现在移动端 web 应用&#xff0c;很多时候都需要与原生 app 进行交互、沟通&#xff08;运行在 webview中&#xff09;&#xff0c;比如微信的 jssdk&#xff0c;通过 window.wx 对象调用一些原生 app 的功能。所以…

(原)直方图的相似性度量

转载请注明出处&#xff1a; http://www.cnblogs.com/darkknightzh/p/5147982.html 对于两直方图 $S\left\{ {{s}_{1}},\cdots {{s}_{n}} \right\}$ 及 $M\left\{ {{m}_{1}},\cdots {{m}_{n}} \right\}$&#xff0c;n为直方图维数&#xff08;如255&#xff09;&#xff0c;这两…

【ROS问题】rqt_plot运行报错

本人Linux版本&#xff1a;Ubuntu 18.04 LTS ROS版本&#xff1a;Melodic 方案一&#xff1a; 你看那个报错&#xff0c;全是Matplotlib的报错&#xff0c;是这个东西版本不够高&#xff0c;重新安装就好啦。 python -m pip install -U pip python -m pip install -U matp…

BCP使用笔记整理

一、BCP 简介大容量复制程序实用工具 (bcp) 可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据。 使用 bcp 实用工具可以将大量新行导入 SQL Server 表&#xff0c;或将表数据导出到数据文件。 除非与 queryout 选项一起使用&#xff0c;否则使用该实…

怎样基于谷歌地图的Server缓存公布Image Service服务

怎样基于谷歌地图的Server缓存公布Image Service服务第一步&#xff1a;下载地图数据下载安装水经注万能地图下载器&#xff0c;启动时仅仅选择电子.谷歌&#xff08;这里能够依据自己的须要选择&#xff09;。例如以下图所看到的。找到成都后框选下载成都区域&#xff0c;例如…

ROS文件系统介绍

预备工作 本教程中我们将会用到ros-tutorials程序包&#xff0c;请先安装&#xff1a; sudo apt-get install ros-<distro>-ros-tutorials快速了解文件系统概念 Packages: 软件包&#xff0c;是ROS应用程序代码的组织单元&#xff0c;每个软件包都可以包含程序库、可执…

接软件开发项目,你需要知道这些!

作为一个程序员&#xff0c;跟客户交流是最困难的事情了&#xff0c;所以在上路之前&#xff0c;复习一下这两年遇到的奇怪的客户言论&#xff0c;以便以后更好地跟客户交流。1、不就是做个网站&#xff08;或者别的&#xff09;么&#xff1f;为什么这么贵&#xff1f;一定耐心…

整理的一些比较基础的面试知识点

1、面向对象的三大特性或其具体体现在哪 2、页面间传值方式 3、session cookie原理及区别 4、hasstable&#xff0c;dictionary&#xff0c;List &#xff0c;collection 5、类和抽象类&#xff0c;类和接口&#xff0c;接口和抽象类区别及适合场景 6、Get和Post比较优缺点或区…

五种类型的程序员,你属于哪一种?

在我的编程生涯中,我碰到过很多奇奇怪怪的对手和同盟。我把这些编码战士们分成五类&#xff0c;有些人是你队伍中的好伙伴&#xff0c;有些人则是捣蛋者&#xff0c;让你的每一个计划都完不成。不管怎么说&#xff0c;他们在软件开发的诸神殿上都占有一席之地。如果你的团队中没…

创建ROS程序包

一个catkin程序包由什么组成? 一个程序包要想称为catkin程序包必须符合以下要求&#xff1a; 该程序包必须包含catkin compliant package.xml文件这个package.xml文件提供有关程序包的元信息。 程序包必须包含一个catkin 版本的CMakeLists.txt文件&#xff0c;而Catkin meta…

一些有用的js插件

getfuelux.com 一系列插件合集 Ion.RangeSlider 超级牛的范围选择控件 Ion.CheckRadio Ion.Tabs Ion.Calendar Ion.ImageSlider Ion.Zoom www.ngwidgets.com Advanced UI Widgets for AngularJS http://www.jq22.com/ jQuery 插件库 http://jvectormap.com/ 地图插件 X-…

C# FTP操作类库

class FTP_Class{string ftpServerIP;string ftpUserID;string ftpPassword;FtpWebRequest reqFTP; #region 连接/// <summary>/// 连接FtpWebRequest/// </summary>/// <param name"path"></param>private void Connect(String path)/…

安装并配置ROS环境

参考该网址内容&#xff1a;http://wiki.ros.org/cn/ROS/Tutorials/InstallingandConfiguringROSEnvironment

Cropper – 简单的 jQuery 图片裁剪插件

Cropper 是一个简单的 jQuery 图像裁剪插件。它支持选项&#xff0c;方法&#xff0c;事件&#xff0c;触摸&#xff08;移动&#xff09;&#xff0c;缩放&#xff0c;旋转。输出的裁剪数据基于原始图像大小&#xff0c;这样你就可以用它们来直接裁剪图像。 如果你尝试裁剪跨域…