前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >交换机如何碾压集线器?

交换机如何碾压集线器?

作者头像
用户1260737
发布2019-08-02 10:11:34
7550
发布2019-08-02 10:11:34
举报
文章被收录于专栏:趣谈编程趣谈编程

集线器的统治

集线器(Hub)这个“笨蛋”统治我们的局域网已经有好几年了,我们都敢怒而不敢言。

集线器之所以能控制我们这几台电脑, 是因为从我们的网卡扯出的网线都会连接到它的身上,他把这些连接点叫做端口;

我们想和别人通讯,必须要通过这些集线器的端口发送数据,然后由集线器来转发。

比如某一天,我(PC1)想和PC4聊聊天,发送了一个数据包给集线器,照理说集线器应该把这个数据包转发给PC4吧!

不是这样的!这个笨蛋仅仅知道它的端口是否连上了设备,至于设备是谁,他根本不管!

那他怎么发送数据?

简单而粗暴!他把数据包向所有的端口都转发了一遍,这样PC2, PC3, PC4都会收到。

但是我们这些电脑约定好了, 只要不是发给你的数据包,简单就丢弃就行。

所以PC2, PC3就需要检查一下数据包中的目标MAC地址(这是唯一能标志我们电脑网卡的东西),看看是不是自己,不是的话就简单丢弃。

这是一种效率挺低的办法,集线器得意的把它成为“广播”。

后来我们几台电脑发现了集线器的秘密,实际上它根本不懂得网络协议这一套东西,它不懂得MAC地址,IP地址,数据帧,IP包,对它来说,就是0和1这样的二进制流。

当表示0或者1的bit到达一个端口时,集线器会重新生成这个bit,将其能量强度放大,并将该bit从其他端口传输出去。仅此而已,它是个典型的物理层设备。

我们这些支持TCP/IP的电脑居然被这么一个笨家伙给统治了,真是可悲。

广播的方式在网络中电脑很少的情况下勉强凑合,但是随着联网的电脑越来越多,不幸的事情就发生了。

想象一下,PC1向PC4发送数据,与此同时, PC2也要向PC3发送数据, 网络上就出现了广播的冲突。

为了解决这个问题,我们只好再次约定,如果出现了冲突,每个电脑都要等待一段随机的时间,然后再尝试发送。

我们几个决定推翻他的统治,想来想去,也只有罢工这一条路。

主人发现网络不通了,仔细检查了电脑,我们都表现得很正常,于是怀疑的矛头就被指向了笨蛋集线器, 主人把他换掉了。

一个新的设备在我们的欢呼声中入住局域网。

我是交换机

我听到了咔嗒咔嗒的声音,意识到我的那些端口应该被连接上了网线,网线的那头儿就是电脑。

我立刻感到了不同寻常的气氛,这些电脑对我的到来简直是兴奋得过了头。

根据我的经验,他们这是深受集线器统治之苦。

这不,一个数据包马上就从我的端口1 发了过来。

我一看源地址是MAC_PC1,立刻就在我的MAC地址表中记了一笔:端口1 <--> MAC_PC1

这样,下一次如果有电脑发送数据包给MAC_PC1的话,我就知道直接转发到端口1就行了,那里肯定连着PC1

但是目前这个数据包的目标地址MAC_PC4,我不知道是在那个端口,按照规定,只好广播到所有端口了!

我似乎感受到了有两个电脑在抱怨:“这不是发给我的,真烦人,丢弃!这新来的家伙也没什么本事嘛!还是广播!”

我隐忍不发,过了一会儿,PC4向端口4发了一个数据包:

我立刻更新我的MAC地址表,记录下端口4上连着PC4。

这个数据包是发给MAC_PC1的,之前我已经得知端口1上连接着PC1, 就可以直接转发过去了,不用再广播了!

不久以后,我就得知了每个端口都和谁相连, 我就可以精确地向特定目的地转发数据包了。

这一天,我偷偷地拆开了他们之间通信的几个数据包(这是严重违反规定的!我只能查看数据链路层的东西),发现他们几个有趣的通信:

PC1 : 我觉得新来的家伙不错啊,现在发数据快多了啊。

PC2 : 是啊是啊,关键是冲突很少了,这家伙似乎可以准确地把数据转发到目的地。

PC1: 他是怎么做到的?

PC2: 肯定是记录下了端口和设备的关系

PC1: 嗯,他也没问我们要啊。

PC2: 肯定是自己学习的,没想到还挺智能的嘛,哈哈。

PC3:我们几个整天在这个小局域网内转悠,我听说外边的互联网非常精彩啊,要不去看看?

PC4: 怎么才能去到互联网?

......

到底怎么才能连上互联网? 请移步《我是一个网卡

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 趣谈编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档